** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Problema con un informe
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoProblema con un informe

 Responder Responder Página  12>
Autor
Mensaje
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Tema: Problema con un informe
    Enviado: 20/Agosto/2015 a las 03:21
Parece sencillo el título verdad. Pues a mi me está costando horas. Os cuento...

Tengo una base de datos con una tabla llena de campos (texto, fecha, datos adjuntos y memo) y dos formularios, uno de entrada de datos y otro de consulta.

El formulario de consulta tiene tres campos en el encabeza que me permiten seleccionar el campo por el que deseo buscar con un combobox, introducir la cadena de texto que quiero buscar con un campo de texto, y, por último, seleccionar el registro que me interesa en un listbox que me muestra los registros coincidentes con mis criterios de búsqueda. Hasta aquí todo correcto.

Llegados a ese punto, hago una consulta en mi formulario, y mediante un botón INFORME que he creado en el formulario me dispongo a ejecutar el informe del registro seleccionado y obtener una presentación de lo que será el documento que posteriormente imprimiré. Y aquí empieza el problema.

Para hacer esa llamada al informe he creado una consulta donde he añadido todos los campos de mi formulario (excepto el de datos adjuntos), con una condición para que me busque los datos en el formulario ([Formularios]![Formulario_busqueda]![Expediente]). Pues bien, yo que me creía tan feliz...

El problema viene en que al ejecutar el informe este no me muestra nada. E indagando, indagando, me he dado cuenta que el problemilla está en que hay registros que tienen campos vacíos, y cuando encuentra un campo vacío, no muestra nada en el informe. Es decir, el informe me sale con las etiquetas pero los campos están todos vacíos, incluso los que si tienen valor, todos.

He dado ya varias vueltas, he probado a poner otra condición más a cada campo de la consulta, la condición "Nulo", poniendo "Nulo", poniendo "EsNulo", con y sin comillas, etc. En fin, que me estoy volviendo loco y no consigo que mi informe me entregue los resultados, mostrando los datos oportunos en los campos que los tienen y dejando el campo vacío en los que no tienen nada.

Bueno, ahí va otro reto más. Muchas gracias a todos de antemano por la ayuda prestada.

Un saludo.
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 03:35
Prueba con esto

<>EsNulo([Nombre de mi campo])

o también

Not Isnull([Nombre de mi campo]) ''aunque esto creo que te lo traducira al castellano y ten pondrá
algo parecido a lo de arriba.

viene a decir, todos los que sean distiento de nulos.

Ya comentas.
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 03:40
¿Has comprobado que la consulta, por si sola, te devuelve registros?
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 13:30
Hola Miralles, gracias por la respuesta.

No, la consulta por si sola, no devuelve registros. Por eso pienso que el problema está en la consulta. La cuestión es que es un proceso complejo, porque es un informe que pide datos a una consulta que a su vez pide datos a un formulario que está pidiendo datos a una tabla. En fin, un poco galimatías.

Bueno, voy a probar lo que me dices y ahora te cuento.

Muchas gracias.
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5419
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 14:47
Hola buenas tardes.

Yo creo que seguramente "eres tu el que lo ha complicado" hscnet.

Mi consejo es que "tu mismo (que eres el que sabe lo que tienes)" trates de hacerlo simple, incluso diría yo que lo deberías hacer con el asistente.

Quiero decir que deberías hacerlo de tal modo que fuera "simple total", de tal manera que mediante el asistente de Access te saliera.

Por lo tanto te recomiendo que empieces a partir de cero.

Saludos
Gracias
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 15:35
Buenas tardes a todos,
yo comparto totalmente la opinión de Vicente, partiría de cero la consulta con el asistente.

Luego para que puedas comprobar si los parametros que le vas a pasar con el formulario haria las siguientes comprobaciones:

Por ejemplo, en el caso que queramos filtrar en:

 el campo IDx(campo numérico) con un Combobox(columna dependiente también Numérico) del formulario haria lo siguiente,

en CRITERIOS de la consulta escribiría un parámetro de esta forma
       [Introduce un valor:] y ejecutas la consulta.

Al ejecutar te saldra un Inputbox que te dirá Introduce un valor entonces introduces el valor que tu crees que tendría el combobox del formulario, y comprueba que te da los registros que te devería dar, y así haciendo todos los filtros uno a uno hasta que tengas la consulta como tu quieras.

Recuerda que si haces filtros de cadena tienes que introducirlos entre comillas, las fechas entre # etc.

Una vez que la tienes como tu quieres, vas quitando los parametros de prueba y los sustituyes por los del formulario.

Ya nos dices







Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5713
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 15:39
Hola!

No lo tomes a mal, llevas tres hilos abiertos y no has cerrado ninguno, deberías acabar cada tema y asi no dispersas tus esfuerzos.
Un Saludo.
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 16:35
Y sobre todo evitar esto (cuando menos suena un poco raro):
Publicado originalmente por hscnet hscnet escribió:

Bueno, ahí va otro reto más.
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 17:09
Hola de nuevo a todos. Muchas gracias por la colaboración y el esfuerzo. 

Voy por partes.

La consulta la hice con el asistente ayer, si no recuerdo mal. Es decir que es reciente y la he hecho de la forma más sencilla posible. Mi problema es que no conozco VBA ni SQL y me cuesta mucho entender la sintaxis si no me la explican. Y, por desgracia, no tengo tiempo material para cogerme manuales de estos lenguajes y ponerme a estudiar. Pero, desde luego, me prometo a mi mismo ponerme a hacerlo en cuanto me quede libre.

Por otro lado, no entiendo muy bien lo que me quieres decir, Miralles. Por lo que yo entiendo la solución que me propones me preguntaría con un cuadro de dialogo cuando la ejecute. Tengo unos 40 campos, si una vez que esté usándolo tengo que ir contestando a 40 campos de diálogo para que me muestre el informe, me da algo. No lo veo muy operativo. Corrígeme, por favor, si me equivoco, pero eso es lo que he entendido.

Y para terminar, Mounir, llevas razón, tengo abiertos ya tres hilos. Créeme, los otros los tengo prácticamente zanjados, pero todos son de la misma aplicación. No los he querido cerrar por si me surge alguna duda más al respecto. Prometo cerrarlos cuando haya terminado todo.

Estoy convencido que estoy muy cerca de la solución (igual me equivoco pero creo que el problema está en los nulos). Tengo una consulta de prueba muy sencilla, con muy pocos campos y en la que estoy trabajando para luego, cuando encuentre la solución, implementarla en mi consulta principal. He encontrado un vídeo en Youtube que define perfectamente lo que me pasa y propone para un siguiente vídeo la solución. He buscado ese siguiente vídeo y no lo he encontrado, ni yo, ni cualquiera de las personas que han comentado el vídeo. He mandado un mensaje al autor del vídeo a ver si puede darme la solución. En los comentarios del mismo, también hay propuesta otra forma de hacer la consulta (utilizando LIKE), aseguran que funciona; pues yo debo ser muy torpe porque no he sido capaz. Os dejo el enlace del vídeo por si alguien quiere echarle un vistazo. 


Muchas gracias a todos y perdonad si os estoy dando el coñazo. Hacía mucho tiempo que no tocaba el Access y me he encontrado con este foro donde he encontrado mucha colaboración. Por eso me he atrevido a preguntar. Os reitero mi agradecimiento y espero que continúe ahí, en la medida de vuestras posibilidades, vuestra colaboración desinteresada, a pesar de mi torpeza y mi falta de conocimiento.

Un saludo.

EDITADO: Dejo el enlace a la página del vídeo porque parece que el directo no funciona.


Editado por hscnet - 20/Agosto/2015 a las 17:12
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 18:25
Publicado originalmente por hscnet hscnet escribió:

Por otro lado, no entiendo muy bien lo que me quieres decir, Miralles. Por lo que yo entiendo la solución que me propones me preguntaría con un cuadro de dialogo cuando la ejecute. Tengo unos 40 campos, si una vez que esté usándolo tengo que ir contestando a 40 campos de diálogo para que me muestre el informe, me da algo. No lo veo muy operativo. Corrígeme, por favor, si me equivoco, pero eso es lo que he entendido.




