IMPRIMIR LISTVIEW COM PRINTER

MASTER2020 31/07/2009 00:26:54
#318412
Ola amigos estou tentando imprimir um list com o printer mas nao esta funcionando bem tentei varios exemplos da net..mas nao deu, talves seja eu nao esteja entendendo muito bem, em fim conto com vcs o ultimo exemplo foi este

If listminimo.ListItems.Count = 0 Then
MsgBox [Ô]Não há dados para ser impresso.[Ô], vbInformation, [Ô]AVISO[Ô]
Else
For Each Item In listminimo.ListItems
Printer.Print Tab(0); Item.Text; [Ô] [Ô]; Item.SubItems(0); [Ô] [Ô]; Item.SubItems(2); [Ô] [Ô]; Item.SubItems(3); [Ô] [Ô]; Item.SubItems(4); [Ô] [Ô]; Item.SubItems(5); [Ô] [Ô]; Item.SubItems(6)

Next
Printer.EndDoc
MsgBox [Ô]Dados impresso com sucesso.[Ô], vbInformation, [Ô]Aviso[Ô]
End If
End Function

esta dando erro 380 object requerid
a estrutura do meu list e esta

Private Sub Form_Load()



cnn.Open [Ô] provider=microsoft.jet.oledb.4.0;data source=[Ô] & App.Path & [Ô]loja.mdb[Ô]
[ô]ajusta
Call DimensionaForm(Me, 6000, 7620)

On Error Resume Next
listminimo.View = lvwReport
listminimo.GridLines = True
listminimo.ColumnHeaders.Add , , [Ô]Código[Ô]
listminimo.ColumnHeaders.Add , , [Ô]Descrição[Ô]
listminimo.ColumnHeaders.Add , , [Ô]Estoque minimo[Ô]
listminimo.ColumnHeaders.Add , , [Ô]Estoque atual[Ô]
listminimo.ColumnHeaders.Add , , [Ô]Valor Venda[Ô]
listminimo.ColumnHeaders.Add , , [Ô]Saldo [Ô]



listminimo.ColumnHeaders(0).Width = 1000
listminimo.ColumnHeaders(1).Width = 800
listminimo.ColumnHeaders(2).Width = 1800
listminimo.ColumnHeaders(3).Width = 1200
listminimo.ColumnHeaders(4).Width = 1200
listminimo.ColumnHeaders(5).Width = 1200

rsminimo.Open [Ô]select*from tblproduto order by valorvenda desc [Ô], cnn, 3, 3

[ô]desc e decrescente e asc e crecente
While Not rsminimo.EOF

Set lst = listminimo.ListItems.Add(, , rsminimo([Ô]codprod[Ô]))
lst.SubItems(0) = [Ô][Ô] & rsminimo([Ô]codprod[Ô])
lst.SubItems(1) = [Ô][Ô] & rsminimo([Ô]descricao[Ô])
lst.SubItems(2) = [Ô][Ô] & rsminimo([Ô]estoque_minimo[Ô])
lst.SubItems(3) = [Ô][Ô] & rsminimo([Ô]estoque_atual[Ô])
lst.SubItems(4) = [Ô][Ô] & rsminimo([Ô]valorvenda[Ô])
[ô]calcula as linhas atraves da multiplicacao
lst.SubItems(5) = CDbl(rsminimo([Ô]valorvenda[Ô])) * CDbl(rsminimo([Ô]estoque_atual[Ô]))
rsminimo.MoveNext
[ô]conta total de registros
StatusBar1.Panels(2).Text = rsminimo.RecordCount

[ô]esta parte abaixo do codigo soma a coluna do list
Dim cSoma As Currency
For i = 1 To listminimo.ListItems.Count
cSoma = cSoma + CCur(listminimo.ListItems(i).SubItems(5))
Next i

Wend
[ô] CompSearchLabel(1).Caption = ListView1.ListItems.Count & [Ô] Registros encontrados.[Ô]
rsminimo.Close

StatusBar1.Panels(4).Text = cSoma
End Sub

bem agora e com vcs at+

MARCELO.TREZE 31/07/2009 00:56:07
#318413
Colega identificar a coluna do listview não é dificil, veja

para a primeira coluna, ou coluna 0 basta usar isto

ListView1.ListItems(1)     [ô]Coluna 0 e linha 1


para as demais colunas seria assim

ListView1.ListItems(1).SubItems(1)    [ô]Coluna 1 e linha 1
ListView1.ListItems(1).SubItems(2) [ô]Coluna 2 e linha 1
ListView1.ListItems(1).SubItems(3) [ô]Coluna 3 e linha 1


então baseado nisto basta fazer o seguinte

With listminimo [ô]isto supondo que o nome do listview é listminimo
If .ListItems.Count = 0 Then
MsgBox [Ô]Não há dados para ser impresso.[Ô], vbInformation, [Ô]AVISO[Ô]
Else
For F = 1 To .ListItems.Count
Printer.Print Tab(0); .ListItems(F).ListItem(F); [Ô] [Ô]; .ListItems(F).SubItems(1); [Ô] [Ô]; .ListItems(F) .SubItems(2); [Ô] [Ô]; .ListItems(F).SubItems(3); [Ô] [Ô]; .ListItems(F).SubItems(4); [Ô] [Ô]; .ListItems(F).SubItems(5); [Ô] [Ô]; .ListItems(F).SubItems(6)
Next F
Printer.EndDoc
MsgBox [Ô]Dados impresso com sucesso.[Ô], vbInformation, [Ô]Aviso[Ô]
End If
End With


Teste agora
MASTER2020 31/07/2009 10:39:21
#318436
bom dia Marcelo-treze, muito obrigado pelo codigo, vou testar ja retorno vlw msm
MASTER2020 31/07/2009 10:54:28
#318437
Marcelo esta dando um erro neste codigo

Printer.Print Tab(0); .ListItems(F).ListItems(0);


tipo estou com duvida tb estou usando command eu usei esta parte do codigo
With listminimo [ô]isto supondo que o nome do listview é listminimo
If .ListItems.Count = 0 Then
MsgBox [Ô]Não há dados para ser impresso.[Ô], vbInformation, [Ô]AVISO[Ô]
Else
For F = 1 To .ListItems.Count
Printer.Print Tab(0); .ListItems(F).ListItem(F); [Ô] [Ô]; .ListItems(F).SubItems(1); [Ô] [Ô]; .ListItems(F) .SubItems(2); [Ô] [Ô]; .ListItems(F).SubItems(3); [Ô] [Ô]; .ListItems(F).SubItems(4); [Ô] [Ô]; .ListItems(F).SubItems(5); [Ô] [Ô]; .ListItems(F).SubItems(6)
Next F
Printer.EndDoc
MsgBox [Ô]Dados impresso com sucesso.[Ô], vbInformation, [Ô]Aviso[Ô]
End If
End With
esta certo , porue no load do form tem o restantante, esta certo marcelo?
Tópico encerrado , respostas não são mais permitidas