Fórum Erro com sequencia de regitros #322138
25/05/2006
0
Fiz um programa que imprime determinados relatorios. Fiz um preview personalizado. O usuario pode escolher quatos registros ele quer exibir por pagina. Se ele escolher 4, eu crio 4 qrlabels e faço um laço e conto quantos qrlabels tem e vou adicionando o conteudo da query nele e dando next.
no OnPreview do quickrep1 eu chamo o formulario com o preview personalizado.
no OnNeedData do QuickRep1 eu faço:
{ Gera mais uma linha enquanto não for final de arquivo }
MoreData := not (IBQ_Numeracao.Eof);
no OnBeforePrint do QuickRep1 eu abro a query e a posiciono no inicio do recordset.
IBQ_Numeracao.Open;
IBQ_Numeracao.First;
e no OnBeforePrint da Banda detail eu faço
for i := 1 to Total do
begin
Label := TQRAngledLabel(FindComponent(´Numeral´ + IntToStr(contador)));
if not (Label = nil) then
begin
with Label do
begin
Caption := ´ ´;
if not (IBQ_Numeracao.Eof) then
Caption := IBQ_Numeracao.FieldByName(´NUMERAL´).AsString;
end;
end;
IBQ _Numeracao.Next;
end;
O intuito disso eh, por ex: se escolher 4 registros por vez, ele imprimirá na primeira pagina:
1,2,3,4
5,6,7,8
9,10,11,12, ... etc
So que o IBQ_Numeracao está perdendo a sequencia.
por ex: tenho os registros de 800 a 1300 em ordem crescente na tabela, ele escolheu imprimir de 4 em 4 aí começa
800, 801, 802, 803,
804, 805, 806, 807,
...
832, 833, 958, 959 <-- Aqui ele perdeu a sequencia.
960, 961, 962, 963
...
996, 997, 834, 835 <-- Aqui ele volta de onde perdeu.
O mais estranho é que o total de registros sempre sai certo, porem se for uma quantidade grande de regitros dah esse erro, se for até uns 200 dah dah certo, + se passar disso dah esse erro.
Alguem tem alguma dica pra me dar ... Obrigado.
no OnPreview do quickrep1 eu chamo o formulario com o preview personalizado.
no OnNeedData do QuickRep1 eu faço:
{ Gera mais uma linha enquanto não for final de arquivo }
MoreData := not (IBQ_Numeracao.Eof);
no OnBeforePrint do QuickRep1 eu abro a query e a posiciono no inicio do recordset.
IBQ_Numeracao.Open;
IBQ_Numeracao.First;
e no OnBeforePrint da Banda detail eu faço
for i := 1 to Total do
begin
Label := TQRAngledLabel(FindComponent(´Numeral´ + IntToStr(contador)));
if not (Label = nil) then
begin
with Label do
begin
Caption := ´ ´;
if not (IBQ_Numeracao.Eof) then
Caption := IBQ_Numeracao.FieldByName(´NUMERAL´).AsString;
end;
end;
IBQ _Numeracao.Next;
end;
O intuito disso eh, por ex: se escolher 4 registros por vez, ele imprimirá na primeira pagina:
1,2,3,4
5,6,7,8
9,10,11,12, ... etc
So que o IBQ_Numeracao está perdendo a sequencia.
por ex: tenho os registros de 800 a 1300 em ordem crescente na tabela, ele escolheu imprimir de 4 em 4 aí começa
800, 801, 802, 803,
804, 805, 806, 807,
...
832, 833, 958, 959 <-- Aqui ele perdeu a sequencia.
960, 961, 962, 963
...
996, 997, 834, 835 <-- Aqui ele volta de onde perdeu.
O mais estranho é que o total de registros sempre sai certo, porem se for uma quantidade grande de regitros dah esse erro, se for até uns 200 dah dah certo, + se passar disso dah esse erro.
Alguem tem alguma dica pra me dar ... Obrigado.
M@gnun
Curtir tópico
+ 0
Responder
Posts
25/05/2006
Motta
Posso estar viajando mas creio que um ORDER BY na query mata a charada.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)