Ir para conteúdo
Entre para seguir isso  
dan_visualdm

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×

Informação importante

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