IMPRESSAO COM PRINT

JPAULO101 15/06/2011 10:28:55
#376813
Olá pessoal tudo bém, olha estou usando essa rotina para impressão com objeto Print, mais quando pesso para imprimir está duplicando os dados cadastro. Exemplo:

NÚMERO SML ESCRITÓRIO
001 GARANHUNS LAJEDO
001 GARANHUNS LAJEDO
002 GARANHUNS ARCOEVRDE
002 GARANHUNS ARCOVERDE

Imprime as mesma linhas duas vezes

[th][/th]
Cabecalho
Private Sub cmdImprimir_Click()

Dim con As Object, rs As Object
Dim Linha As Integer [ô] varialvél para a contagem de linhas
Dim PaginaInicial, Paginafinal, numerodecopias, i

Set con = CreateObject([Ô]ADODB.Connection[Ô])
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])

CommonDialog1.CancelError = True
On Error GoTo TrataErro

[ô]mostra a janela para impressora
CommonDialog1.ShowPrinter
[ô]Captura os valores definidos pelo usuário na janela
PaginaInicial = CommonDialog1.FromPage
Paginafinal = CommonDialog1.ToPage
numerodecopias = CommonDialog1.Copies
For i = 1 To numerodecopias


con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0; Data Source=[Ô] & App.Path & [Ô]\Banco\Pocket.mdb[Ô]

rs.Open [Ô]SELECT p.*, a.* [Ô] & _
[Ô]FROM (TblPocket p [Ô] & _
[Ô]INNER JOIN TblAcessorio a [Ô] & _
[Ô]ON p.Codigo = a.CodAcess)ORDER BY CODIGO [Ô], con, 1, 3
Linha = 1

Printer.FontName = [Ô]Arial[Ô]
Printer.FontSize = 10
Printer.PaperSize = 9 [ô] modelo de papel folha = A4
Printer.Orientation = 2 [ô] Orientação do papel = paisagem

Do While Not rs.EOF

If Linha = 1 Then [ô]define linha 1 é cabeçalho

Cabeçalho

End If

Printer.Print Tab(3); String(240, [Ô]-[Ô])
Printer.Print Tab(3); Format(rs([Ô]Codigo[Ô]), [Ô]00#[Ô]);
Printer.Print Tab(15); rs([Ô]SML[Ô]);
Printer.Print Tab(35); rs([Ô]ESCRITORIO[Ô]);
Printer.Print Tab(55); rs([Ô]APARELHO[Ô]);
Printer.Print Tab(70); rs([Ô]SN[Ô]);
Printer.Print Tab(90); rs([Ô]IMEI[Ô]);
Printer.Print Tab(112); rs([Ô]CHIPTIMNOVO[Ô]);
Printer.Print Tab(133); rs([Ô]RESPONSAVEL[Ô]);
Printer.Print Tab(156); rs([Ô]FONE[Ô]);

Linha = Linha + 1 [ô] montando as linhas
rs.MoveNext [ô]proximo registro da tabela

If Linha >= 50 Then [ô] se tiver mais de 50 linhas iniciar uma nova pagina
Printer.NewPage
Linha = 1
End If

Loop

Next
Exit Sub

TrataErro:
Exit Sub

Printer.EndDoc [ô]finaliza a impressao
rs.Close [ô]fecha a tabela pocket

End Sub
LLAIA 15/06/2011 10:53:17
#376814
Elimine o loop For. O número de cópias capturado pelo CommonDialog deve ser passado para a propriedade Copies do objeto Printer.
JPAULO101 15/06/2011 11:39:57
#376821
Retirei o Loop For, mais agora só imprime só primeiro cadastro 001.

Abraços
MSMJUDAS 15/06/2011 11:54:42
#376823
Está imprimindo duas vezes o mesmo registro pq o resultado do seu SQL está repetindo os registros.

O erro é na sua SQL, está repetindo os registros, procure deixar agrupado ou reveja pq está repetindos os dados.
MARCELO.TREZE 15/06/2011 14:22:58
#376831
faça alteração nesta linha

rs.Open [Ô]SELECT p.*, a.* [Ô] & _
[Ô]FROM (TblPocket p [Ô] & _
[Ô]INNER JOIN TblAcessorio a [Ô] & _
[Ô]ON p.Codigo = a.CodAcess) GROUP BY CODIGO, SML, ESCRITORIO, APARELHO ORDER BY CODIGO [Ô], con, 1, 3
JPAULO101 15/06/2011 14:37:13
#376836
Olá Marcelo, fiz a alteração na rotina, mais agora não imprimi mais nada.

Abraços
MARCELO.TREZE 15/06/2011 14:50:55
#376838
desculpe eu coloquei o código mas o ideal seria vc corrigir

por exemplo, não de que tabela são os campos: entaão acerte desta maneira:

p.CODIGO, p.SML, a.escritorio, etc...
JPAULO101 15/06/2011 15:06:37
#376840
Ficou dessa forma

rs.Open [Ô]SELECT p.*, a.* [Ô] & _
[Ô]FROM (TblPocket p [Ô] & _
[Ô]INNER JOIN TblAcessorio a [Ô] & _
[Ô]ON p.Codigo = a.CodAcess) GROUP BY p.CODIGO, p.SML, p.ESCRITORIO, p.APARELHO, p.SN, p.IMEI, p.CHIPTINNOVO, p.FONE, p.RESPONSAVEL ORDER BY CODIGO [Ô], con, 1, 3

Por encontro estou pegando apenas os dados da TBLPOCKET, mais continua não imprimindo nada.
MARCELO.TREZE 15/06/2011 15:24:09
#376842
Resposta escolhida
altera o order by também ou apenas tire para testar
JPAULO101 15/06/2011 15:35:52
#376846
Alterar o order by, tirei para teste, mais nada, não imprimi

Abraços
MARCELO.TREZE 15/06/2011 15:48:22
#376849
tente novamente

rs.Open [Ô]SELECT p.*, a.* [Ô] & _
[Ô]FROM (TblPocket p [Ô] & _
[Ô]INNER JOIN TblAcessorio a [Ô] & _
[Ô]ON p.Codigo = a.CodAcess) GROUP BY p.CODIGO, p.SML, p.ESCRITORIO, p.APARELHO[Ô], con, 1, 3

Página 1 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas