Fdmemtable

Delphi

16/08/2017

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

Curtidas 0

Melhor post

Luiz Vichiatto

Luiz Vichiatto

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
GOSTEI 1

Mais Respostas

William Suetake

William Suetake

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

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;
GOSTEI 0
POSTAR