SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Gerard en Lunes 1 de Septiembre de 2003, 21:42
-
Hola amigos, hace unos dias estoy buscando un buen manual para utilizar los reportes de acces, pero no encontrado ninguno que sea interesante. ¿ Alguien tiene un buen manual para crear informes en acces ?, también he buscado sobre crystal, pero prefiero acces.
Gracias! :beer::adios:
-
:hola:He encontrado uno de interesante:
http://www.aulaclic.com/access2002/t_12_1.htm (http://www.aulaclic.com/access2002/t_12_1.htm)
Pero, ese manual no cubre del todo mis necesidades. Como puedo mostrar desde vb el informe? Como le puedo conectar a un informe mas de una tabla, como puedo realizar filtros en un informe?
Espero que me ayuden,:):adios:
-
Para imprimir el informe desde vb fíjate en este ejemplo:
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Function Imprimir(ByVal Formato As String, ByVal Filtro As String _
, Optional ByVal VistaPrevia As Boolean) As Boolean
On Error GoTo Error_Imprimir
Dim sngMouseP As Single
sngMouseP = Screen.MousePointer
Screen.MousePointer = 11
DoEvents
Dim dbW As Object
Set dbW = GetObject("BaseDeDatos.mdb")
If VistaPrevia Then ShowWindow dbW.hWndAccessApp, 3
On Error Resume Next
dbW.UserControl = False
On Error GoTo Error_Imprimir
Dim int1 As Integer
If VistaPrevia Then int1 = 2 '2 = acViewPreview , 0 = acViewNormal
If dbW.Reports.Count = 0 Then
dbW.DoCmd.OpenReport Formato, int1, , Filtro
Else
Dim lng1 As Long
For lng1 = 0 To dbW.Reports.Count - 1
If dbW.Reports(lng1).Name = Formato Then
dbW.Reports(Formato).Filter = Filtro
GoTo Exit_Fn
End If
Next lng1
dbW.DoCmd.OpenReport Formato, int1, , Filtro
End If
Exit_Fn:
Imprimir = True
Salir_Imprimir:
On Error Resume Next
If Not VistaPrevia Then
dbW.Quit
Else
dbW.DoCmd.Maximize
dbW.UserControl = True
End If
Set dbW = Nothing
Screen.MousePointer = sngMouseP
Exit Function
Error_Imprimir:
MsgBox "Fallo al imprimir informe '" & Formato & "'" & String(2, vbCrLf) _
& "(" & Err.Number & ") " & Err.Description, vbCritical, "Imprimir"
VistaPrevia = False
Resume Salir_Imprimir
End Function
Con respecto a lo de tener varias tablas como origen de registro para tu informe, utiliza como origen de registro para el informe (propiedad RowSource) una consulta de access o instrucción SQL.
Espero que esto te vaya bien.
Sort.
-
Gracias por el manual Gerard:) Es justo lo que estaba buscando:gracias:
-
Gracias Brroz, voy a provar tu codigo, en cuanto lo haga te informare si funciona;)
Salu2 y gracias :adios:
-
El codigo que me distes no lo entiendo mucho:(. Por favor, ya se que es pedir mucho, pero podrias pasar un ejemplo?
Para que no tengas que hacer el reporte, te paso mi BD, así solo deberas hacer lo de vb.
Espero que me ayuden, me urge:)
-
Hola Gerard.
Acabo de probar el código tal cual con el informe de tu bd y funciona sin problemas. El único cambio que tuve que hacer, por supuesto, es la línea donde dice 'Set dbW = GetObject("BaseDeDatos.mdb")' donde reemplacé la ruta y nombre de la base de datos: 'Set dbW = GetObject("C:RutaMy_bd.mdb"). Si a ti no te funciona, cuéntame cúal es el fallo que te da.
Me imagino que la parte de código que no entiendes es la del bucle For...Next que recorre los INFORMES ABIERTOS de la base de datos comparando el nombre. Pues bien, lo tuve que hacer así para evitar errores y aplicar correctamente el filtro en el caso de que Access y el informe ya estuvieran abiertos.
Básicamente el código abre Access mediante automatización, asigna a dbW una referencia a la base de datos, y utiliza el objeto DoCmd tal como lo harías desde Access.
A ver si se te aclara un poco más el tema.
Chao.
-
Brroz, mandame un ejemplo sencillo que al pulsar un command se carge el informe;)
Se que es pedirte mucho:( pero es q no acabo de entenderlo. Gracias.
Salu2 :adios:
-
Hola Gerard
Disculpa la tardanza pero es que ando liado...
Te adjunto el ejemplo que me pedías, espero que te sirva.
Sort.
-
Gracias Brroz, pero hay un problema:
Al hacer la vista previa del informe, sale la ventana de Acces, con el titulo "Informe 1" pero todo el fondo de color gris. (puedes verlo en el screen). No se a que se debe:( Pero si se puede imprimir sin hacer la vista previa.
Espero que me puedan ayuda;):) :good::adios:
Screenshot:
(http://www.iespana.es/solocodigo/acces.jpg)
-
Supongo que me crees si te digo que a mi me funciona perfectamente... La diferencia puede estar en que yo utilizo Access97. A ver si encontramos el problema...
Chao.
-
Hola de nuevo.
¿Probaste el ejemplo con la bd que tú adjuntaste, o has utilizado otra?
Bueno, realmente 2 preguntas:
¿Que access utilizas?
Deu.
-
He probado directamente de la BD que hay en el ejemplo. Por cierto, tengo acces 2002, pero el formato de la BD es de acces 97.
Espero encontrar solución:)
Salu2 y gracias Brroz :good: :adios: