Fórum Ajuda com EOF #355316
13/03/2008
0
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
Curtir tópico
+ 0Posts
13/03/2008
Diegus
Tenta dar applyupdates(0) depois que inserir tudo...
Gostei + 0
13/03/2008
Diegus
Ahh.. e não esquece antes do while colocar
ClientDataSet_Memoria.First;
Gostei + 0
13/03/2008
Jpauloss
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
13/03/2008
Jpauloss
Ahh.. e não esquece antes do while colocar
ClientDataSet_Memoria.First;[/quote:6b64fccec6]
Porque tenho que colocar antes do While?
Gostei + 0
13/03/2008
Jpauloss
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
Clique aqui para fazer login e interagir na Comunidade :)