La Web del Programador: Comunidad de Programadores
 
    Pregunta:  92 - COMO UTILIZAR UN INFORME DE ACCESS EN VB 5.
Autor:  Alexis
Les escribo porque tengo un problema al cual le estoy dando vueltas y no logro salir de el, he creado unos reportes en el manejador de base de datos MS ACCESS, pero esos reportes (informes) de ACCESS (la data también está en Access)los necesito imprimir desde Visual Basic 5.0. He estado leyendo los Helps de ambos programas pero no he encontrado como levantar informes, VB50 me permite levantar Tablas y Consultas pero no Informes; en ACCESS me dicen que lo haga con "DoCmd", pero VB50, no lo reconoce.
Si podrían solucionarme el problema les agradeceré mucho.

  Respuesta:  nabina nabina
Dim strRuta As String
dim objAccess as Object

set objAccess = CreateObject(\"Access.Application\")

strRuta = \"c:\\AcessListados\\listados.mdb\"
objAccess.OpenCurrentDatabase(strRuta)
objAccess.DoCmd.OpenReport(\"NombreListado\", acViewPreview)
objAccess.DoCmd.Maximize
objAccess.Application.Visible = True
objAccess.CloseCurrentDatabase()
set objAccess = Nothing

Eso te servirá

  Respuesta:  Jesús Dorta
Prueba este código, aunque es para VB 4.0 y Acces 97 no deberías tener problemas con VB 5.0
Dim objAccess As Ogject
´Modo de presentar la información.
´Sería interesante meterlo en un módulo de
´constantes. Para el ejemplo vale así
Const acViewDesing=0 ´Modo diseño
Const acViewNormal=1 ´Modo impresión directa
Const acViewPreview=2 ´Modo preview

´Creamos el objeto
Set objAccess=CreateObject("access.application.8")

´Abrimos la BB.DD que nos interesa
objAccess.OpenCurrentDatabase "TuBaseDatos.mdb"

´Lanzamos el informe que nos interesa.
´El formato del método es:
´Aplication.DoCmd.OpenReport,,,
objAccess.DoCmd.OpenReport "NombreInforme",acViewPreview

´Hacemos visible la ventana access
objAccess.Visible=True

MsgBox "Haga clic en aceptar para cerrar Access"


  Respuesta:  Juan Carlos Gilarranz
Esto lo he cogido de las consultas mas frecuentes de Microsoft.
Una posible alternativa sería utilizar un Formulario de Access para almacenar la variable que se desea pasar desde Visual Basic, es decir, la que contendrá el título del informe. Una vez abierto dicho Formulario, se abriría el Informe, el cual podría acceder a la variable del Formulario e imprimir con el título correspondiente. Para hacer esto se deberá crear un Formulario en Access y en el evento ´Al abrir´ se debe introducir :
stitulo = openargs
donde stitulo es una variable del formulario que contendrá el título pasado desde Visual Basic. Al abrir el formulario, como último parámetro se le indicaría este valor. El código de Access seria:
OpenForm Formulario1,0,,,,2, mititulo
donde mititulo sería la variable de Visual Basic. Una vez abierto el Formulario en Access que ya contiene el título pasado desde Visual Basic, el segundo paso sería abrir el informe en Access, en cuyo evento ´Al activar´ debería tener el siguiente código:
Me!texto10.caption = stitulo
donde texto10 es el objeto de encabezado de página del informe y donde se asigna el valor de la variable del Formulario. El código de Access para abrir el informe seria :
OpenReport Informe1,2
Como último paso, se debe cerrar el Formulario para que al imprimir el informe una segunda vez, no se mantenga el valor anterior de la variable. El código de Access seria:
Close 2,Formulario1
En Visual Basic, deberá crear un proyecto nuevo y en el Formulario incluir un TextBox y un CommandButton. En el evento Click del botón introduzca el siguiente código de Visual Basic:
Dim mititulo As String
Text1.LinkTimeout = 600
Text1.LinkTopic = "MSACCESS|SYSTEM"
Text1.LinkMode = 2  ´Establece un enlace DDE manual con Access 2.0
mititulo = "Titulo de prueba"
Text1.LinkExecute "[OpenForm Formulario1,0,,,,2," & mititulo & "]"
Text1.LinkExecute "[OpenReport Informe1,2]"
Text1.LinkExecute "[Close 2,Formulario1]"
Text1.LinkMode = 0 ´Termina la conexión DDE con Access 2.0
Para probar el proyecto, deberá cargar Access 2.0 con la Base de datos que contenga el Formulario y el Informe abierta.