GARANTIR DESCONTO

Fórum Fdmemtable #584954

16/08/2017

0

Boa tarde,
Estou salvando os campos em um arquivo .FSD, para limpar este arquivo estou utlizando o comando :
FdMenProduto.First; // deixo no primeiro item
while not FdMenProduto.Eof do
begin
try
FdMenProduto.Open;
FdMenProduto.Append;
FdMenProduto.BeginBatch;
FdMenProduto.Delete; // deleto o item
FdMenProduto.Next;
finally
FdMenProduto.EndBatch;
end;
end;
No caso este comando demora pra executar se tiver muitos itens, qual a melhor maneira de limpar o fdmenTable ?
William Suetake

William Suetake

Responder

Post mais votado

16/08/2017

Você não precisa da o comando APPEND, precisa?
Fica estranho, excluir um registro e antes aciono o comando para inserir.

O comando OPEN você executa uma única vez antes de iniciar o while
TRY-FINALLY também está errado, quando você o inicia ele não pode ficar iniciando a todo looping do comando, ou você o coloca dentro do while, porém gosto de utilizar de forma que controle em caso de erro, neste caso se alguma exception ocorrer ele finaliza direto, mas fica a seu critéro

try
         FdMenProduto.Close; //utilizo o fechar para garantir que todos os dados serão excluídos
         FdMenProduto.Open;
         FdMenProduto.First; // deixo no primeiro item
         while not FdMenProduto.Eof do
         begin 
                FdMenProduto.BeginBatch; 
                FdMenProduto.Delete; // deleto o item 
                FdMenProduto.Next; 
         end; 
finally 
         FdMenProduto.EndBatch; 
end;




Pode utilizar o emptytable
[code]
try
FdMenProduto.Close; //utilizo o fechar para garantir que todos os dados serão excluídos
//FdMenProduto.Open; ///Não lembro se é necessário teste com e sem o Open
FdMenProduto.EmptyTable; //ou o comando que apaga todos os dados
/*
* Para utilizar este comando a tabela em questão, não poderá estar aberta em outra parte da aplicação
*/
finally
end;

Segue o comando, analise e veja o que você entende, qualquer coisa manda pergunta.

Att
Luiz Marcelo

Luiz Vichiatto

Luiz Vichiatto
Responder

Gostei + 1

Mais Posts

17/08/2017

William Suetake

Você não precisa da o comando APPEND, precisa?
Fica estranho, excluir um registro e antes aciono o comando para inserir.

O comando OPEN você executa uma única vez antes de iniciar o while
TRY-FINALLY também está errado, quando você o inicia ele não pode ficar iniciando a todo looping do comando, ou você o coloca dentro do while, porém gosto de utilizar de forma que controle em caso de erro, neste caso se alguma exception ocorrer ele finaliza direto, mas fica a seu critéro

try
         FdMenProduto.Close; //utilizo o fechar para garantir que todos os dados serão excluídos
         FdMenProduto.Open;
         FdMenProduto.First; // deixo no primeiro item
         while not FdMenProduto.Eof do
         begin 
                FdMenProduto.BeginBatch; 
                FdMenProduto.Delete; // deleto o item 
                FdMenProduto.Next; 
         end; 
finally 
         FdMenProduto.EndBatch; 
end;




Pode utilizar o emptytable
[code]
try
FdMenProduto.Close; //utilizo o fechar para garantir que todos os dados serão excluídos
//FdMenProduto.Open; ///Não lembro se é necessário teste com e sem o Open
FdMenProduto.EmptyTable; //ou o comando que apaga todos os dados
/*
* Para utilizar este comando a tabela em questão, não poderá estar aberta em outra parte da aplicação
*/
finally
end;

Segue o comando, analise e veja o que você entende, qualquer coisa manda pergunta.

Att
Luiz Marcelo

try
FdMenProduto.Close;
// utilizo o fechar para garantir que todos os dados serão excluídos
FdMenProduto.Open;
FdMenProduto.EmptyDataSet; // ou o comando que apaga todos os dados
finally

##################################################################################

Qual a melhor maneira de recuperar os dados do fdmen ?
estou fazendo assim :
while not FdMenProduto.Eof do
begin
sCodigo := FdMenProdutoCodigo.AsString;
FdMenProduto.Next;
end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar