Ir para conteúdo

Arquivado

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

Marostegan

Problemas com Função

Recommended Posts

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;

Preciso que aconteça assim ao clicar nesse botão acima:

 

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;
begin
  //Flag auxiliar para verificar se conseguiu remover o diretório
  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;

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.