USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Preview de 2 Tabelas Relacionadas
Leandro Bueno
não registrado
ENUNCIADA !
Postada em 04/03/2008 09:00 hs   
Olá amigos do VBweb td bem?
Pessoal estou com um problema:
No meu porgrama ultilizo relatórios em tela, faço um preview em uma picture.

até agora todos meus relatórios funcionaram normal, até eu for fazer um com 2 tabelas relacionadas.
Acontece o Seguinte:
Na tabela Pai (PROCESSO) tenho um registro, e na tabela Filho (PROCESSPD) tem 7 registros.
Mas na hora de imprimir esta imprimindo 7 folhas, ou seja os 7 registros da tabela filho, estão saindo um em cada folha.

O que pode ser?
podem me ajudar?

Vejam a rotina de impressão do meu relatório:


Private Function PrintRoutine(ynPrev As Boolean, objPrint As Object, _
        Optional Ratio As Double = 1, Optional intpg As Integer) As Integer

    Dim intRecCount As Integer
    Dim dblrow As Double 'outro
   
    On Error Resume Next:

    If openClient = False Then
       Exit Function
    End If

    If var_sql.EOF = False Then
        var_sql.MoveMax
        var_sql.MoveMin
        intRecCount = var_sql.RecordCount
    Else
        MsgBox "Não existem dados a serem impressos!", vbInformation
        PrintRoutine = 4
        Exit Function
    End If

    If TypeOf objPrint Is PictureBox Then
        objPrint.Visible = True
        objPrint.Cls

        For icount = 1 To 29
            objPrint.CurrentY = icount
            objPrint.CurrentX = 1
            objPrint.Print Space(80)
        Next icount

        objPrint.Left = Me.ScaleWidth / 2 - objPrint.Width / 2
        objPrint.Top = Me.ScaleHeight / 2 - objPrint.Height / 2
    Else
        objPrint.PaperSize = vbPRPSA4
        objPrint.ScaleMode = vbCentimeters
    End If

    intPage = 0
    intMaxPages = intRecCount

    Do Until var_sql.EOF
            intPage = intpg

        var_sql.AbsolutePosition = intPage - 1
     
        Call Cabecalho(objPrint, Ratio)

        With objPrint

            .FontName = "Arial"
            .FontSize = 12 * Ratio
            .FontBold = False

            .CurrentY = 2.7
            .CurrentX = 3.8
            objPrint.Print var_sql("cliente")
            .FontSize = 12 * Ratio
            .CurrentY = 3.4
            .CurrentX = 6.3
            objPrint.Print var_sql("processo")
            .FontSize = 12 * Ratio
            .CurrentY = 4.1
            .CurrentX = 3.2
            objPrint.Print var_sql("codprocesso")
            .FontSize = 10 * Ratio
            .CurrentY = 5.5
            .CurrentX = 3.3
            objPrint.Print var_sql("produto")
            .CurrentY = 6.2
            .CurrentX = 3.3
            objPrint.Print var_sql("material")
           
            End With

        Call Rodape(objPrint, Ratio, intPage, intMaxPages)
            Exit Do
    Loop
   
    If Not ynPrev Then
        objPrint.EndDoc
    End If
   
    If intPage = 1 Then
         If intPage = intMaxPages Then
              PrintRoutine = 4
        Else
               PrintRoutine = 3
        End If
    Else
        If intPage = intMaxPages Then
             PrintRoutine = 1
        Else
            PrintRoutine = 2
        End If
    End If
   
     Do While Not var_sql.EOF
        Call Cabecalho(objPrint, Ratio)
        If ynPrev = True Then
            intPage = intpg
        Else
            intPage = intPage + 1
        End If
        With objPrint
            .FontName = "Arial"
            .FontSize = 11 * Ratio
            .FontBold = False
        End With
        If ynPrev = True Then
            var_sql.AbsolutePosition = (intpg * 46) - 46
        End If
       For dblrow = 9.5 To 26.5 Step 0.5
            With objPrint
            .CurrentY = dblrow
            .CurrentX = 1.6
            objPrint.Print var_sql("operacao")
            .CurrentY = dblrow
            .CurrentX = 4
            objPrint.Print var_sql("setor")
            .CurrentY = dblrow
            .CurrentX = 7.8
            objPrint.Print var_sql("maquina")
            .CurrentY = dblrow
            .CurrentX = 14.1
            objPrint.Print var_sql("pecahora")
            .CurrentY = dblrow
            .CurrentX = 15.8
            objPrint.Print var_sql("tempopreparo")
            .CurrentY = dblrow
            .CurrentX = 17.8
            objPrint.Print var_sql("horastrab")
                      var_sql.MoveNext
                If var_sql.EOF = True Then
                    Call Rodape(objPrint, Ratio, intPage, intMaxPages)
                    Exit Do
                End If
            End With
        Next dblrow
        Call Rodape(objPrint, Ratio, intPage, intMaxPages)
        If ynPrev = True Then
            Exit Do
        End If
    Loop
End Function



Function openClient() As Boolean
    On Error GoTo erroOpenClient:

    Set var_sql = bancodedados.OpenRecordset("SELECT [ProcessoD].operacao, [ProcessoD].setor, [ProcessoD].maquina, [ProcessoD].pecahora, [ProcessoD].tempopreparo, [ProcessoD].horastrab, Processo.codprocesso, Processo.processo, Processo.produto, Processo.cliente, Processo.material FROM Processo INNER JOIN [ProcessoD] ON Processo.codprocesso = [ProcessoD].codprocesso Where [ProcessoD].codprocesso = " & Text1.Text)
'var_sql = "SELECT [ProcessoD].operacao, [ProcessoD].setor, [ProcessoD].maquina, [ProcessoD].pecahora, [ProcessoD].tempopreparo, [ProcessoD].horastrab, Processo.codprocesso, Processo.processo, Processo.produto, Processo.cliente, Processo.material FROM Processo INNER JOIN [ProcessoD] ON Processo.codprocesso = [ProcessoD].codprocesso Where [ProcessoD].codprocesso = " & txtcodigo.Text

    openClient = True
   

Exit Function

erroOpenClient:

    MsgBox Err.Number & ": " & vbCr & Err.Description, vbCritical
    openClient = False

End Function


Private Sub Rodape(objPrint As Object, Ratio As Double, Pag As Integer, Pags As Integer)

    On Error Resume Next

    objPrint.PaperSize = vbPRPSA4
    objPrint.Line (1.5, 27.5)-(19, 27.55), 0, BF

    With objPrint

        .Font = "Arial"
        .FontSize = 10 * Ratio
        .CurrentY = 27.7
        .CurrentX = 1.8
        objPrint.Print "Relatório impresso em: " & Format(Now, "dd/mm/yyyy")
        .CurrentY = 27.7
        .CurrentX = 17.5
        objPrint.Print Pag & " de " & Pags

    End With

End Sub

   
RARS
AMERICO BRASILIENSE
SP - BRASIL
ENUNCIADA !
Postada em 05/03/2008 17:27 hs            
Leandro por favor verifique o Do Until..pois eu vejo q a var_sql recebe neste caso 7 registros e por isso imprime.. 7 vexes..pq vc chama as rotinas dentro do do until tenta modificar ele para q  chame as rotinas de Cabecalho e rodape fora do Do Until e chame somente dentro do DO until as rotina sobre os registros filhos.. no caso de mudanca do pai sai do do until..meio cconfuso neh????
 
Qualquer coisa berra...
 
 
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página