Eu fiz um codigo ao qual imprime duas lista de registros (duas SQL)...
Esses são os codigos do botão IMPRIMIR e das funções CABEÇALHO e CABEÇALHOX
Private Sub cmdImprimir_Click()
Dim S_NOME As String
Dim S_DESCRICAO As String
Dim S_VALOR As String
Dim X_DESCRICAO As String
Dim X_CATEGORIA As String
Dim X_VALOR As String
Dim Linha As String
If MsgBox("Iniciar Impressão?", 36, "Aviso do Sistema") = 7 Then
Exit Sub
End If
Linha = 1
Data2.DatabaseName = (App.Path & "\cyberbase.mdb")
Data2.RecordSource = "SELECT CLIENTE.CODIGO, CLIENTE.NOME, PARCELAS.* FROM CLIENTE INNER JOIN PARCELAS ON CLIENTE.CODIGO = PARCELAS.CODIGO_ALUNO WHERE PARCELAS.PAGAMENTO = #" & Format(MaskEdBox1, "mm/dd/yyyy") & "#"
Data2.Refresh
Printer.FontName = "Arial"
Printer.FontSize = 8
Do While Not Data2.Recordset.EOF = True
If Linha = 1 Then
Cabeçalho
End If
S_NOME = Data2.Recordset.Fields("NOME")
S_DESCRICAO = Data2.Recordset.Fields("DESCRICAO")
S_VALOR = Data2.Recordset.Fields("VALOR")
Printer.CurrentX = 130
Printer.Print Tab(3); S_NOME;
Printer.Print Tab(65); S_DESCRICAO;
Printer.Print Tab(85); S_VALOR
Linha = Linha + 1
Data2.Recordset.MoveNext
If Linha >= 80 Then
Printer.NewPage
Linha = 1
End If
Loop
'COMEÇA AQUI A SEGUNDA LISTA DE REGISTROS
Data3.DatabaseName = (App.Path & "\cyberbase.mdb")
Data3.RecordSource = "SELECT DESCRICAO, CATEGORIA, VALOR FROM PGTOOUTRO WHERE DATA = #" & Format(MaskEdBox1, "mm/dd/yyyy") & "# AND (CATEGORIA = '" & cboAcesso.Text & "')"
Data3.Refresh
Printer.FontName = "Arial"
Printer.FontSize = 8
Do While Not Data3.Recordset.EOF = True
If Linha = 1 Then
CabeçalhoX
End If
X_DESCRICAO = Data3.Recordset.Fields("DESCRICAO")
X_CATEGORIA = Data3.Recordset.Fields("CATEGORIA")
X_VALOR = Data3.Recordset.Fields("VALOR")
Printer.Print Tab(3); X_DESCRICAO;
Printer.Print Tab(65); X_CATEGORIA;
Printer.Print Tab(85); X_VALOR
Linha = Linha + 1
Data3.Recordset.MoveNext
If Linha >= 80 Then
Printer.NewPage
Linha = 1
End If
Loop
Printer.EndDoc
'End If
End Sub
Private Function Cabeçalho()
Printer.Print Tab(3); "NOME";
Printer.Print Tab(65); "REFERENTE";
Printer.Print Tab(85); "VALOR"
Printer.Print String(200, "-")
Printer.Print
End Function
Private Function CabeçalhoX()
Printer.Print Tab(3); "DESCRIÇÃO";
Printer.Print Tab(65); "CATEGORIA";
Printer.Print Tab(85); "VALOR"
Printer.Print String(200, "-")
Printer.Print
End Function
ELE CONSEGUIU IMPRIMIR AS DUAS LISTA CERTINHO...
...o unico problema é que as listas estão imendadas (juntas) e a 2ª lista não está aparecendo o "Cabeçalho".
ERA PARA APARECER ASSIM:
NOME REFERENTE VALOR
----------------------------------------------------------------------------
MARIA MAIO R$ 30,00
JOÃO FEVEREIRO R$ 50,00
RAIMUNDO MAIO R$ 40,00
02 ESPAÇOS
DESCRIÇÃO CATEGORIA VALOR
-----------------------------------------------------------------------------
ACESSO CYBERCAFE R$ 3,00
DIGITAÇÃO GRÁFICA R$ 5,00
IMPRESSÃO GRÁFICA R$ 18,00
E ESTÁ APARECENDO ASSIM:
NOME REFERENTE VALOR
----------------------------------------------------------------------------
MARIA MAIO R$ 30,00
JOÃO FEVEREIRO R$ 50,00
RAIMUNDO MAIO R$ 40,00
ACESSO CYBERCAFE R$ 3,00
DIGITAÇÃO GRÁFICA R$ 5,00
IMPRESSÃO GRÁFICA R$ 18,00