Ir ao conteúdo
  • Cadastre-se

Vb-urgente


Rafael_sobrinho

Posts recomendados

olha, eu programo muito pouco em VB. sei um pouco mais sobre Delphi, Kylix e C. mas pra você não ficar sem nada eu vou ver o que posso fazer:

crie alguma coisa parecida com um memo (uma caixa para texto longo). procure no DataGrid alguma coisa parecida com "Lines" ou "Records", daí é só apontar o ".text", .".lines" ou qualquer um similar para o ".lines" do DataGrid. com os dados no "memo" dá pra mandar pra porta de impressão tranqüilamente, acho que tem um comando chamado LPrint no VB.

bem, se eu conseguir alguma coisa com outro programador ou na net eu posto aqui, beleza? mas, você já pensou em fazer um Quary?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Colega, eu particularmente não gosto de trabalhar com DataGrid, prefiro o MSFlexGrid que pra mim que não trabalaho com controles Data/ADO é bem melhor.

Fiz essa rotina meio que na pressa, mas funciona e já é um começo...

Passe como parâmetro o seu controle DataGrid e, se estiver usando controle ADO vinculado, passe como segundo parâmetro. Quanto à formatação da impressão, essa parte eu não fiz, fica à seu critério  :D

Public Sub ImprimirDataGrid(ControleDataGrid As DataGrid, ControleAdo As Adodc)
   
   Dim Colunas As Long, QtdColunas As Long, LinhasPorPagina As Long, LinhaAtual As Long
   Dim Registro As Long, QtdRegistros As Long, Celula As Long, QtdCelulas As Long
   Dim TextoImpressao As String, Temp As String
   '--------------------------------------------------
       
   Screen.MousePointer = vbHourglass
   
   With Printer
       .FontSize = 8
       .FontBold = False
       .FontName = "Courier New"
       .Orientation = vbPRORPortrait
   End With
   
   QtdColunas = ControleDataGrid.Columns.Count
   QtdRegistros = ControleAdo.Recordset.RecordCount
   QtdCelulas = ControleDataGrid.VisibleRows
   LinhasPorPagina = 80
   
   For Registro = 1 To QtdRegistros
       
       For Celula = 0 To QtdCelulas - 1
           
           ControleDataGrid.RowBookmark Celula

           For Colunas = 1 To QtdColunas
               Temp = ControleDataGrid.Columns(Colunas - 1).CellText(ControleDataGrid.Bookmark)
               TextoImpressao = TextoImpressao & Temp & Space(Len(Temp))
           Next
           
           LinhaAtual = LinhaAtual + 1

           If LinhaAtual <= LinhasPorPagina Then
               TextoImpressao = TextoImpressao & vbNewLine
           Else
               Printer.Print TextoImpressao
               Printer.NewPage
               LinhaAtual = 0
           End If
           
           ControleAdo.Recordset.MoveNext
           
       Next
       
       ControleDataGrid.Scroll 0, ControleDataGrid.VisibleRows
       
   Next
   
   Printer.EndDoc
   
End Sub

:cool:

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...