Lo has entendido a medias,
  •   al poner un parámetro en Criterios [Introduce un valor:] cuando ejecutes la consulta te pedirá ese parámetro, bien, lo que te propongo es que lo vayas poniendo todos los parámetros uno a uno y ejecutandolo uno detrás de otro, para que puedas comprobar que tu consulta funcione.
  • Una vez comprobado que funcionan todos los parámetros, los sustituyes por los del formulario.
    •  Por ejemplo, suponemos que tenemos un formulario llamado "frmMiFormulario"
    • en ese formulario tenemos un combobox llamado "cboMiCombo"
    • Ahora vamos a la consulta y borramos el parámetro [Introduce un valor:] y lo sustituimos por Forms!frmMiFormulario!cboMiCombo, esto lo puedes hacer con el generador de expresiones y te saldría algo así: Formularios!frmMiFormulario!cboMiCombo
El generador de expresiones es un asistente donde puedes selecionar el formulario donde tienes que filtrar y los campos.

 Forms! hace referencia a un formulario abierto, si ejecutas la consulta y el formulario está cerrado te pedira los paramámetros uno a uno, tal y como te he comentado para hacer las comprobaciones.


te dejo unos link para que puedas estudiar VBA y SQL para access.

http://siliconproject.com.ar/neckkito/index.php/manuales

http://mvp-access.com/foro/curso-de-access-y-vba_forum19.html

https://www.google.es/#q=manual+sql+para+vba+access


Y este con Video tutoriales.

https://www.youtube.com/results?search_query=pildorasinformaticas+access


Si tienes alguna duda más solo tienes que exponerla.

Suerte.


Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 19:00
Ok. Muchas gracias por todo. Voy a revisar la opción de la consulta y te cuento.

Un saludo.
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 19:45
Hola de nuevo Miralles. Muchas gracias pero, no ha funcionado. Te cuento...

Vamos por partes. PRIMERO CON LOS FILTROS DEL FORMULARIO
Tengo tres filtros consecutivos: COMBOBOX, TXTBOX y LISTBOX. El último, el que ya define el registro que selecciono es el LISTBOX (no es un COMBOBOX). Te lo digo por si influye en algo el hecho de que no sea un COMBOBOX.

SEGUNDO, EL CRITERIO QUE YO ESTABA UTILIZANDO, LA DIFERENCIA CON EL QUE TU ME HAS DADO Y EL RESULTADO
Yo estaba utilizando un criterio muy parecido, pero pasándole el nombre del campo donde estaba el dato que debía coincidir, es decir en vez de "[Formularios]![Formulario_busqueda]![lstResultado]" (sin las comillas) que es el LISTBOX que me filtra el resultado, como tu me has dicho, yo le pasaba "[Formularios]![Formulario_busqueda]![Titular]" que como te digo es el nombre del campo donde está el dato coincidente.
En definitiva, el resultado, el mismo. Me hace la consulta/informe perfecto pero cuando encuentra campos vacíos deja todo en blanco, como si no hubiera nada.

TERCERO, DOS APRECIACIONES (DUDAS). La primera, el campo, el que contiene el dato coincidente, el que yo estaba usando, es un campo con formato texto (no sé si esto tiene algo de especial). Y la segunda, los valores de Campo y Tabla que he puesto en la consulta son el campo de la tabla y la tabla de los que quiero encontrar el dato, es decir, el campo "Titular" (sin las comillas) de la tabla "Datos". Entiendo que esto es correcto y debe ser así.

POR ÚLTIMO, UNA COSA MÁS (OTRA POSIBILIDAD QUE ME HAN OFRECIDO). Consultando por Internet he encontrado otra posible solución a este problema, pero ando un poco liado. Te cuento...
Es la posibilidad de usar la función SiInm que según tengo entendido es para crear expresiones condicionales o booleanas. El caso es que he estado consultado la función en la documentación en línea de Microsoft y me ha parecido una buena idea, con posibilidades de darme el resultado que yo quiero. Pero...
He tropezado otra vez con la sintaxis. Por un lado, en la documentación oficial de Microsoft dice que, dentro de una consulta, ha de usarse como valor de Campo, no como Criterio, y por otro lado, mirando por Internet, lo he encontrado para usar como Criterio (además los comentarios de Internet usan sintaxis que a mi me da errores). En fin, estoy hecho un lío. Dejo los enlaces que he encontrado a ver si me puedes echar una mano.






