Imprimir MSFlexGrid en Visual Basic 6

Quizás mi duda te parezca fácil, pero para mi no lo es :(, necesito imprimir un MSFlexGrid cargado en pantalla a través de un botón.

3 Respuestas

Respuesta
1
A ver todas las dudas tienen su grado de dificultad.
Como no me has dicho como lo quieres imprimir, te diré dos formas de imprimir, la primera es utilizando la función "print" que lleva incorporado visual basic pero tendrías que saber utilizarlo bien y tienes que calentarte mucho la cabeza para distribuir los datos, la otra manera es usando lo más habitual en estos casos que es Crystal report.
Aquí va el código para que con un botón puedas imprimir el contenido:
'en mi caso yo utilizo una tabla a parte para realizar mis impresos,es decir copio la estructura de la tabla principal de donde realizo las consultas(si unes varias tablas tb funciona) y entonces realizo lo siguiente.
Private Sub Command2_Click()
'Borra todos los valores almacenados en la tabla utilizada para imprimir
Dim Borrar As Database
Set Borrar = OpenDatabase("v:\Conta\Conta.mdb")
Borrar.Execute "delete * from conta_imprimir"
Borrar.Close
'Inserta los valores de la consulta que queremos en la tabla para imprimir
Dim insertar As Database
Set insertar = OpenDatabase("v:\Conta\Conta.mdb")
'puedes poner cualquier consulta con condiciones
'aqui es donde se introduce la consulta,la cual mostrara los datos al msflexgrid y posteriormente los que se manden a Crystal.
Data8.RecordSource = "Select * from conta where codigo='" & Text1.Text & "'" & "and Fecha_apun=#" & DBCombo4.Text & "#"
Data8.Refresh
With Data8.Recordset
.MoveFirst
Do
'aqui es donde se insertan los datos de la consulta en la tabla creada "conta_imprimir" insertar.Execute "insert into conta_imprimir(Codigo,Titulo,Fecha_apun,Documento,Linea,Con,Comentario,D,Importe,Debe,Haber,Saldo)" & _
"values ('" & .Fields("Codigo") & "','" & .Fields("Titulo") & "','" & .Fields("Fecha_apun") & "','" & _
.Fields("Documento") & "','" & .Fields("Linea") & "','" & .Fields("Con") & "','" & _
.Fields("Comentario") & "','" & .Fields("D") & "','" & .Fields("Importe") & "','" & _
.Fields("Debe") & "','" & .Fields("Haber") & "','" & .Fields("Saldo") & "')"
.MoveNext
Loop Until .EOF
End With
insertar.Close
' ves que cada 3 nombre de campo bajo una linea y pongo otros 3,si tienes muchos campos para mandar a imprimir te recomiendo que lo hagas asi
'Manda a imprimir la tabla para imprimir
Data8.RecordSource = "select * from conta_imprimir"
Data8.Refresh
If Data8.Recordset.AbsolutePosition = -1 Then
MsgBox "NO HAY DATOS"
Else
imprimir
End If
End Sub
CrystalReport1.Action = 2 'accion de imprimir
End Sub
Bueno Espero que te ayude
Suerte y Saludos
Respuesta
1
Yo utilizo para imprimir informes Crystal Report y es super potente. En la instalación del Visual Basic viene Crystal Report 4.X con lo que podrás instalarlo en tu máquina y enlazar el Ocx con tu aplicación. Es bastante fácil de manejar y mira esta dirección para ver ayuda sobre Crystal:
http://guille.costasol.net/vb_crystal.htm
Para iniciarte está bien la versión de Crystal Report que viene con Visual Basic 5.0 pero te recomiendo que si te gusta este generador de informes te pases a una version mucho avanzada y por lo tanto más potente. Yo trabajo con la versión 8.0
Muchas gracias ´por tu respuesta pero yo decisti de usar el Crystal Reports 8 porque me daba muchos problema al empaquetar (con el de VB6)Así que prefiero imprimir con un MSFlexGrid y la función Print...
El MSFlexGrid esta conectado a un data para mostrar los datos de una tabla en access 97, osea lo conecto en la programación para que al cargar el formulario ya tenga el MSFlexGrid cargado, entonces tengo un botón Imprimir, el cual no lo se programa :(
Muchas Gracias por responderme!
¿De dónde coges los datos que cargas en el MSFlexGrid?.
Y no te preocupes por saber mucho o poco que aquí todos hemos pasado por ese camino y el saber más o menos es cuestión de cada uno.
Respuesta
1
Pues no es tan sencillo como parece.
EL control MSFlexGrid es un control que funciona vinculado a otro que contiene la información a ser visualizada. De esta forma el MSFlexGrid posee una propiedad DataSource en donde colocas el nombre de un control Data y dicho control Data contiene un conexión a una base de datos (creo que DAO, no estoy muy seguro) y el enlace bien sea a una tabla o una consulta en la propiedad RecordSource.
Bien hay varias formas de extraer esa información:
1.- Si tienes acceso a la base de datos y esta es Access puedes colocarte sobre la tabla o consulta vinculada al control data y exportarla como fichero Excel.
2.- Crear una referencia a Access en tu proyecto, crear una instancia de Access y exportar la tabla o consulta a través del comando docmd.
3.- Recorrer todo el contenido con un ciclo repetitivo y extraer la información.
Creo que la más acertada sería la opción 2, para lo cual necesitas como te he dicho una referencia a Access en tu proyecto. Luego en el código deberás hacer lo siguiente:
Dim objAccess as Access.Application
set objAccess = createObject("Access.Application")
objAccess.OpenAccessProject [nombre_base_de_datos]
objAccess.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, [nombre_tabla_o_consulta], [nombreFicheroExportar]
objAccess.CloseCurrentDatabase
set objAccess=nothing

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas