• Viernes 3 de Mayo de 2024, 04:16

Autor Tema:  Re: Informe de Access con Visual?  (Leído 8058 veces)

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Informe de Access con Visual?
« en: Jueves 27 de Noviembre de 2003, 20:38 »
0
Hola.
Quiero lanzar desde un programa de VB un informe que tengo ya hecho en una base de datos de access.
Sé trabajar con las tablas, pero eso no sé como hacerlo.
¿Es posible hacerlo?, si se puede cómo.
Gracias anticipadas.

Saludos

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #1 en: Viernes 28 de Noviembre de 2003, 08:58 »
0

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #2 en: Viernes 28 de Noviembre de 2003, 10:38 »
0
Muchas gracis Brroz.
Cuando pones:
"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."
¿Cómo debo poner la propiedad RowSource?.
Con la instrucciones SQL no tengo problemas.

He encontrado otro código que también me lanza el informe pero sin filtrarlo, es decir que me pone todos los datos que obtiene de una consulta sin filtrar y yo quiero de los que me salen unos determinados.
No sé si me he explicado bien.
Saludos y muchas gracias.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #3 en: Viernes 28 de Noviembre de 2003, 14:47 »
0
Hola ebolo.

Para filtrar datos, asigna al parámetro 'Filtro' una cadena tal cual lo harias con SQL pero sin la palabra 'WHERE'. Por Ejemplo:

Campo1='Valor1' AND Campo2>=8888

Lo de RowSource venía a cuento de indicarle a Gerard cómo usar varias tablas. Me refería a la propiedad 'Origen de la fila' de los informes de Access.

Chao.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #4 en: Viernes 28 de Noviembre de 2003, 17:41 »
0
Muchas gracias de nuevo Brroz.
He decidico usar el código que pusiste porque me parece más completo.
He modificado este mensaje porque creía haberlo conseguido.
Lo del filtro lo entiendo, pero no hay manera.
Aún poniéndole la cadena del filtro me sigue sacando todos los valores de la consulta.
Lo que hago es lo siguiente:
Tengo un informe "InfPrueba" que saca sus datos de una consulta "ConPrueba"  con varias tablas relacionadas.
Yo quiero obtener el informe con los datos de los campos "Albarán"=1 y "Empresa"=1 de la consulta "ConPrueba", y pongo lo siguiente:
Filtro = "Albarán = 1 and Empresa = 1" ó
Filtro = "Tabla.Albarán=1 and Tabla.Empresa=1"
Call Imprimir (InfPrueba, filtro, true)
porque está en un módulo la función public para lanzar el informe.

No sé donde fallo, con los 2 filtros me sale lo mismo.
Llevo 2 dáis con ello y estoy que me subo por las paredes; sólo me falta eso para acabar sino acaba conmigo.

Saludos y gracias.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Informe de Access con Visual?
« Respuesta #5 en: Viernes 28 de Noviembre de 2003, 20:43 »
0
Por fin. Ahora sí.
Me faltaba un espacio; Todo el día con dolor de cabeza por culpa un espacio.
Gracias, as, as, as muchas.
Saludos.
:bravo:
Me falta otro emoticono dándose con un martillo a la cabeza, pero a falta de pan buenas son tortas :brickwall:

EL Loco

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #6 en: Lunes 26 de Enero de 2004, 03:00 »
0
Cita de: "Brroz"
http://foros.solocodigo.com/viewthread.php?tid=4804
:lightsabre:

Hola, por lo que he visto hay bastante movimiento por el foro
estoy necesitando informacion sobre impresion desde visual y a estas alturas
me da exactamente igual el medio que sea

trabajo con vb 6.0 , access 2000, Data environment y comandos
conozco sql server, por ahora el unico problema que tengo es a la hora de imprimir ya que no es el simple arrastrar comando al datareport
dado las consultas de sql

si sabes o tienes algun documento sobre el tema , te lo agradecere

gracias
El LOcO

Analista Programador
VB 6.0
Clipper
Pascal
SQL Server 2000

A las Ordenes

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #7 en: Lunes 26 de Enero de 2004, 14:35 »
0
Hola, te dejo un doc donde está el código de vb para lanzar un iforme de acces desde vb, aportado por Brroz y que yo completé sñolo un poco.
Saludos.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

