Consulta com laço no firebird

Firebird

26/06/2003

Quando usava o paradox eu importava os dados abaixo

dm.importa.First;
While Not dm.Importa.Eof DO
IF (dm.IBClientesCGC.Value)=(dm.IBClientesCGC.Value) then
begin
dm.Importa.Next;
Continue;
end
else
begin
dm.ibClientes.Append;
dm.ibClientes[´Cgc´] := dm.Importa[´CGCD_DSK´];
dm.ibClientes.Post;
dm.Importa.Next;
END;
end;

Agora que uso o Firebird não sei como fazer essa importação de dados usando o filtro que usava no paradox, preciso de ajuda neste caso!


Virus69

Virus69

Curtidas 0

Respostas

Afarias

Afarias

26/06/2003

é impressão ou esse código não faz nada??

IF (dm.IBClientesCGC.Value)=(dm.IBClientesCGC.Value) then


não é sempre VERDADEIRO??

Não entendi sua questão :S

T+


GOSTEI 0
Virus69

Virus69

26/06/2003

foi mal galera o meu codigo está assim e o firebird fica travando


Var i: Integer;
BEGIN
ProgressBar1.Visible:=true;
i := 0;

dm.ibmanifesto.DisableControls;

ProgressBar1.Max := dm.ibManifesto.RecordCount;

dm.ibManifesto.first;

While not dm.ibmanifesto.eof do
if dm.IBClientes.Locate(´CGC´,dm.IBManifestoCGC.AsString,[] ) = TRUE then
Begin
dm.ibManifesto.edit;
dm.ibManifestoPromotor.Value := dm.IBClientesPromotor.Value;
dm.ibManifestoNome.value := Dm.IBClientesNome.value ;

i := i + 1;
ProgressBar1.Position := i;

dm.ibManifesto.post;
dm.ibManifesto.next;
end
Else
Begin
dm.ibManifesto.next;
End;

dm.ibmanifesto.EnableControls;

Dm.ibManifesto.Refresh;
ProgressBar1.Position := 0;


GOSTEI 0
Afarias

Afarias

26/06/2003

>> foi mal galera o meu codigo está assim e o firebird fica travando

huumm... este não é um código ´otimizado´ para Interbase ou qualquer outro ´banco SQL´. Vc tem q receber (no cliente) todos os registros de ambas tabelas envolvidas ... e isso não é bom! más... vá lá... vê se isso funciona:


var
I: Integer;
BEGIN
ProgressBar1.Visible := True;
i := 0;
with dm, ibManifesto do
try
DisableControls;
ProgressBar1.Max := RecordCount;
First;
while not Eof do
begin
if IBClientes.Locate(´CGC´, IBManifestoCGC.AsString, []) then
begin
Edit;
ibManifestoPromotor.Value := IBClientesPromotor.Value;
ibManifestoNome.Value := IBClientesNome.value;
try
Post;
except
// tratamento de erros
end;
end;
Inc(i);
ProgressBar1.Position := i;
Application.ProcessMessages;
Next;
end;
finally
EnableControls;
end;
END;

ProgressBar1.Position := 0;

-- não esquece do controle da transação!

T+


GOSTEI 0
POSTAR