SALTO DE PAGINA EM NOTA FISCAL

LCSD 08/12/2006 16:06:41
#188881
Pessoal, estou com uma dúvida com relação a melhor forma de dar o salto de página automático em nota fiscal com mais de 15 itens.

No meu caso imaginem um lançamento com 53 itnes, deveria ser impresso
o cabeçalho da nota na primeira página e mais 15 itens.

Na segunda mais 15 itens.
Na terceira mais 15 itens.
Na quarta finalmente 8 itens e o rodapé da nota..

estava pensando em algo assim :

If rsPedVenda.RecordCount > 0 < 15 Then
for
print #1,
.
.
next
Elseif rsPedVenda.RecordCount > 15 < 30 Then
for
print #1,
.
.
next
Elseif rsPedVenda.RecordCount > 30 < 45 Then
for
print #1,
.
.
next

Elseif rsPedVenda.RecordCount > 45 < 60 Then
for
print #1,
.
.
next



mas já imaginou se tiver 100 itens.

Gostaria de uma ajuda de vcs.....

Agradeço desde já....



USUARIO.EXCLUIDOS 08/12/2006 16:15:58
#188883
Resposta escolhida
Tente assim:

Dim i As Integer

'Imprime cabeçalho
For i = 1 To rsPedVenda.RecordCount
If (i Mod 15) = 0 Then
'Vai para uma nova página
End If
'Imprime item
rsPedVenda.MoveNext
Next i
'Imprime rodapé


Qualquer dúvida poste...flw
LCSD 08/12/2006 16:41:10
#188889
Matioli....obrigado por enquanto....deixa eu te falar

Para imprimir os itens estou fazendo Assim :

Do While Not rsPedVenda.EOF
Print #1, Chr(15); Tab(12); Right(rsPedVenda!itemcod, 6);
Print #1, Chr(15); Tab(19); LeftB(rsPedVenda!itemNome, 26);
Print #1, Chr(15); Tab(72); "000";
Print #1, Chr(15); Tab(78); rsPedVenda!unidade;
Print #1, Chr(15); Tab(84); rsPedVenda!qtd;
Print #1, Chr(15); Tab(91); CCur(rsPedVenda!preco);
Print #1, Chr(15); Tab(101); CCur(rsPedVenda!total);
Print #1, Chr(15); Tab(113); Label50.Caption & "%"
rsPedVenda.MoveNext
Loop


em meu teste com 62 itens...ele ta imprimindo tudo direto

o código ficou assim.....

  
Private Sub cmdImprimir_Click()
Set rsPedVenda = New ADODB.Recordset
If rsPedVenda.State = 0 Then
rsPedVenda.Open "PedVenda", bd, adOpenDynamic, adLockPessimistic
rsPedVenda.Filter = "transid='" & Text2.Text & "'"
End If
'Arquivo_em_Branco
Open "\\lucas\EpsonLX" For Output As #1 'PCServer & "\Nota_" & RemoverTexto(rsNF.Fields("NOTA"), rtNumericoSemSimbolos, "23", "13", True) & ".pxt" For Output As #1
rsPedVenda.MoveFirst
'IMPRIMINDO O CABEÇALHO

Dim i As Integer

Print #1,
Print #1, Tab(100); rsNF.Fields("NOTA"); Tab(123); rsNF.Fields("NOTA");
Print #1,
If Text16.Text = "1" Then
Print #1, Tab(74); "X";
ElseIf Text16.Text <> 1 Then
Print #1, Tab(84); "X"
End If
Print #1,
Print #1,
Print #1,
Print #1,
Print #1, Tab(12); Text18.Text; Tab(48); Text34.Text;
Print #1,
Print #1,
Print #1, Tab(12); Text5.Text; Tab(74); Text11.Text; Tab(101); Text3.Text;
Print #1,
'Print #1,
Print #1, Tab(12); Text13.Text; Tab(64); Text12.Text; Tab(83); Text8.Text; Tab(101); Text3.Text
Print #1, 'MUNICIPIO / FONE / UF / IE / HORA
Print #1, Tab(12); Text9.Text; Tab(55); Text41.Text; Tab(69); Text15.Text; Tab(74); Text14.Text; Tab(101); Text7.Text

