problemas com while - loop infinito

Delphi

10/09/2008

Olá Pessoal! seguinte, tenho um banco com 5 clientes, e estou usando uma query que pega esses clientes do banco. o problema é que mesmo quando termina de pegar os clientes, não está saindo do while... ele fica infinitamente dentro do while!! segue o código, se alguem puder me ajudar agradeço muito!!

procedure TDmDados.ExportaCLientes(var Error : Integer);
begin
//abrir a query
QryClientes.Open;

try
ClientesDB.Open;
except
Error := 1;
TabdConduit1.AddLogEntry(´erro ao abrir banco de dados de clientes´);
Exit;
end;
ClientesDB.First;
QryClientes.First;

While not QryClientes.EOF do
begin
ClientesDB.Append;
ClientesDB.FieldByName(´Cli_Codigo´).AsInteger := QryClientesT004_NR_CODIGO.AsInteger;
ClientesDB.FieldByName(´Cli_Nome´).AsString := QryClientesT004_CA_NOME.AsString;
if QryClientesT004_CA_PESSOA.AsString = ´F´ then
ClientesDB.FieldByName(´Cli_PfPj´).AsString := ´PF´;
ClientesDB.FieldByName(´Cli_Endereco´).AsString := ´Endereço´;
ClientesDB.FieldByName(´Cli_Fone´).AsString := ´Telefone´;
ClientesDB.FieldByName(´Cli_Cidade´).AsString := ´Cidade´;
ClientesDB.Post;
ClientesDB.Next;
QryClientes.Next;
end;
ClientesDB.Close;
QryClientes.Close;
end;


Arielpires

Arielpires

Curtidas 0

Respostas

Facc

Facc

10/09/2008

Opa... blz?

ClientesDB.Post;
ClientesDB.Next;
QryClientes.Next;
end;

Experimente tirar o [b]ClientesDB.Next;[/b] pois é onde vc tá jogando os dados. não há necessidade de dar next.



GOSTEI 0
Arielpires

Arielpires

10/09/2008

tirei e deu na mesma... =/
o problema é que ele ignora o QryClientes.EOF, como se ainda tivessem dados, mas nao tem... é como se não chegasse no fim da consulta...


GOSTEI 0
Dbergkamps10

Dbergkamps10

10/09/2008

tente assim:
while Query.eof = false do
...
....

Espero ter ajudado.

Att
Dalton


GOSTEI 0
Arielpires

Arielpires

10/09/2008

blza gente!! deu certo! obrigado pela ajuda!!


GOSTEI 0
Álison Bissoli

Álison Bissoli

10/09/2008

bom... vlw mesmo,
já tive esse mesmo problema e nunca
imaginaria que esta seria a solução

:D


GOSTEI 0
Wdrocha

Wdrocha

10/09/2008

As vezes acontecem algumas coisas q nem imaginos o pq...

Eu sempre uso While Not ( Query.Eof) do....e sempre deu certo....


eu estava com um problema parecido na aplicação em q tow trabalhando...

mas não tem nada a ver com query....


eu criei uma função para percorrer os componentes do form....comparando se o handle dos botões era igual o handle do último lugar que cliquei.....


até aew blz....


mas qdo eu botava um label no form....

dava access violation....

mesmo eu fazendo assim...


TButton(form.components[I]).Handle....


estranho não??? Acho q é bug da IDE, talvez....


Eu tive q fazer uma espécie de gambi para poder funcionar....


GOSTEI 0
POSTAR