Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, boa noite!
Tenho uma função para deletar cadastro e a pasta de fotos desse cadastro, porém nem todos cadastro possuem fotos...
E quando isso acontece (do cadastro não ter pasta de fotos), se clicar no botão delete a função não funciona nem mesmo para excluir o cadastro.
O código atual é:
var
diretorio: String;
begin
// exclui o diretório indicado
diretorio := '\\server\listagem\images\' + DBid.caption;
if RemoveDir(diretorio) then
begin //exclui do BD o caminhos das fotos
with dm.q_fotos do
begin
Close;
sql.Clear;
sql.Add('delete from tbl_fotos where id_ligar like '''+ f_incluir_imoveis.db_id.Text +'%''');
ExecSQL;
end; end;Caso esse imóvel tenha a pasta (indicada ali no caminho) então: btdeltotal.click;
Caso esse imóvel não possua pasta, então: bddelete.click;
Como posso fazer isso? Obrigado,a braços.
bom dia amigo...
Mas como ficaria então a programação? :upset:
Ficaria algo como o postado a seguir.... só não lembro se o comando DirectoryExists funciona com endereço de rede não mapeado agora.
var
diretorio: String;
bExclusaoOk : Boolean; bExclusaoOk := True;
//Diretório a ser verificado para exclusão
diretorio := '\\server\listagem\images\' + DBid.caption;
//Testa se existe o diretório
if DirectoryExists(diretorio) then
bExclusaoOk := RemoveDir(diretorio); //Se não conseguir excluir o diretório, retornar FALSO
//Como a auxiliar foi inicializada como TRUE, só não irá executar o bloco abaixo caso não consiga
//excluir o diretório da foto
if bExclusaoOk then
begin
//exclui do BD o caminhos das fotos
with dm.q_fotos do
begin
Close;
sql.Clear;
sql.Add('delete from tbl_fotos where id_ligar like '''+ f_incluir_imoveis.db_id.Text +'%''');
try
ExecSQL;
except
on E:Exception do
ShowMessage('Ocorreram erros durante a execução: ' + E.Message);
end;
end;
end;
end;
Seu problema está neste ponto...
if RemoveDir(diretorio) then
Se não existir um diretório para remover, você não entra no bloco que executa o delete, e o delete deveria ser executado de forma independente do diretório existir correto? Um tratamento que poderia usar é só chamar o RemoveDir se existir um diretório a ser excluído e executar o delete da mesma forma. Para garantir que os dois sejam excluídos juntos, poderia criar uma flag por exemplo para só permitir o delete se excluiu o diretório, inicializar ela como true e, caso não consiga excluir o diretório, torná-la falsa e só permitir a exclusão com ela true por exemplo.