EL Loco

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #8 en: Martes 27 de Enero de 2004, 01:47 »
0
Hola, Primero antes que nada gracias por la brevedad

2) Por amor de dios los Indetados PLEASE!!
3) Tuve que modificar un par de cosas y funciono
Pero!!!!
en mi caso es VB 6 SP 5 con Access 2000
ojo al dato, si es XP el SO  la referencia es Microsoft Access 10 Object library
aparte hay un tema lindo, NO MUESTRA EL INFORME sino que abre el ACCESS salvo que el ACCESS abierto de antemano, en ese caso muestra el informe sin problemas

Otro problema que tuve fue que no me permite hacer una consulta por mes
a decir por ej listar los cumpleaños del mes de setiembre donde la sentencia seria
mas o menos asi
SELECT * FROM PERSONAL WHERE [Fecha Nacimiento] like '%%/09/%%%%'

solo que yo ya tengo diseñada 1 consulta en acces donde le paso el mes por parametros pero tampoco funciona
AAAAAAAaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhh

Esto de los reportes me va a dejar maás loco todavia

A continuacion adjunto el codigo modificado
---------------------------------------------------------------------------------------
Option Explicit
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

' No se si es 1 tare de XP pero hay que tener el Acces Abierto
' si no esta abierto lo abre pero no carga el informe
' IMPORTANTE AGREGAR REFERENCIA Microsoft Access 8.0 Object library O SUPERIOR
' SE LLAMA ASI:
' Imprimir("Tu_informe_de_access", consulta2, True)
'Donde:
'    -" Tu_informe_de_access", es el nombre que le has dado al informe y que pasa 'como "Formato" al módulo.
'    -  consulta2, es el Filtro que le pasamos al módulo que lo usará para abrir el informe.
'    -  True o false, por si queremos vista previa ó no.


On Error GoTo Error_Imprimir

Dim sngMouseP As Single
sngMouseP = Screen.MousePointer
Screen.MousePointer = 11
DoEvents

Dim dbW, ObjAccess As Object

'(Estos 2 pasos siguientes se los añado yo porque sino no me abría la base de datos)
'Creamos el objeto

Set ObjAccess = CreateObject("access.application.10")
' CAMBIAR EL 10 POR LA VERSION Microsoft Access Object library QUE SE USE
'Si la base de datos fuera de access 2000 tendríamos que poner un 9, en vez de 8( que es para access 97).
'Abrimos la B.D. que nos interesa

'ObjAccess.OpenCurrentDatabase "BaseDeDatos.mdb" ' Da ERROR 7866 con esta linea

ObjAccess.OpenCurrentDatabase app.path & "\Tiradentes2.mdb"

