Como se hace un reporte
¿Cómo se hace un reporte de lo que tengo en mi forma desde Visual Basic 6.0 y ese mismo reporte mandarlo a imprimir?
Gracias de antemano
Gracias de antemano
1 Respuesta
Respuesta de kieleze
1
1
kieleze, Estudio ingenieria en sistemas, estoy en 3º año
Este tema no lo tengo muy visto...
Pero te paso algo que hice con unos compañeros...
Lo que hace es imprimir los valores del recordset
Private Sub cmdImprimir_Click()
Const TOP_MARGIN = 1400
Const LEFT_MARGIN = 1400
Dim bottom_margin As Single
Dim db As Database
Dim qdef As QueryDef
Dim qdefCuenta As QueryDef
Dim qdefCaso As QueryDef
Dim rsCuenta As Recordset
Dim rsCaso As Recordset
Dim rs As Recordset
Dim dbname As String
Dim imprimeCuentas As String
Dim imprimeCasos As String
Dim BeginPage, EndPage, NumCopies, i
' Establecer CancelError a True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' Presentar el cuadro de diálogo Imprimir
CommonDialog1.ShowPrinter
' Obtener los valores seleccionados por el usuario en el cuadro de diálogo
BeginPage = CommonDialog1.FromPage
EndPage = CommonDialog1.ToPage
NumCopies = CommonDialog1.Copies
DoEvents
'Open the database.
dbname = bdPath
Set db = OpenDatabase(dbname)
' Get the records.
Set qdef = db.CreateQueryDef("", "SELECT clientes.cod_cliente, clientes.ape_cliente, clientes.nom_cliente, tpo_doc.dsc_tpo_doc, clientes.nro_doc, clientes.tel_cliente, clientes.dir_cliente, localidades.cod_localidad, localidades.nom_localidad FROM tpo_doc INNER JOIN (localidades INNER JOIN clientes ON localidades.cod_localidad = clientes.cod_localidad) ON tpo_doc.tpo_doc = clientes.tpo_doc WHERE clientes.cod_cliente = " & txtIngresoCodigoCliente.Text & ";")
Set rs = qdef.OpenRecordset(dbOpenSnapshot)
'--------cuenta---------
Set qdefCuenta = db.CreateQueryDef("", "SELECT cuentas.cod_cliente, cuentas.cod_cuenta, cuentas.fec_ini_cuenta, cuentas.fec_fin_cuenta, est_cuentas.dsc_est_cuenta, cuentas.mon_estimado, empleados.nom_empleado, empleados.ape_empleado FROM est_cuentas INNER JOIN (empleados INNER JOIN cuentas ON empleados.cod_empleado = cuentas.cod_empleado) ON est_cuentas.cod_est_cuenta = cuentas.cod_est_cuenta WHERE cuentas.cod_cliente = " & variableTempCodigoCliente & ";")
'Set qdefCuenta = db.CreateQueryDef("", "SELECT cuentas.cod_cuenta, cuentas.fec_ini_cuenta, mon_estimado, cuentas.fec_fin_cuenta, empleados.nom_empleado,empleados.ape_empleado,est_cuentas.dsc_est_cuenta, servicios.dsc_servicio FROM servicios INNER JOIN (est_cuentas INNER JOIN (empleados INNER JOIN cuentas ON empleados.cod_empleado = cuentas.cod_empleado) ON est_cuentas.cod_est_cuenta = cuentas.cod_est_cuenta) ON servicios.cod_servicio = cuentas.cod_servicio WHERE cuentas.cod_cliente = " & variableTempCodigoCliente & ";")
Set rsCuenta = qdefCuenta.OpenRecordset(dbOpenSnapshot)
'--------caso-----------
Set qdefCaso = db.CreateQueryDef("", "SELECT casos.nro_caso, casos.fec_ini_caso, casos.fec_fin_caso, tpo_casos.tpo_caso, est_casos.dsc_est_caso, empleados.nom_empleado, empleados.ape_empleado, casos.dsc_problema FROM tpo_casos INNER JOIN (est_casos INNER JOIN (empleados INNER JOIN (cuentas INNER JOIN casos ON cuentas.cod_cuenta = casos.cod_cuenta) ON empleados.cod_empleado = casos.cod_empleado) ON est_casos.cod_est_caso = casos.cod_est_caso) ON tpo_casos.cod_caso = casos.cod_caso WHERE casos.cod_cuenta = " & codigocuenta & " ;")
'Set qdefCaso = db.CreateQueryDef("", "SELECT casos.nro_caso, casos.fec_ini_caso, casos.fec_fin_caso, est_casos.dsc_est_caso, casos.dsc_problema, empleados.nom_empleado FROM empleados INNER JOIN (tpo_casos INNER JOIN (est_casos INNER JOIN (cuentas INNER JOIN casos ON cuentas.cod_cuenta = casos.cod_cuenta) ON est_casos.cod_est_caso = casos.cod_est_caso) ON tpo_casos.cod_caso = casos.cod_caso) ON empleados.cod_empleado = casos.cod_empleado WHERE casos.cod_cuenta = " & codigocuenta & " ;")
Set rsCaso = qdefCaso.OpenRecordset(dbOpenSnapshot)
For i = 1 To NumCopies
' Código para enviar los datos a la impresora
' Read the data and print it.
'bottom_margin = Printer.ScaleTop + Printer.ScaleHeight - 1440
'rs.MoveFirst
Printer.CurrentY = TOP_MARGIN
Printer.CurrentX = 3000
Printer.Print "DATOS DEL CLIENTE" & vbTab & vbTab & "Fecha: "; Format$(Date) & vbTab & "hora: "; Format$(Time) & vbCr
Printer.CurrentX = LEFT_MARGIN
Printer.Print "---------------------------------------------------*---------------------------------------------------*---------------------------------------------------"
'############### DATOS DEL CLIENTE ###########################
Printer.Print "Codigo: "; Format$(rs!cod_cliente) & vbTab & "Tipo Doc: "; Format$(rs!dsc_tpo_doc) & vbTab & "Nro Doc: "; Format$(rs!nro_doc)
Printer.Print "Apellido: "; Format$(rs!ape_cliente) & vbTab & "Nombre: "; Format$(rs!nom_cliente)
Printer.Print "Localidad: "; Format$(rs!nom_localidad) & vbTab & "Codigo postal: "; Format$(rs!cod_localidad)
Printer.Print "Direccion: "; Format$(rs!dir_cliente) & vbTab & "Telefono: "; Format$(rs!tel_cliente)
Printer.CurrentX = LEFT_MARGIN
Printer.Print "---------------------------------------------------*---------------------------------------------------*---------------------------------------------------"
Printer.CurrentX = 3000
Printer. Print "DATOS CUENTA" & vbCr
rsCuenta.MoveFirst
Do While Not rsCuenta.EOF
Printer.CurrentX = LEFT_MARGIN
'---------------imprime una cuenta ---------------------
Printer.Print Format$(rsCuenta!cod_cuenta) & vbTab & Format$(rsCuenta!fec_ini_cuenta) & vbTab & Format$(rsCuenta!fec_fin_cuenta) & vbTab & Format$(rsCuenta!dsc_est_cuenta) & vbTab & Format$(rsCuenta!ape_empleado) & vbTab & Format$(rsCuenta!nom_empleado) & vbTab & Format$(rsCuenta!mon_estimado) & vbCr
Printer.Print vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; "casos de una cuenta"
Printer.Print vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; "================"; vbCr
'---------------Imprime los casos de una cuenta---------
rsCaso.MoveFirst
Do While Not rsCaso.EOF
Printer.Print Format$(rsCaso!nro_caso) & vbTab & Format$(rsCaso!fec_ini_caso) & vbTab & Format$(rsCaso!fec_fin_caso) & vbTab & Format$(rsCaso!tpo_caso) & vbTab & Format$(rsCaso!dsc_est_caso) & vbTab & Format$(rsCaso!ape_empleado) & vbTab & Format$(rsCaso!nom_empleado) & vbTab & Format$(rsCaso!dsc_problema)
rsCaso.MoveNext
Loop
rsCuenta.MoveNext
Loop
RsCuenta. Close
Rs. Close
Db. Close
' Finish printing.
Printer. EndDoc
Next i
Exit Sub
ErrHandler:
' El usuario ha hecho clic en el botón Cancelar
Exit Sub
End Sub
Se que no es mucho... pero por lo menos es algo para empezar...
Tienes que agregar el commondialog al formulario para que te permita imprimir
Pero te paso algo que hice con unos compañeros...
Lo que hace es imprimir los valores del recordset
Private Sub cmdImprimir_Click()
Const TOP_MARGIN = 1400
Const LEFT_MARGIN = 1400
Dim bottom_margin As Single
Dim db As Database
Dim qdef As QueryDef
Dim qdefCuenta As QueryDef
Dim qdefCaso As QueryDef
Dim rsCuenta As Recordset
Dim rsCaso As Recordset
Dim rs As Recordset
Dim dbname As String
Dim imprimeCuentas As String
Dim imprimeCasos As String
Dim BeginPage, EndPage, NumCopies, i
' Establecer CancelError a True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' Presentar el cuadro de diálogo Imprimir
CommonDialog1.ShowPrinter
' Obtener los valores seleccionados por el usuario en el cuadro de diálogo
BeginPage = CommonDialog1.FromPage
EndPage = CommonDialog1.ToPage
NumCopies = CommonDialog1.Copies
DoEvents
'Open the database.
dbname = bdPath
Set db = OpenDatabase(dbname)
' Get the records.
Set qdef = db.CreateQueryDef("", "SELECT clientes.cod_cliente, clientes.ape_cliente, clientes.nom_cliente, tpo_doc.dsc_tpo_doc, clientes.nro_doc, clientes.tel_cliente, clientes.dir_cliente, localidades.cod_localidad, localidades.nom_localidad FROM tpo_doc INNER JOIN (localidades INNER JOIN clientes ON localidades.cod_localidad = clientes.cod_localidad) ON tpo_doc.tpo_doc = clientes.tpo_doc WHERE clientes.cod_cliente = " & txtIngresoCodigoCliente.Text & ";")
Set rs = qdef.OpenRecordset(dbOpenSnapshot)
'--------cuenta---------
Set qdefCuenta = db.CreateQueryDef("", "SELECT cuentas.cod_cliente, cuentas.cod_cuenta, cuentas.fec_ini_cuenta, cuentas.fec_fin_cuenta, est_cuentas.dsc_est_cuenta, cuentas.mon_estimado, empleados.nom_empleado, empleados.ape_empleado FROM est_cuentas INNER JOIN (empleados INNER JOIN cuentas ON empleados.cod_empleado = cuentas.cod_empleado) ON est_cuentas.cod_est_cuenta = cuentas.cod_est_cuenta WHERE cuentas.cod_cliente = " & variableTempCodigoCliente & ";")
'Set qdefCuenta = db.CreateQueryDef("", "SELECT cuentas.cod_cuenta, cuentas.fec_ini_cuenta, mon_estimado, cuentas.fec_fin_cuenta, empleados.nom_empleado,empleados.ape_empleado,est_cuentas.dsc_est_cuenta, servicios.dsc_servicio FROM servicios INNER JOIN (est_cuentas INNER JOIN (empleados INNER JOIN cuentas ON empleados.cod_empleado = cuentas.cod_empleado) ON est_cuentas.cod_est_cuenta = cuentas.cod_est_cuenta) ON servicios.cod_servicio = cuentas.cod_servicio WHERE cuentas.cod_cliente = " & variableTempCodigoCliente & ";")
Set rsCuenta = qdefCuenta.OpenRecordset(dbOpenSnapshot)
'--------caso-----------
Set qdefCaso = db.CreateQueryDef("", "SELECT casos.nro_caso, casos.fec_ini_caso, casos.fec_fin_caso, tpo_casos.tpo_caso, est_casos.dsc_est_caso, empleados.nom_empleado, empleados.ape_empleado, casos.dsc_problema FROM tpo_casos INNER JOIN (est_casos INNER JOIN (empleados INNER JOIN (cuentas INNER JOIN casos ON cuentas.cod_cuenta = casos.cod_cuenta) ON empleados.cod_empleado = casos.cod_empleado) ON est_casos.cod_est_caso = casos.cod_est_caso) ON tpo_casos.cod_caso = casos.cod_caso WHERE casos.cod_cuenta = " & codigocuenta & " ;")
'Set qdefCaso = db.CreateQueryDef("", "SELECT casos.nro_caso, casos.fec_ini_caso, casos.fec_fin_caso, est_casos.dsc_est_caso, casos.dsc_problema, empleados.nom_empleado FROM empleados INNER JOIN (tpo_casos INNER JOIN (est_casos INNER JOIN (cuentas INNER JOIN casos ON cuentas.cod_cuenta = casos.cod_cuenta) ON est_casos.cod_est_caso = casos.cod_est_caso) ON tpo_casos.cod_caso = casos.cod_caso) ON empleados.cod_empleado = casos.cod_empleado WHERE casos.cod_cuenta = " & codigocuenta & " ;")
Set rsCaso = qdefCaso.OpenRecordset(dbOpenSnapshot)
For i = 1 To NumCopies
' Código para enviar los datos a la impresora
' Read the data and print it.
'bottom_margin = Printer.ScaleTop + Printer.ScaleHeight - 1440
'rs.MoveFirst
Printer.CurrentY = TOP_MARGIN
Printer.CurrentX = 3000
Printer.Print "DATOS DEL CLIENTE" & vbTab & vbTab & "Fecha: "; Format$(Date) & vbTab & "hora: "; Format$(Time) & vbCr
Printer.CurrentX = LEFT_MARGIN
Printer.Print "---------------------------------------------------*---------------------------------------------------*---------------------------------------------------"
'############### DATOS DEL CLIENTE ###########################
Printer.Print "Codigo: "; Format$(rs!cod_cliente) & vbTab & "Tipo Doc: "; Format$(rs!dsc_tpo_doc) & vbTab & "Nro Doc: "; Format$(rs!nro_doc)
Printer.Print "Apellido: "; Format$(rs!ape_cliente) & vbTab & "Nombre: "; Format$(rs!nom_cliente)
Printer.Print "Localidad: "; Format$(rs!nom_localidad) & vbTab & "Codigo postal: "; Format$(rs!cod_localidad)
Printer.Print "Direccion: "; Format$(rs!dir_cliente) & vbTab & "Telefono: "; Format$(rs!tel_cliente)
Printer.CurrentX = LEFT_MARGIN
Printer.Print "---------------------------------------------------*---------------------------------------------------*---------------------------------------------------"
Printer.CurrentX = 3000
Printer. Print "DATOS CUENTA" & vbCr
rsCuenta.MoveFirst
Do While Not rsCuenta.EOF
Printer.CurrentX = LEFT_MARGIN
'---------------imprime una cuenta ---------------------
Printer.Print Format$(rsCuenta!cod_cuenta) & vbTab & Format$(rsCuenta!fec_ini_cuenta) & vbTab & Format$(rsCuenta!fec_fin_cuenta) & vbTab & Format$(rsCuenta!dsc_est_cuenta) & vbTab & Format$(rsCuenta!ape_empleado) & vbTab & Format$(rsCuenta!nom_empleado) & vbTab & Format$(rsCuenta!mon_estimado) & vbCr
Printer.Print vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; "casos de una cuenta"
Printer.Print vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; "================"; vbCr
'---------------Imprime los casos de una cuenta---------
rsCaso.MoveFirst
Do While Not rsCaso.EOF
Printer.Print Format$(rsCaso!nro_caso) & vbTab & Format$(rsCaso!fec_ini_caso) & vbTab & Format$(rsCaso!fec_fin_caso) & vbTab & Format$(rsCaso!tpo_caso) & vbTab & Format$(rsCaso!dsc_est_caso) & vbTab & Format$(rsCaso!ape_empleado) & vbTab & Format$(rsCaso!nom_empleado) & vbTab & Format$(rsCaso!dsc_problema)
rsCaso.MoveNext
Loop
rsCuenta.MoveNext
Loop
RsCuenta. Close
Rs. Close
Db. Close
' Finish printing.
Printer. EndDoc
Next i
Exit Sub
ErrHandler:
' El usuario ha hecho clic en el botón Cancelar
Exit Sub
End Sub
Se que no es mucho... pero por lo menos es algo para empezar...
Tienes que agregar el commondialog al formulario para que te permita imprimir
- Compartir respuesta
- Anónimo
ahora mismo