Ajuda com EOF

Delphi

13/03/2008

To com esse procedimento para importar
procedure TF_IMPORTAR_EXPORTAR.btnGravarBancoClick(Sender: TObject);
var
  a, b, c : string;
  d : Double;
begin


  if ( Application.MessageBox( ´Irá substituir toda tabela de Materiais!´ + #13 +
  ´Deseja realmente fazer isso?´, ´Atenção´, MB_IconInformation + MB_YESNO ) = IDYES ) then

 //Deletar dados da tabela MATERIAIS
  transacao.TransactionID:=1;
  transacao.IsolationLevel:= xilREPEATABLEREAD;
  dm.Conexao.StartTransaction(transacao);
  dm.sdsMaterial.Close;
  dm.sdsMaterial.CommandText:=´delete from material´;
  dm.sdsMaterial.ExecSQL;
  dm.Conexao.Commit(transacao);
 // Fim


 // Inicio da inserção de dados na tabela MATERIAIS
 with ClientDataSet_Memoria do
  begin
   while not Eof do
   begin

   Open;
   Edit;
   
   a := ClientDataSet_MemoriaCOD_ORDENADO.AsString;
   b := ClientDataSet_MemoriaDESCRICAO.AsString;
   c := ClientDataSet_MemoriaUN.AsString;
   d := ClientDataSet_MemoriaPRECO_UNITARIO.AsFloat;

   dm.cdsMaterial.Open;
   dm.cdsMaterial.Edit;

   dm.cdsMaterialCOD_ORDENADO.AsString := a;
   dm.cdsMaterialDESCRICAO.AsString := b;
   dm.cdsMaterialUN.AsString := c;
   dm.cdsMaterialPRECO_UNITARIO.AsString := FloatToStr(d);

   Post;
   ApplyUpdates(0);

   ClientDataSet_Memoria.Next;

   //ShowMessage(´Substituído com sucesso!´);

   //btnFecharClick(Sender);
   end;
  end;
 end;

O problema é que só está gravando o último registro.
Que faço?


Jpauloss

Jpauloss

Curtidas 0

Respostas

Diegus

Diegus

13/03/2008

O problema é que só está gravando o último registro. Que faço?


Tenta dar applyupdates(0) depois que inserir tudo...


GOSTEI 0
Diegus

Diegus

13/03/2008

Tenta dar applyupdates(0) depois que inserir tudo...


Ahh.. e não esquece antes do while colocar

ClientDataSet_Memoria.First;


GOSTEI 0
Jpauloss

Jpauloss

13/03/2008

Resolvido
procedure TF_IMPORTAR_EXPORTAR.btnGravarBancoClick(Sender: TObject);
var
  a, b, c : string;
  d : Double;
begin


  if ( Application.MessageBox( ´Irá substituir toda tabela de Materiais!´ + #13 +
  ´Deseja realmente fazer isso?´, ´Atenção´, MB_IconInformation + MB_YESNO ) = IDYES ) then

 //Deletar dados da tabela MATERIAIS
  transacao.TransactionID:=1;
  transacao.IsolationLevel:= xilREPEATABLEREAD;
  dm.Conexao.StartTransaction(transacao);
  dm.sdsMaterial.Close;
  dm.sdsMaterial.CommandText:=´delete from material´;
  dm.sdsMaterial.ExecSQL;
  dm.Conexao.Commit(transacao);
 // Fim


 // Inicio da inserção de dados na tabela MATERIAIS
 with ClientDataSet_Memoria do
  begin
   while not Eof do
   begin

   Open;
   Edit;
   
   a := ClientDataSet_MemoriaCOD_ORDENADO.AsString;
   b := ClientDataSet_MemoriaDESCRICAO.AsString;
   c := ClientDataSet_MemoriaUN.AsString;
   d := ClientDataSet_MemoriaPRECO_UNITARIO.AsFloat;

   dm.cdsMaterial.Open;
   dm.cdsMaterial.Insert;

   dm.cdsMaterialCOD_ORDENADO.AsString := a;
   dm.cdsMaterialDESCRICAO.AsString := b;
   dm.cdsMaterialUN.AsString := c;
   dm.cdsMaterialPRECO_UNITARIO.AsString := FloatToStr(d);

   dm.cdsmaterial.Post;
   dm.cdsMaterial.ApplyUpdates(0);

   ClientDataSet_Memoria.Next;

   dm.sdsMaterial.close;
   dm.sdsMaterial.CommandText:=´select * from material´;
   dm.sdsMaterial.Open;

   dm.cdsMaterial.Close;
   dm.cdsMaterial.Open;
   dm.cdsMaterial.Refresh;

   ShowMessage(´Substituído com sucesso!´);

   btnFecharClick(Sender);
   end;
  end;
 end;



GOSTEI 0
Jpauloss

Jpauloss

13/03/2008

[quote:6b64fccec6=´Diegus´] Tenta dar applyupdates(0) depois que inserir tudo...


Ahh.. e não esquece antes do while colocar

ClientDataSet_Memoria.First;[/quote:6b64fccec6]
Porque tenho que colocar antes do While?


GOSTEI 0
Jpauloss

Jpauloss

13/03/2008

[quote:0a0b2d7800=´Diegus´][quote:0a0b2d7800=´Diegus´] Tenta dar applyupdates(0) depois que inserir tudo...


Ahh.. e não esquece antes do while colocar

ClientDataSet_Memoria.First;[/quote:0a0b2d7800]
Porque tenho que colocar antes do While?[/quote:0a0b2d7800]
Vai ficar assim
 with ClientDataSet_Memoria do
  begin
  ClientDataSet_Memoria.First;
   while not Eof do
   begin



GOSTEI 0
POSTAR