For i = 1 To rsPedVenda.RecordCount
If (i Mod 15) = 0 Then
For Y = 0 To 37
Print #1,
Next Y
End If
'IMPRIMINDO ITENS
Print #1,
Do While Not rsPedVenda.EOF
Print #1, Chr(15); Tab(12); Right(rsPedVenda!itemcod, 6);
Print #1, Chr(15); Tab(19); LeftB(rsPedVenda!itemnome, 26);
Print #1, Chr(15); Tab(72); "000";
Print #1, Chr(15); Tab(78); rsPedVenda!unidade;
Print #1, Chr(15); Tab(84); rsPedVenda!qtde;
Print #1, Chr(15); Tab(91); CCur(rsPedVenda!preco);
Print #1, Chr(15); Tab(101); CCur(rsPedVenda!total);
Print #1, Chr(15); Tab(113); Label50.Caption & "%"
rsPedVenda.MoveNext
Loop
Next i

'Imprime rodapé
Print #1, Tab(12); Text35.Text; Tab(34); txtICMS.Text; Tab(101); txtTotalProduto.Text
Print #1, Tab(12); Text38.Text; Tab(34); Text39.Text; Tab(56); Text40.Text; Tab(101); txtTotalGeral.Text
Print #1,
Print #1, Tab(12); Text30.Text & "-" & Text32.Text; Tab(66); Text26.Text; Tab(70); Text19.Text; Tab(80); Text23.Text; Tab(88); Text33.Text
Print #1,
Print #1, Tab(12); Text44.Text; Tab(56); Text45.Text; Tab(83); Text42.Text; Tab(89); Text43.Text
Print #1, Tab(12); Text20.Text; Tab(30); Text21.Text; Tab(48); Text22.Text; Tab(65); Text24.Text; Tab(80); Text25.Text; Tab(101); Text27.Text
Print #1,
Print #1,
Print #1, Tab(12); Text6.Text; Tab(50); Text1.Text

'Deixa a Pagina no Serrilhado
Dim x As Integer
For x = 0 To 20
Print #1,
Next x

Close #1
Printer.EndDoc
End Sub
USUARIO.EXCLUIDOS 08/12/2006 16:54:13
#188892
Não precisa desse Do While, o loop já é controlado pelo FOR:

Private Sub cmdImprimir_Click()
Set rsPedVenda = New ADODB.Recordset
If rsPedVenda.State = 0 Then
rsPedVenda.Open "PedVenda", bd, adOpenDynamic, adLockPessimistic
rsPedVenda.Filter = "transid='" & Text2.Text & "'"
End If
'Arquivo_em_Branco
Open "\\lucas\EpsonLX" For Output As #1 'PCServer & "\Nota_" & RemoverTexto(rsNF.Fields("NOTA"), rtNumericoSemSimbolos, "23", "13", True) & ".pxt" For Output As #1
rsPedVenda.MoveFirst
'IMPRIMINDO O CABEÇALHO

Dim i As Integer

Print #1,
Print #1, Tab(100); rsNF.Fields("NOTA"); Tab(123); rsNF.Fields("NOTA");
Print #1,
If Text16.Text = "1" Then
Print #1, Tab(74); "X";
ElseIf Text16.Text <> 1 Then
Print #1, Tab(84); "X"
End If
Print #1,
Print #1,
Print #1,
Print #1,
Print #1, Tab(12); Text18.Text; Tab(48); Text34.Text;
Print #1,
Print #1,
Print #1, Tab(12); Text5.Text; Tab(74); Text11.Text; Tab(101); Text3.Text;
Print #1,
'Print #1,
Print #1, Tab(12); Text13.Text; Tab(64); Text12.Text; Tab(83); Text8.Text; Tab(101); Text3.Text
Print #1, 'MUNICIPIO / FONE / UF / IE / HORA
Print #1, Tab(12); Text9.Text; Tab(55); Text41.Text; Tab(69); Text15.Text; Tab(74); Text14.Text; Tab(101); Text7.Text