Set dbW = GetObject(App.Path & "\Tiradentes2.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   'muy importante esta línea que se 'ponga como está, en el orden: "Formato", "int1" que es la vistaprevia, " " espacio en 'blanco,y  "Filtro" que es la consulta que le pasamos al módulo.
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

-----------------------------------------------------------------------------------
El LOcO

Analista Programador
VB 6.0
Clipper
Pascal
SQL Server 2000

A las Ordenes

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #9 en: Martes 27 de Enero de 2004, 09:16 »
0
En este código no es necesario agregar referencia de ningún tipo.

Con Set dbW = GetObject(App.Path & "\Tiradentes2.mdb") obtenemos la referencia necesaria a la base de datos (si es que existe, claro) en el objeto dbW, si la base de datos no está abierta, se crea una nueva instancia de la aplicación. Las variables de objeto están declaradas como object.
El 'CreateObject' y el 'OpenCurrentDatabase' sobran...

El código original esta probado satisfactoriamente con access97, pero recuerdo que a Gerard no se le abría la vista previa del informe (no sé como
lo solucionó al final), usaba wXp.

El bucle que comprueba si en los informes abiertos de la bd ya existe uno con igual nombre del que deseamos abrir, es necesario para el correcto funcionamiento del filtro (El valor de dbW.Reports.Count no indica el número de informes en la bd, como pudiera parecer, sino que muestra el número de informes abiertos en ese momento).

Loco:
referente a que no te funcione el SQL que indicas, te diré que es lógico...
Prueba una sentencia como esta:
Código: Text
  1.  
  2. SELECT * FROM PERSONAL
  3. WHERE Month([Fecha Nacimiento]) = 9
  4.  
  5.  
El uso que haces del carácter comodín % es incorrecto, en todo caso debería ser algo así como:
Código: Text
  1.  
  2. SELECT * FROM PERSONAL
  3. WHERE [Fecha Nacimiento] like '%/09/%'
  4.  
  5.  

El funcionamiento de los parámetros que se hubieran definido en la consulta o en el filtro del informe también está comprobado con access97.

Abur.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #10 en: Martes 27 de Enero de 2004, 09:33 »
0
EDITO: ya veo que se adelantado Brroz, que sabe mucho más que yo.

Hola de nuevo.
Yo lo uso tanto con wXP como con w2000 y access97 y me funciona sin problemas; NO necesito tener abierto el access para que me muestre el informe.
Eso me ocurría al principio y por eso le añadí:
----------------
Set ObjAccess = CreateObject("access.application.8")
'Si la base de datos fuera de access 2000 tendríamos que poner un 9, en vez de 8( que es para access 97).
'Abrimos la B.D. que nos interesa
ObjAccess.OpenCurrentDatabase "BaseDeDatos.mdb"
----------------
Has probado a ponerle el 9 en vez de 10.

En cuanto a la Referencia del proyecto, yo creo que no depende del s.o. y SÍ del access que vayas a usar; pero en ésto no estoy seguro.

En cuanto a la consulta debes pasarle, si la fecha de nacimiento es campo Fecha, pues así:" [Fecha Nacimiento]=#" & format(TuvariableFechanacimiento,"dd/mm/yyyy")  & "#" .
Le sobra el "Select .........". Es decir al filtro se le pasa sólo el campo de la consulta por el que se quiere discriminar y su valor.
Lo que puedes hacer para ver el filtro como te debe pasar al informe, es hacerte la consulta en access, ponerle en el diseño, el valor del criterio del campo con el que quieres discriminar la consulta, grabarla y lanzar el informe.
Luego en el informe vas a propiedades y miras como está el filtro; y según esté es como se lo debes pasar.

Saludos y suerte.
PD: yo no soy ningún experto, Si alguien del foro puede aclarar las dudas que han surgido creo que todos les estaremos agradecidos.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #11 en: Martes 27 de Enero de 2004, 11:12 »
0
Hola de nuevo.
Te dejo adjunto un ejemplo para que te funcione con wXP y access2000.
Mirar el leeme.txt antes.
Me ha funcionado sin problemas; usa un método papa ver visualización por pantalla y otro para imprimir el informe.
Es la única forma que le he hecho funcionar bien.
Saludos.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

EL Loco

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Informe de Access con Visual?
« Respuesta #12 en: Miércoles 28 de Enero de 2004, 00:18 »
0
:ph34r:  Holas gente!!

Comento 1 par de cosas la sentencia select que puse es a modo de EJEMPLO
lo que si tuve que hazer Brroz es cambiar la sentencia que usaba para el datagrid que es T-SQL y usar el sql de access

Voy a revisar de nuevo el codigo que paso Ebolo a ver que encuentro

Ebolo si pongo el Object Library 9 no me funciona porque yo tengo el 10
no tengo idea porque pero en fin , creo que nada tiene que ver con que sea accsess 97 o 2000 sino con que libreria tengas instalada.

Brroz lo de crear la consulta ya lo habia hecho y apartir de ahi cree el informe de accsess , y sin las lineas de ebolo no me funciona!

Una ultima cosa de momento solucione uno de los problemas que tenia de
la siguiente manera

1) creo un comando en el data environment , Dynamico y que devuelva un RS
2) Creo 1 datareport y lo vinculo al Comando
3) Como no se porque motivo no me lo filtra opte por cerrarlo
y abrirlo con cada sentencia select que necesito cuando le doy al boton Imprimir

 :devil:

Igualmente me sigue interesando el tema de Access

Gracias a Todos!!
El LOcO

Analista Programador
VB 6.0
Clipper
Pascal
SQL Server 2000

A las Ordenes