SALTO DE PAGINA EM NOTA FISCAL
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 :
mas já imaginou se tiver 100 itens.
Gostaria de uma ajuda de vcs.....
Agradeço desde já....
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á....
Tente assim:
Qualquer dúvida poste...flw
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
Matioli....obrigado por enquanto....deixa eu te falar
Para imprimir os itens estou fazendo Assim :
em meu teste com 62 itens...ele ta imprimindo tudo direto
o código ficou assim.....
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
Não precisa desse Do While, o loop já é controlado pelo FOR:
Qualquer dúvida poste...flw
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
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.....
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.....
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......
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