IMPRIMIR VIA PRINT

ARES 28/07/2009 17:22:43
#318165
Amigos,

Estou montando uma ordem de compra e vou colocar a possibilidade de imprimir via print, mas está ocorrendo um erro no loop; quando para pelo 1º produto e volta para buscar os demais ele está indo até a conexão de retornando erro.

segue código:


Private Sub Imprimir()
Dim Linhas As Integer
Dim rsselecao As New ADODB.Recordset
Dim PaginaInicial, Paginafinal, numerodecopias, i
Dim linha As Integer
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

TrataErro:
Printer.CurrentY = 180
Printer.Print Tab(0); Format(Now, [Ô]h:mm am/pm[Ô]); Space(2);
Printer.Print Format(Now, [Ô]dddd[Ô])
Printer.Font = [Ô]courier new[Ô]
Printer.FontBold = False
Printer.FontSize = [Ô]8[Ô]
Printer.Print Tab(50); [Ô]ORÇAMENTO[Ô]
Printer.Print Tab(105); [Ô]pág.[Ô]; contapagina
[ô]On Error GoTo errimprimir

If Me.txtCodigo = [Ô][Ô] Then
MsgBox [Ô]Favor informar número ordem compra.[Ô], vbInformation, [Ô]Objetivo[Ô]
Exit Sub
End If


Mycon.Open [Ô]dsn=est1112[Ô]
With mycmd
Set .ActiveConnection = Mycon
.CommandType = adCmdText

.CommandText = [Ô]select tblvenda.codigo, tblvenda.numeronota, tblvenda.codigoproduto, est001.descricao, tblvenda.preco, tblvenda.qtde, tblvenda.subtotal, sum(tblvenda.subtotal) as total from est001 inner join tblvenda on est001.codigo = tblvenda.codigoproduto where tblvenda.codigo = [ô][Ô] & Me.txtCodigo & [Ô][ô] group by tblvenda.numeronota, tblvenda.qtde, tblvenda.preco, tblvenda.subtotal, tblvenda.codigoproduto, est001.descricao, tblvenda.codigo [Ô]
Set rsselecao = .Execute

.CommandText = [Ô]Select tblvenda.codigocliente, tblcliente.nome,tblcliente.endereco, tblcliente.bairro, tblcliente.cidade, tblcliente.cep, tblcliente.cpfcnpj, tblcliente.inscest, tblvenda.numeronota, tblvenda.ddata, tblcliente.uf, tblcliente.telefone from tblcliente inner join tblvenda on tblcliente.codigo = tblvenda.codigocliente where tblvenda.numeronota = [ô][Ô] & Me.txtCodigo & [Ô][ô] [Ô]
Set myrs = .Execute

End With

linha = 1

Do While Not rsselecao.EOF
If linha = 1 Then
cabecalho
End If
linha = linha

