AJUDAM ME - ERRO DE LOGICA

CHARLESTON10 02/04/2011 13:17:53
#370211
Olá pessoal,
Estou criando um relatório via Printer, estou usando um Picture Box para visualizar antes da impressão...
Estou tentando paginar o picutre; ja esta qse ok!

deem uma olhada:

PGAtual = ((20 * Pagina) - 20) + 1 [ô]1 a 20 / 21 a 40 / 31 a 50
PGFinal = (20 * Pagina)

MsgBox PGAtual [ô]21
MsgBox PGFinal [ô]40

Contador = 0
Picture1.Cls

With tbTemp
Do While Not tbTemp.EOF
Contador = Contador + 1
If Contador >= PGInicial And Contador <= PGFinal Then
Picture1.Print Tab(3); !codigo;
Picture1.Print Tab(15); !documento;
Picture1.Print Tab(30); !Historico;
Picture1.Print Tab(60); !Valor;
Picture1.Print Tab(75); !Situacao;
Picture1.Print Tab(93); !TIPO;
Picture1.Print Tab(110); !dt_Emissao;
Picture1.Print Tab(125); !dt_Vencimento; Tab(2)
End If
tbTemp.MoveNext
Loop
End With

tbTemp.Close


O codigo esta paginando perfeitamente, cada pagina contem 20 registros; isso esta ok!
A Primeira pagina mostra 20 registros mas quando eu mudo para a segunda pagina ele mostra registros a mais..

Esta assim: Tabela contem 47 registros.. Pagina 1 - vai do codigo 1 ao 20
Mas a pagina 2 vai do 1 ao 40 - seria para ir do 21 ao 40; A parte do codigo do 21 ao 40 esta ok!

Creio q o erro esta no > IF <



HIDDEN 02/04/2011 13:27:54
#370216
Você deve zerar o Contador.
HIDDEN 02/04/2011 13:30:32
#370217
Não da para zerar o Contador na lógica utilizada. Tente algo como isso:

               If Contador < PGFinal Then
Picture1.Print Tab(3); !codigo;
Picture1.Print Tab(15); !documento;
Picture1.Print Tab(30); !Historico;
Picture1.Print Tab(60); !Valor;
Picture1.Print Tab(75); !Situacao;
Picture1.Print Tab(93); !TIPO;
Picture1.Print Tab(110); !dt_Emissao;
Picture1.Print Tab(125); !dt_Vencimento; Tab(2)
Else
Contador = 0
End If
CHARLESTON10 02/04/2011 13:31:38
#370218
Acabei de testar, mas nao deu!

A lógica seria assim: o contador vai contando desde do primeiro registro da tabela
vai de 1 a o limite de registros..

Entao eu vou colocar na pagina 1 os 20 primeiros registros
pagina 2 do reg 21 ao 40

Entao ficaria
tabela inicio = 0
contador = contador +1
if contador>= 21 and contador<=40 then
adicionar reg ao relatorio
endif
move ao proximo reg

entao ficaria entre 21 e 40 para o rel; mas sei la, nao vai..
CHARLESTON10 02/04/2011 13:33:16
#370220
Se eu colocar um Contador < Total Reg
Ele vai imprimir do 1 ao total
nao entre intervalo

de 20 a 40
CHARLESTON10 02/04/2011 13:44:43
#370221
Encontrei o erro

A variavel estava com problema;

entao fiz assim:

fiz o calculo dentro da comparação, funcionou agora...

With tbTemp
Do While Not tbTemp.EOF
Contador = Contador + 1
If (Contador >= ((20 * Pagina) - 20) + 1 And Contador <= (20 * Pagina)) Then
Picture1.Print Tab(3); !codigo;
Picture1.Print Tab(15); !documento;
Picture1.Print Tab(30); !Historico;
Picture1.Print Tab(60); !Valor;
Picture1.Print Tab(75); !Situacao;
Picture1.Print Tab(93); !TIPO;
Picture1.Print Tab(110); !dt_Emissao;
Picture1.Print Tab(125); !dt_Vencimento; Tab(2)
End If
tbTemp.MoveNext
Loop
End With
Tópico encerrado , respostas não são mais permitidas