For i = 1 To rsPedVenda.RecordCount
If (i Mod 15) = 0 Then
For Y = 0 To 37
Print #1,
Next Y
End If
'IMPRIMINDO ITENS
Print #1,
[txt-backcolor=#ff0000]'Do While Not rsPedVenda.EOF[/txt-backcolor]
Print #1, Chr(15); Tab(12); Right(rsPedVenda!itemcod, 6);
Print #1, Chr(15); Tab(19); LeftB(rsPedVenda!itemnome, 26);
Print #1, Chr(15); Tab(72); "000";
Print #1, Chr(15); Tab(78); rsPedVenda!unidade;
Print #1, Chr(15); Tab(84); rsPedVenda!qtde;
Print #1, Chr(15); Tab(91); CCur(rsPedVenda!preco);
Print #1, Chr(15); Tab(101); CCur(rsPedVenda!total);
Print #1, Chr(15); Tab(113); Label50.Caption & "%"
rsPedVenda.MoveNext
[txt-backcolor=#ff0000]'Loop[/txt-backcolor]
Next i

'Imprime rodapé
Print #1, Tab(12); Text35.Text; Tab(34); txtICMS.Text; Tab(101); txtTotalProduto.Text
Print #1, Tab(12); Text38.Text; Tab(34); Text39.Text; Tab(56); Text40.Text; Tab(101); txtTotalGeral.Text
Print #1,
Print #1, Tab(12); Text30.Text & "-" & Text32.Text; Tab(66); Text26.Text; Tab(70); Text19.Text; Tab(80); Text23.Text; Tab(88); Text33.Text
Print #1,
Print #1, Tab(12); Text44.Text; Tab(56); Text45.Text; Tab(83); Text42.Text; Tab(89); Text43.Text
Print #1, Tab(12); Text20.Text; Tab(30); Text21.Text; Tab(48); Text22.Text; Tab(65); Text24.Text; Tab(80); Text25.Text; Tab(101); Text27.Text
Print #1,
Print #1,
Print #1, Tab(12); Text6.Text; Tab(50); Text1.Text

'Deixa a Pagina no Serrilhado
Dim x As Integer
For x = 0 To 20
Print #1,
Next x

Close #1
Printer.EndDoc
End Sub


Qualquer dúvida poste...flw
LCSD 08/12/2006 20:45:21
#188913
Matioli...é o seguinte....

A primeira pgina imprime até q normal....com excessão de colocar apenas 13 itens.

mas a segunda já imprime abaixo de onde deveria. Umas duas linhas e alem disso coloca 14 itens.

a terceira imprime 14 itens também (totalizando 41 e não 45)alem de descer mais ainda....ela junta o rodapé aos itens...e não posso colocar um print #1, para saltar as linhas....pois a utlima geralmente naum terá os 15 itens....ou seja não sei em q linha paraou a impressão do utltimo item para dae eu colocar x linhas de avanço e imprimir o rodapé.

Eu gostaria de saber como posicionar a impressão em uma determinada coluna y da linha x

Ou encontrar uma forma de imprimir nota fiscal acumulada...ou seja, excedendo a qtde de itens na nota, salte para a proxima página na posição da primeira linha da seção produtos podendo ou não imprimir o cabeçalho novamente,mas sem imprimir o rodapé.

Resumindo....

Uma nota com 40 itens...sendo possível apenas 15 itens por nota.

No primeiro formulário

Imprimir Cabeçalho

15 Produtos.

No segundo formulário

imprimir cabeçalho

15 Produtos

No terceiro Formulário

imprimir cabeçalho

10 produtos

imprimir Rodapé

lembrando q todos os 3 formulários serão a mesma nota.
-----------------------------------------

Alguém tem uma sugestão.....



LCSD 09/12/2006 05:24:32
#188950
Matioli...consegui resolver aki o meu problema.....encaixei o seu codigo aki na nota e está abrindo a primeira nota com cabeçalho e produtos, enquanto naão seja satisfeito um condição q apliquei não eh fechado a nota imprimindo 14 itens por pagina , a totalização somente se dá na ultima pagina a ser impressa, que pode ter de 1 a 14 produtos.

Bem se alguém estiver necessitando imprimir Nota Fiscal acumulada manda uma MP que auxilio no desenvolvimento.....


Valeu Matioli......


Tópico encerrado , respostas não são mais permitidas