Domingo 22 de Diciembre de 2024, 18:07
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Informe de Access con Visual?
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Informe de Access con Visual? (Leído 8234 veces)
ebolo
Miembro MUY activo
Mensajes: 188
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
Tweet
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Informe de Access con Visual?
«
Respuesta #1 en:
Viernes 28 de Noviembre de 2003, 08:58 »
0
http://foros.solocodigo.com/viewthread.php?tid=4804
ebolo
Miembro MUY activo
Mensajes: 188
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
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
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
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.
Me falta otro emoticono dándose con un martillo a la cabeza, pero a falta de pan buenas son tortas
EL Loco
Nuevo Miembro
Mensajes: 11
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
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
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
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
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
SELECT * FROM PERSONAL
WHERE Month([Fecha Nacimiento]) = 9
El uso que haces del carácter comodín
%
es incorrecto, en todo caso debería ser algo así como:
Código: Text
SELECT * FROM PERSONAL
WHERE [Fecha Nacimiento] like '%/09/%'
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
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
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
Re: Informe de Access con Visual?
«
Respuesta #12 en:
Miércoles 28 de Enero de 2004, 00:18 »
0
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
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
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Informe de Access con Visual?