problemas com while - loop infinito
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;
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
Curtidas 0
Respostas
Facc
10/09/2008
Opa... blz?ClientesDB.Post;
ClientesDB.Next;
QryClientes.Next;
end;
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
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...
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
10/09/2008
tente assim:
Espero ter ajudado.
Att
Dalton
while Query.eof = false do ... ....
Espero ter ajudado.
Att
Dalton
GOSTEI 0
Arielpires
10/09/2008
blza gente!! deu certo! obrigado pela ajuda!!
GOSTEI 0
Álison Bissoli
10/09/2008
bom... vlw mesmo,
já tive esse mesmo problema e nunca
imaginaria que esta seria a solução
:D
já tive esse mesmo problema e nunca
imaginaria que esta seria a solução
:D
GOSTEI 0
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....
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