
imprime datos en blanco
Publicado por Miguel Angel (1 intervención) el 02/09/2014 05:35:58
Hola, tengo un problema. Al crear un informe, pongo dos subformularios dentro para imprimir dos recibos de pagos tipo factura, logre conseguir por este medio código en VB para fijar el número de registros de cada recibo, con la intención de imprimir en formatos impresos. En la vista preliminar aparece muy bien lo que quiero imprimir pero al salir por la impresora los registros de mi recibo aparecen en blanco como si no hubiera datos, y también quise exportar a formato PDF y también salen los registros en blanco, este es el código que puse en la sección detalle en el evento imprimir. Llevo varios días y no paso de aquí, les agradecería su apoyo.
Private Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)
Dim lngRegistros As Long, lngTotalLineas As Long
lngRegistros = Nz(Me.CuentaID, 0)
lngTotalLineas = 7
'Stop
Call ControlLíneas(Me, lngRegistros, lngTotalLineas)
End Sub
Public Sub ControlLíneas(rptInforme As Report, registros As Long, TotalLineas As Long)
On Error GoTo detalle_err
'Stop
Dim ctrl As Control
Dim iUltimafila As Integer
Static iFilas As Integer
iUltimafila = fColumna(registros, TotalLineas)
If rptInforme.Page = rptInforme.Pages Then ' Entonces estamos en la última página
iFilas = iFilas + 1
If (iFilas >= iUltimafila) And (iFilas < TotalLineas) Then
If iFilas > iUltimafila Then
For Each ctrl In rptInforme.Section(acDetail).Controls
If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
'Or ctrl.ControlType = acCheckBox
ctrl.ForeColor = ctrl.BackColor
End If
Next
End If
rptInforme.MoveLayout = True
rptInforme.NextRecord = False
rptInforme.PrintSection = True
End If
Else
iFilas = 0
' Nos aseguramos de que el texto de los controles sea visible. Esta parte
' sería más eficiente en el evento Page, pero aquí está mejor encapsulada
For Each ctrl In rptInforme.Section(acDetail).Controls
If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
'Or ctrl.ControlType = acCheckBox
ctrl.ForeColor = 0
End If
Next
'Stop
End If
saldedetalle:
Exit Sub
detalle_err:
If Err = -2147352567 Then
Resume Next
Else
Resume saldedetalle
End If
End Sub
Public Function fColumna(item As Long, Columnas As Long)
fColumna = 1 + ((item + Columnas - 1) Mod (Columnas))
End Function
.
Private Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)
Dim lngRegistros As Long, lngTotalLineas As Long
lngRegistros = Nz(Me.CuentaID, 0)
lngTotalLineas = 7
'Stop
Call ControlLíneas(Me, lngRegistros, lngTotalLineas)
End Sub
Public Sub ControlLíneas(rptInforme As Report, registros As Long, TotalLineas As Long)
On Error GoTo detalle_err
'Stop
Dim ctrl As Control
Dim iUltimafila As Integer
Static iFilas As Integer
iUltimafila = fColumna(registros, TotalLineas)
If rptInforme.Page = rptInforme.Pages Then ' Entonces estamos en la última página
iFilas = iFilas + 1
If (iFilas >= iUltimafila) And (iFilas < TotalLineas) Then
If iFilas > iUltimafila Then
For Each ctrl In rptInforme.Section(acDetail).Controls
If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
'Or ctrl.ControlType = acCheckBox
ctrl.ForeColor = ctrl.BackColor
End If
Next
End If
rptInforme.MoveLayout = True
rptInforme.NextRecord = False
rptInforme.PrintSection = True
End If
Else
iFilas = 0
' Nos aseguramos de que el texto de los controles sea visible. Esta parte
' sería más eficiente en el evento Page, pero aquí está mejor encapsulada
For Each ctrl In rptInforme.Section(acDetail).Controls
If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
'Or ctrl.ControlType = acCheckBox
ctrl.ForeColor = 0
End If
Next
'Stop
End If
saldedetalle:
Exit Sub
detalle_err:
If Err = -2147352567 Then
Resume Next
Else
Resume saldedetalle
End If
End Sub
Public Function fColumna(item As Long, Columnas As Long)
fColumna = 1 + ((item + Columnas - 1) Mod (Columnas))
End Function
.
Valora esta pregunta


0