Ajuda com EOF
To com esse procedimento para importar
O problema é que só está gravando o último registro.
Que faço?
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
Curtidas 0
Respostas
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
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
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
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
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