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
|
|
|