Bueno, nuevamente muchas gracias por tu paciencia y tu colaboración.

Un saludo.
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 20:02
Hola de nuevo Miralles.

Hay otra información que también encontré por Internet y que se pasó antes. En ésta ofrecen la posibilidad de hacerlo con un Criterio de consulta LIKE, pero tampoco me funciona. No sé si la sintaxis está bien.

En ella indican simplemente que se ponga como criterio de consulta 

Como "*" & Formularios!Formulario!Texto3 & "*"

Donde entiendo que "Texto3" es el campo del formulario. Pero no entiendo los ampersand (&), no sé para que sirven ni tampoco las comillas y los asteriscos. Ahí me pierdo.

Gracias otra vez.
Arriba
jmmiralles Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 29/Noviembre/2008
Localización: Albacete-España
Estado: Sin conexión
Puntos: 569
Enlace directo a este mensaje Enviado: 20/Agosto/2015 a las 21:07
Lo primero te aconsejo que te leas esto, te aclará mucho, es respecto a los criterios de consultas en access, esto es esencial saberlo para poder ir mas profundo, porque si no no aprenderás solo copiaras y pegaras.

http://support.office.com/es-co/article/Ejemplos-de-criterios-de-consulta-08029ed5-39f1-4900-88e3-ab473b16d94e


http://www.ufasta.edu.ar/wp-content/uploads/6-Consultas.pdf



En las consultas, los filtros que utilizamos como cadenas (un nombre, ciudad, etc) siempre van entre comillas por ejemplo = "Madrid "

Las fechas entre # 20/08/2015#

Los números no llevan nada = 5

El & aspersam es un concatenador, es decir, une elementos.

Un combobox o lixtbox practicamente es lo mismo, salvo que uno necesita mas espacio que otro, uno solo vemos un registro y lo tenemos que desplegar (combobox) y el lixtbox está desplegado.

Lo importante es saber en su columna dependiente, la que normalmente no vemos, que en su ancho de columna lo tenemos a 0cm; que tipo de dato es, puede se número, texto etc, y en función a esto en los criterios de la consuta lo ponemos con comillas o no.


La funcion SiInm (Expresion, Verdadero, Falso)

Lo que te dice es, Evalua una expresion y si es verdadera entonces filtra los valores que tenemos en el primer campo, en caso contrario filtra por el segundo.

En tu caso sería algo así:

Como (SiInm(Esnulo([Formularios]![Formulario_busqueda]![lstResultado]);"*";([Formularios]![Formulario_busqueda]![lstResultado])))

Aqui lo decimos es, si la expresión es nula, entonces saca todos los registros(*) y si no es nulo saca los que coincidan con la expresión, más menos.


Es muy importante que estudies un poco en los enlaces que te hemos pasado o en otros, piensa que para correr primero tenemos que saber andar y antes gatear.



Editado para poner su función SiInm.


Suerte




Editado por jmmiralles - 20/Agosto/2015 a las 21:20
Saludos desde un lugar de la Mancha

Visita Mi Web

http://jmmirallesortega.wix.com/accessyvba<
Arriba
hscnet Ver desplegable
Nuevo
Nuevo


Unido: 15/Agosto/2015
Localización: Madrid
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 29/Agosto/2015 a las 18:37
Hola de nuevo a todos.  He estado unos días dedicado a otra cosa y he dejado el tema de Access aparcado. La verdad es que continúo con mi problema así es que he decidido, como ya me apuntabais algunos, rehacer todo casi desde el principio e ir probando. Cada vez estoy más convencido que mi problema está en los campos de filtrado que tengo en el encabezado del formulario. Creo que estos, por alguna cuestión que ahora mismo se me escapa, impiden que se envíe a la consulta la información que se solicita y como consecuencia de esto la consulta aparece vacía (y el informe también).

Bueno, continúo con mi problemilla. Ya os iré informando.

Muchas gracias. Un saludo.


Editado por hscnet - 29/Agosto/2015 a las 18:39
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable