Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarVinOlivieraS

Deletar arquivos e registros no BD

Recommended Posts

bom dia, tenho uma dúvida relacionada a deletar arquivos e registros no BD access em um sistema de galeria de fotos, nesse sistema notei que ao apagar uma galeria de fotos que está na tabela "galerias" os registros das fotos desta galeria que ficam em uma outra tabela deste mesmo BD, "fotos" não são apagados, gerando assim um acúmulo de informações desnecessárias, gostaria de saber se tem como desenvolver um form que mostre somente os registros da tabela "fotos" que o campo ID_GALERIA não tenha um equivalente na tabela "galerias", ou seja somente as fotos orfãns para que eu possa deletar esses registros e também as fotos que estão ocupando espaço desnecessário.

 

aguardo respostas....

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim

 

selecione usando NOT IN

 

SELECT * FROM TABELA1 WHERE CAMPO1 NOT IN (SELECT CAMPO2 FROM TABELA2)

 

E os campos seriam justamente os que se relacionam

Compartilhar este post


Link para o post
Compartilhar em outros sites

MarVinOliveiraS

 

use um:

 

select * from fotos(tabela que estão as fotos/registros lixo) where not exists(select * from fotos(onde estão as fotos boas) where "campos ID das fotos nas duas tabelas")

 

Quando localizar todoas as fotos troque o primeiro select por um Delete from...

 

Se estiver usando o SQL SERVER utilize a clausula Begin Tran na hora de deletar, apos executar o comando verifique se esta ok se estiver basta dar o comando Commit se estiver errado o rolback que volta todos os registros para tabela.

 

exemplo.l

 

begin tran

Delete from fotos

 

-- Se der o commit os registros são deletados

commit

 

-- Se der o Rolback os registros não são deletados

rolback

 

Lembrando que a tabela fica inacessivel para outro programa ou sessão de banco enquanto não for fechada a transação que ha esta utilizando.

 

Espero ter ajudado, qualquer coisa estamos ai.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

MarVinOlivieraS,

 

É mesma coisa, para trazer isto para o ASP você tem que fazer o select na base de dados.!@

 

Depois é só fazer um Loop traz para tela com um combo box para cada registro e seleciona o que quer deletar.

 

Qualquer duvida posta ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é recomendado o uso do NOT EXISTS, no lugar do IN, por questões de perfromance

Compartilhar este post


Link para o post
Compartilhar em outros sites

A expressão abaixo retorna quais a linhas da TABELA1 não cadastradas na TABELA2 utilizando o NOT EXISTS

SELECT TABELA1.SERIAL_NUMBER
FROM #TABELA1 TABELA1
WHERE NOT EXISTS 
(SELECT TABELA2.SERIAL_NUMBER 
FROM #TABELA2 TABELA2 
WHERE TABELA2.SERIAL_NUMBER = TRÁFEGO.SERIAL_NUMBER)

 

A expressão abaixo retorna quais a linhas da EMPRESA não cadastradas na TABELA_SOCIOS utilizando o NOT EXISTS

 

SELECT * FROM #EMPRESAS E 
WHERE NOT EXISTS 
(SELECT S.CD_EMPRESA 
FROM #TABELA_SOCIOS S 
WHERE E.CD_EMPRESA = S.CD_EMPRESA) AND E.SITUACAO = 'x'

 

EXISTS e NOT EXISTS é mais eficaz que o IN

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa amigo pela ignorancia

mais é que sou leigo,

tenho uma pasta chamada galeriadefotos

 

uma subpasta chamada config, onde vai ficar localizada a página listarfotos.asp

 

e outra subpasta chamada dados onde fica o database.mdb.

 

eu quero exibir os registros da tabela "fotos" que o campo "data" não está presente na tabela "galeria" em um campo com o mesmo nome "data". esse exemplo que você postou parece estar incompleto, falta a conexão com bd.

tem como você colocar já com essa parte do código também?

muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a mesma lógica das instruções SQL acima, a conexaun você deve usar a sua mesma, caso nao tenha siga esta, apenas altere o caminho do seu banco.no caso o arquivo mdb esta dentro de wwwroot/db/database.mdb

 

constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/database.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro q apareceu:

 

Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A03FD)

'Case' esperado

/passaros2/galeriadefotos/config/listarfotos2.asp, line 4, column 7

SELECT FOTOS.DATA

------^

 

o código que coloquei foi assim?

 

<% constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("../dados/database.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
SELECT FOTOS.DATA
FROM #FOTOS FOTOS
WHERE NOT EXISTS 
(SELECT GALERIA.DATA 
FROM #GALERIA GALERIA 
WHERE GALERIA.DATA = DATA.DATA)
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

naun, assim, dá erro mesmo, pois a instrucao SQL naun resta sendo executada, o ASP entende o SELECT,

como um SELECT CASE...

deve fazer assim:

 

constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/quaddra.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
 'crio o rs
  set rs=Server.CreateObject("ADODB.Recordset")
  'crio o SQL
  SQL="entre aspas sua string SQL"
' aqui você executa o SQL,atraves do metodo open do objeto recordset
  rs.open SQL,conexao,1,3
....

Mas sugiro que estude,analise um pouco mais o código, pois sendo muito leigo, terá varias dificuldades...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.