Printer.Print Tab(5); rsselecao!codigoproduto; Tab(25); rsselecao!Descricao; Tab(80); rsselecao!qtde; Tab(95); Format(rsselecao!preco, [Ô]###,##0.00[Ô]); Tab(105); Format(rsselecao!subtotal, [Ô]###,##0.00[Ô])
[ô]Printer.Print ; [Ô]-------------------------------------------------------------------------------------------------------[Ô]
Printer.Print
rsselecao.MoveNext
Loop
Printer.Print ; [Ô]........................................................................................[Ô]; Tab(90); [Ô]TOTAL GERAL[Ô]; Tab(105); Format(rsselecao2!total, [Ô]###,##0.00[Ô]);
Printer.EndDoc

saida:
Set myrs = Nothing
Set rsselecao = Nothing
Set mycmd = Nothing
Mycon.Close
errimprimir:
With Err
If .number <> 0 Then
MSGSKIN.Abrir [Ô]ERRO AO IMPRIMIR:[Ô] & vbCrLf & vbCrLf & [Ô]Houve um erro ao imprimir ordem de compra[Ô] & vbCrLf & vbCrLf & [Ô] favor verificar se o número existe ou se[Ô] & vbCrLf & vbCrLf & [Ô] não foi fechada[Ô], [1 But], RMOK, [Ô]Projeto Ares[Ô], vbRed, [Ô]Fechar[Ô]
.number = 0
GoTo saida
End If
End With
End Sub
Private Sub cabecalho()
Dim PaginaInicial, Paginafinal, numerodecopias, i
Dim linha As Integer
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 + 1
[ô]aqui entra o seu código para imprimir
Next
[ô] Exit Sub
TrataErro:
Printer.CurrentY = 180
Printer.Print Tab(0); Format(Now, [Ô]h:mm am/pm[Ô]); Space(2);
Printer.Print Format(Now, [Ô]dddd[Ô])
Printer.Font = [Ô]courier new[Ô]
Printer.FontBold = False
Printer.FontSize = [Ô]8[Ô]
Printer.Print Tab(50); [Ô]ORÇAMENTO[Ô]
Printer.Print Tab(105); [Ô]pág.[Ô]; contapagina
[ô]#
Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
Printer.Print Tab(5);
[ô]
Printer.Print Tab(5); [Ô]Ordem de compra numero ----: [Ô]; myrs!numeronota; [Ô] Data ----: [Ô]; Format(myrs!ddata, [Ô]dd/mm/yyyy[Ô]); [Ô][Ô]
[ô]
Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
Printer.Print Tab(5);

Printer.Print Tab(5); [Ô][Ô]
Printer.Print Tab(5); [Ô]Nome --------: [Ô]; myrs!nome; [Ô] [Ô]; myrs!codigocliente; [Ô][Ô]
[ô]
Printer.Print Tab(5); [Ô]Endereco ----: [Ô]; myrs!endereco; Tab(70); [Ô] bairro : [Ô]; myrs!bairro; [Ô] CEP: [Ô]; myrs!cep; [Ô][Ô]
[ô]
Printer.Print Tab(5); [Ô]Municipio----: [Ô]; myrs!cidade; Tab(70); [Ô] UF: [Ô]; myrs!uf; [Ô] Telefone :[Ô]; myrs!Telefone; [Ô][Ô]

Printer.Print Tab(5); [Ô]CPF/CNPJ ----: [Ô]; myrs!CPFCNPJ; Tab(70); [Ô] Insc. est.: [Ô]; myrs!inscest; [Ô][Ô]
[ô]
Printer.Print Tab(5); [Ô][Ô]

Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
Printer.Print Tab(5); [Ô]CODIGO BARRAS[Ô]; Tab(25); [Ô]DESCRICAO[Ô]; Tab(80); [Ô]QTDE[Ô]; Tab(95); [Ô]PRECO[Ô]; Tab(105); [Ô]SUBTOTAL[Ô]
Printer.Print ; [Ô].......................................................................................................................................................................[Ô]


End Sub

amigos, caso possam me ajudar a localizar o erro, serei muito grato.
MARCELO.TREZE 28/07/2009 17:38:41
#318167
Resposta escolhida
Colega tenta esta Modificação

Private Sub Imprimir()
On Error GoTo errimprimir

Dim Linhas As Integer
Dim rsselecao As New ADODB.Recordset
Dim PaginaInicial As Integer, Paginafinal As Integer, numerodecopias As Integer, i As Integer
Dim linha As Integer

If Me.txtCodigo = [Ô][Ô] Then
MsgBox [Ô]Favor informar número ordem compra.[Ô], vbInformation, [Ô]Objetivo[Ô]
Exit Sub
End If


CommonDialog1.CancelError = True
[ô]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
Printer.CurrentY = 180
Printer.Print Tab(0); Format(Now, [Ô]h:mm am/pm[Ô]); Space(2);
Printer.Print Format(Now, [Ô]dddd[Ô])
Printer.Font = [Ô]courier new[Ô]
Printer.FontBold = False
Printer.FontSize = [Ô]8[Ô]
Printer.Print Tab(50); [Ô]ORÇAMENTO[Ô]
Printer.Print Tab(105); [Ô]pág.[Ô]; contapagina


Mycon.Open [Ô]dsn=est1112[Ô]
With mycmd
Set .ActiveConnection = Mycon
.CommandType = adCmdText

.CommandText = [Ô]select tblvenda.codigo, tblvenda.numeronota, tblvenda.codigoproduto, est001.descricao, tblvenda.preco, tblvenda.qtde, tblvenda.subtotal, sum(tblvenda.subtotal) as total from est001 inner join tblvenda on est001.codigo = tblvenda.codigoproduto where tblvenda.codigo = [ô][Ô] & Me.txtCodigo & [Ô][ô] group by tblvenda.numeronota, tblvenda.qtde, tblvenda.preco, tblvenda.subtotal, tblvenda.codigoproduto, est001.descricao, tblvenda.codigo [Ô]
Set rsselecao = .Execute

.CommandText = [Ô]Select tblvenda.codigocliente, tblcliente.nome,tblcliente.endereco, tblcliente.bairro, tblcliente.cidade, tblcliente.cep, tblcliente.cpfcnpj, tblcliente.inscest, tblvenda.numeronota, tblvenda.ddata, tblcliente.uf, tblcliente.telefone from tblcliente inner join tblvenda on tblcliente.codigo = tblvenda.codigocliente where tblvenda.numeronota = [ô][Ô] & Me.txtCodigo & [Ô][ô] [Ô]
Set myrs = .Execute

End With

linha = 1

Do While Not rsselecao.EOF
If linha = 1 Then
cabecalho
End If
linha = linha + 1

Printer.Print Tab(5); rsselecao!codigoproduto; Tab(25); rsselecao!Descricao; Tab(80); rsselecao!qtde; Tab(95); Format(rsselecao!preco, [Ô]###,##0.00[Ô]); Tab(105); Format(rsselecao!subtotal, [Ô]###,##0.00[Ô])
[ô]Printer.Print ; [Ô]-------------------------------------------------------------------------------------------------------[Ô]
Printer.Print
rsselecao.MoveNext
Loop

Printer.Print ; [Ô]........................................................................................[Ô]; Tab(90); [Ô]TOTAL GERAL[Ô]; Tab(105); Format(rsselecao2!total, [Ô]###,##0.00[Ô]);
Printer.EndDoc

Set myrs = Nothing
Set rsselecao = Nothing
Set mycmd = Nothing
Mycon.Close

Exit Sub
errimprimir:
With Err
If .Number <> 0 Then
MSGSKIN.Abrir [Ô]ERRO AO IMPRIMIR:[Ô] & vbCrLf & vbCrLf & [Ô]Houve um erro ao imprimir ordem de compra[Ô] & vbCrLf & vbCrLf & [Ô] favor verificar se o número existe ou se[Ô] & vbCrLf & vbCrLf & [Ô] não foi fechada[Ô], [1 But], RMOK, [Ô]Projeto Ares[Ô], vbRed, [Ô]Fechar[Ô]
.Number = 0
GoTo saida
End If
End With
End Sub



Private Sub cabecalho()
Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
Printer.Print Tab(5);
[ô]
Printer.Print Tab(5); [Ô]Ordem de compra numero ----: [Ô]; myrs!numeronota; [Ô] Data ----: [Ô]; Format(myrs!ddata, [Ô]dd/mm/yyyy[Ô]); [Ô][Ô]
[ô]
Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
Printer.Print Tab(5);

Printer.Print Tab(5); [Ô][Ô]
Printer.Print Tab(5); [Ô]Nome --------: [Ô]; myrs!nome; [Ô] [Ô]; myrs!codigocliente; [Ô][Ô]
[ô]
Printer.Print Tab(5); [Ô]Endereco ----: [Ô]; myrs!endereco; Tab(70); [Ô] bairro : [Ô]; myrs!bairro; [Ô] CEP: [Ô]; myrs!cep; [Ô][Ô]
[ô]
Printer.Print Tab(5); [Ô]Municipio----: [Ô]; myrs!cidade; Tab(70); [Ô] UF: [Ô]; myrs!uf; [Ô] Telefone :[Ô]; myrs!Telefone; [Ô][Ô]

Printer.Print Tab(5); [Ô]CPF/CNPJ ----: [Ô]; myrs!CPFCNPJ; Tab(70); [Ô] Insc. est.: [Ô]; myrs!inscest; [Ô][Ô]
[ô]
Printer.Print Tab(5); [Ô][Ô]

Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
Printer.Print Tab(5); [Ô]CODIGO BARRAS[Ô]; Tab(25); [Ô]DESCRICAO[Ô]; Tab(80); [Ô]QTDE[Ô]; Tab(95); [Ô]PRECO[Ô]; Tab(105); [Ô]SUBTOTAL[Ô]
Printer.Print ; [Ô].......................................................................................................................................................................[Ô]
End Sub


veja se funciona
ARES 28/07/2009 17:55:20
#318169
Marcelo,

Obrigado pela resposta, realmente a procedure continha muita informação inútil, o problema agora é que não está fazendo o loop, pega somente o primeiro item e fecha a impressão.
MARCELO.TREZE 28/07/2009 18:03:58
#318170
tenta novamente

Private Sub Imprimir()
On Error GoTo saida
Dim Linhas As Integer
Dim rsselecao As New ADODB.Recordset
Dim PaginaInicial As Integer, Paginafinal As Integer, numerodecopias As Integer, i As Integer
Dim linha As Integer

If Me.txtCodigo = [Ô][Ô] Then
MsgBox [Ô]Favor informar número ordem compra.[Ô], vbInformation, [Ô]Objetivo[Ô]
Exit Sub
End If


CommonDialog1.CancelError = True
[ô]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
Printer.CurrentY = 180
Printer.Print Tab(0); Format(Now, [Ô]h:mm am/pm[Ô]); Space(2);
Printer.Print Format(Now, [Ô]dddd[Ô])
Printer.Font = [Ô]courier new[Ô]
Printer.FontBold = False
Printer.FontSize = [Ô]8[Ô]
Printer.Print Tab(50); [Ô]ORÇAMENTO[Ô]
Printer.Print Tab(105); [Ô]pág.[Ô]; contapagina


Mycon.Open [Ô]dsn=est1112[Ô]
With mycmd
Set .ActiveConnection = Mycon
.CommandType = adCmdText

.CommandText = [Ô]select tblvenda.codigo, tblvenda.numeronota, tblvenda.codigoproduto, est001.descricao, tblvenda.preco, tblvenda.qtde, tblvenda.subtotal, sum(tblvenda.subtotal) as total from est001 inner join tblvenda on est001.codigo = tblvenda.codigoproduto where tblvenda.codigo = [ô][Ô] & Me.txtCodigo & [Ô][ô] group by tblvenda.numeronota, tblvenda.qtde, tblvenda.preco, tblvenda.subtotal, tblvenda.codigoproduto, est001.descricao, tblvenda.codigo [Ô]
Set rsselecao = .Execute
End With

linha = 1

Do While Not rsselecao.EOF
If linha = 1 Then
cabecalho
End If
linha = linha + 1

Printer.Print Tab(5); rsselecao!codigoproduto; Tab(25); rsselecao!Descricao; Tab(80); rsselecao!qtde; Tab(95); Format(rsselecao!preco, [Ô]###,##0.00[Ô]); Tab(105); Format(rsselecao!subtotal, [Ô]###,##0.00[Ô])
[ô]Printer.Print ; [Ô]-------------------------------------------------------------------------------------------------------[Ô]
Printer.Print
rsselecao.MoveNext
Loop

Printer.Print ; [Ô]........................................................................................[Ô]; Tab(90); [Ô]TOTAL GERAL[Ô]; Tab(105); Format(rsselecao2!total, [Ô]###,##0.00[Ô]);
Printer.EndDoc
Set myrs = Nothing
Set rsselecao = Nothing
Set mycmd = Nothing
Mycon.Close
Exit Sub
errimprimir:
With Err
If .Number <> 0 Then
MSGSKIN.Abrir [Ô]ERRO AO IMPRIMIR:[Ô] & vbCrLf & vbCrLf & [Ô]Houve um erro ao imprimir ordem de compra[Ô] & vbCrLf & vbCrLf & [Ô] favor verificar se o número existe ou se[Ô] & vbCrLf & vbCrLf & [Ô] não foi fechada[Ô], [1 But], RMOK, [Ô]Projeto Ares[Ô], vbRed, [Ô]Fechar[Ô]
.Number = 0
GoTo saida
End If
End With
End Sub

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