IMPRESSAO COM PRINT
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]
NÚMERO SML ESCRITÓRIO
001 GARANHUNS LAJEDO
001 GARANHUNS LAJEDO
002 GARANHUNS ARCOEVRDE
002 GARANHUNS ARCOVERDE
Imprime as mesma linhas duas vezes
Cabecalho | [/th]
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 |
Elimine o loop For. O número de cópias capturado pelo CommonDialog deve ser passado para a propriedade Copies do objeto Printer.
Retirei o Loop For, mais agora só imprime só primeiro cadastro 001.
Abraços
Abraços
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.
O erro é na sua SQL, está repetindo os registros, procure deixar agrupado ou reveja pq está repetindos os dados.
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
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
Olá Marcelo, fiz a alteração na rotina, mais agora não imprimi mais nada.
Abraços
Abraços
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...
por exemplo, não de que tabela são os campos: entaão acerte desta maneira:
p.CODIGO, p.SML, a.escritorio, etc...
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.
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.
altera o order by também ou apenas tire para testar
Alterar o order by, tirei para teste, mais nada, não imprimi
Abraços
Abraços
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
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
Tópico encerrado , respostas não são mais permitidas