Fórum O Que há de errado no código??? #38897
23/09/2003
0
Bem, coloquei em numa aplicação teste uma tabela lingada ao Paradox 7(TbAntigo). Coloquei um query ligada a uma database do interbase.
A Intenção é pegar todas os dados da tabela em paradox e colocar na tabela interbase. O banco e as tabelas IB há estão criadas.
procedure TFrmPrincipal.Button2Click(Sender: TObject);
begin
Button2.Enabled := False;
TbAntigo.Open; //Tabela Antiga
TbAntigo.First;
QryVeiculos.Open;
While not TbAntigo.Eof do begin
QryVeiculos.Append;
QryVeiculos.FieldByName(´Codigo´).Value := TbAntigoCodigo.Value;
QryVeiculos.FieldByName(´Descricao´).Value := TbAntigoDescricao.Value;
QryVeiculos.Post;
QryVeiculos.ApplyUpdates;
Transacao.Commit;
TbAntigo.Next;
end;
//Fecha
TbAntigo.Close;
QryVeiculos.Close;
Button2.Enabled := True;
end;
A Intenção é pegar todas os dados da tabela em paradox e colocar na tabela interbase. O banco e as tabelas IB há estão criadas.
procedure TFrmPrincipal.Button2Click(Sender: TObject);
begin
Button2.Enabled := False;
TbAntigo.Open; //Tabela Antiga
TbAntigo.First;
QryVeiculos.Open;
While not TbAntigo.Eof do begin
QryVeiculos.Append;
QryVeiculos.FieldByName(´Codigo´).Value := TbAntigoCodigo.Value;
QryVeiculos.FieldByName(´Descricao´).Value := TbAntigoDescricao.Value;
QryVeiculos.Post;
QryVeiculos.ApplyUpdates;
Transacao.Commit;
TbAntigo.Next;
end;
//Fecha
TbAntigo.Close;
QryVeiculos.Close;
Button2.Enabled := True;
end;
Netosdr
Curtir tópico
+ 0
Responder
Posts
24/09/2003
Afarias
1 - não sei o q o ApplyUpdates está fazendo ali!! Vc está usando CachedUpdates?? -- ApplyUpdates só faz sentido com CachedUpdates -- o uso de CachedUpdates com IBX é desnecessário e desaconselhado ... além do mais, é extremamente inútil neste tipo de procedimento -- use apenas o POST!
2 - vc está usando a query como um DataSet (mantendo registros em buffer) -- quando vc dá um COMMIT a query será fechada e vc não erá como continuar a oparação! -- ou vc deixa para dar o commit apenas quando sai do loop WHILE -- ou vc faz melhor e usa um IBQuery (ou IBSQL) com um comando INSERT (o q é muito mais eficiente)!
3 - se não está usando CachedUpdates, e durante o ApplyUpdates vc não recebe nenhum erro --- então, está na hora de atualizar seu IBX
T+
2 - vc está usando a query como um DataSet (mantendo registros em buffer) -- quando vc dá um COMMIT a query será fechada e vc não erá como continuar a oparação! -- ou vc deixa para dar o commit apenas quando sai do loop WHILE -- ou vc faz melhor e usa um IBQuery (ou IBSQL) com um comando INSERT (o q é muito mais eficiente)!
3 - se não está usando CachedUpdates, e durante o ApplyUpdates vc não recebe nenhum erro --- então, está na hora de atualizar seu IBX
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)