Fórum While não esta pegando todos os registros ! #263709

29/12/2004

0

Caro programadores,

Estou fazendo uma rotina para baixar uns documentos onde são mostradas no grid vias Query (bde, paradox) . O cliente vai clicando via checkbox só que por algum motivo ele não esta pegando todos os arquivos marcados.

Veja como estou fazendo:

frmbaixa.qryduplicata.First;
while not frmbaixa.qryduplicata.Eof do
begin
if frmbaixa.qryduplicatabaixa.Value = true then
begin
frmbaixa.qryduplicata.Edit;
frmbaixa.qryduplicataDataliq.Value := date;
frmbaixa.qryduplicataValorpag.Value := frmbaixa.qryduplicataValordup.Value;
frmbaixa.qryduplicataLiq.Value := true;
frmbaixa.qryduplicata.Post;
inc(contador);
end;
frmbaixa.qryduplicata.Next;
end;

Se alguém puder me ajudar agradeço


Hugo Fabrício


Hugofab

Hugofab

Responder

Posts

29/12/2004

Dopi

if frmbaixa.qryduplicatabaixa.Value = true then


o campo acima tb faz parte da Query certo ? Quando vc marca / desmarca o campo seria necessário estar em modo de ediçao e efetuar um Post... isso está ocorrendo ?


Responder

Gostei + 0

29/12/2004

Araujojunior

if frmbaixa.qryduplicatabaixa.Value = true then

Hugo, quando você criou esta condição, ele trabalhar com todos os registros que o campo baixa seja verdadeiro, se o registro estiver false ou em branco ele nao vai entrar no laço. :wink:


Responder

Gostei + 0

29/12/2004

Hugofab

if frmbaixa.qryduplicatabaixa.Value = true then

Sim este campo faz parte da query, e estou dando um post na tabela. O estranho é que tenho um button onde uso para totalizar os registros marcados e na totalização ele faz correto. Somente na hora que vou baixar e que ele não pega todos os registros marcados.

A condição para mostrar os registros na query e ele estar em aberto. Quando baixo ele jogando true no campo liquida, executando o filtro na hora, pois marquei requestlive para true, se deixar false não aceita editar a query

Veja a query:

Select * from duplicata WHERE ((Liq IS NULL) OR (Liq = FALSE))




Tenho uma rotina desta parecida só que com Clientdataset e firebird funciona.


Responder

Gostei + 0

29/12/2004

Dopi

Experimente mudar:

if frmbaixa.qryduplicatabaixa.Value = true then

para

if frmbaixa.qryduplicatabaixa.AsBoolean = true then


Responder

Gostei + 0

29/12/2004

Euclides

[quote=´Hugofab´]if frmbaixa.qryduplicatabaixa.Value = true then

Sim este campo faz parte da query, e estou dando um post na tabela. O estranho é que tenho um button onde uso para totalizar os registros marcados e na totalização ele faz correto. Somente na hora que vou baixar e que ele não pega todos os registros marcados.

A condição para mostrar os registros na query e ele estar em aberto. Quando baixo ele jogando true no campo liquida, executando o filtro na hora, pois marquei requestlive para true, se deixar false não aceita editar a query

Veja a query:

Select * from duplicata WHERE ((Liq IS NULL) OR (Liq = FALSE))




Tenho uma rotina desta parecida só que com Clientdataset e firebird funciona.




Opa Hugo tudo bom ????

Me desculpe se não irei te ajudar porém em uma aplicação que fiz tive o mesmo problema porém foi com a rotina de filtro pois quando um registro era atualizado ele passava a não obedecer mais o filtro assim ele já caia para o próximo registro automaticamente e eu fazia next novamente assim ele sempre efetuava a metade dos registros que tinha ........ num sei se te ajudei muito mas caso não te ajudei uma pergunta : ele esta aceitando metade dos registro depois se voce rodar de novo ele pega metade da metade ????

Abraços


Responder

Gostei + 0

29/12/2004

Hugofab

Euclides,

O problema é este mesmo sempre pega a metade dos registros, não tinha prestando atenção, mas fiz algumas verificações e foi isto que aconteceu.

Como você resolveu?

Hugo Fabrício


Responder

Gostei + 0

29/12/2004

Euclides

[quote=´Hugofab´]Euclides,

O problema é este mesmo sempre pega a metade dos registros, não tinha prestando atenção, mas fiz algumas verificações e foi isto que aconteceu.

Como você resolveu?

Hugo Fabrício



Olá Hugo,

Então realmente voce esta com o mesmo problemaque eu estava ....... bom para sanar seu problema pode haver vários metodos porém acho que o mais simples é realmente alterar seu código para :


frmbaixa.qryduplicata.First;
while not frmbaixa.qryduplicata.Eof do
begin
if frmbaixa.qryduplicatabaixa.Value = true then
begin
frmbaixa.qryduplicata.Edit;
frmbaixa.qryduplicataDataliq.Value := date;
frmbaixa.qryduplicataValorpag.Value := frmbaixa.qryduplicataValordup.Value;
frmbaixa.qryduplicataLiq.Value := true;
frmbaixa.qryduplicata.Post;
inc(contador);
end
else
frmbaixa.qryduplicata.Next;
end;


Apenas colocando um ELSE ou seja quando voce tiver que atualizar, o próprio post já estará fazendo o next pois o resultado não obedecerá mais a query e assim cairá para o seguinte registro e quando não for atualizar você simplesmente pula para o próximo registro.

Espero ter lhe ajudado .......

Altere e poste pra gente como foi .....

abraços

Euclides


Responder

Gostei + 0

29/12/2004

Hugofab

Euclides,

Foi isto mesmo que fiz , só mando para o proximo registro quando não alterar, resolveu.

Simples, se tive atentando a isto antes...

Muito obrigado

Hugo Fabrício

hugofab@hotmail.com :D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar