|
Responder
|
| Autor | |
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Tema: Tabla referencia cruzadaEnviado: 20/Febrero/2022 a las 13:51 |
|
Buenas. Tengo un formulario (F_Estadistica) con dos campos independientes de fecha (vfechadesde, vfechahasta), desde el cual me abre otro formulario basado en una tabla dinámica dentro del periodo indicado. Ahora al pasarlo a 64 bits, debo hacerlo con una tabla de referencia cruzada. Hasta aquí todo bien, si en Criterios de la consulta de referencia cruzada le indico una fecha concreta. Pero si en Criterios de la consulta de la tabla de referencia cruzada le indico que me busque el período de los dos campos (vfechadesde, vfechahasta), me aparece el error: Se ha producido el error '3070' en tiempo de ejecución: El motor de base de datos de Microsoft Access no reconoce '[Formularios]![F_Estadistica]![vfechadesde]' como un nombre de campo o expresión válidos. Alguna sugerencia. Resumiendo: deseo ejecutar la tabla de referencia cruzada basándose en el valor de los campos vfechadesde y vfechahasta. Gracias y un saludo.
Editado por Nomada - 20/Febrero/2022 a las 13:54 |
|
![]() |
|
lupecinda
Habitual
Unido: 22/Abril/2005 Localización: España Estado: Sin conexión Puntos: 155 |
Enviado: 24/Febrero/2022 a las 14:05 |
|
Hola. Si lo haces por vba con Forms!Mainform!ControlName te reconoce el campo? El campo está en el formulario F_Estadistica o dentro de un subformulario? Saludos Carlos
|
|
|
Lupita
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Enviado: 26/Febrero/2022 a las 12:22 |
|
Buenas. Ambos campos (vfechadesde y vfechahasta) están en el formulario. Son campos independientes. Lo que deseo es introducir la fecha en los campos y que ejecute la tabla de referencia cruzada, no tener que abrir la consulta para introducir los valores. Gracias.
|
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 26/Febrero/2022 a las 17:40 |
|
Lo que deberías es abrir la consulta en modo diseño y volver a poner ese criterio de manera que veas si se produce algún cambio entre tu versión anterior de 32 bits y la nueva de 64.
Por otro lado siempre te queda el truco de utilizar una función que devuelva el valor del campo al criterio de la función. Yo lo utilizo para poder pasar valores almacenados en variables. Si tuviera que hacerlo para devolver valores de controles lo haría con una función genérica: Algo así (en un módulo independiente) Public Function DameUnValor(strNombreFormulario As String, strNombreCampo As Sgtring) As Variant DameUnValor = Forms(strNombreFormulario).Controls(strNombreCampo).Value End Function Y en la consulta escribiría en los criterios el nombre de la función con los argumentos necesarios. Ejemplo: DameUnValor("F_Estadistica"; "vfechadesde") Un saludo |
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Enviado: 10/Abril/2022 a las 14:08 |
|
Buenas Xavi. Con la primera solución, al tratarse de un formulario basado en una tabla dinámica con formulario único, en 64 bits solo muestra datos de registro a registro. Esto no me sirve. La segunda solución si funciona, pero como y donde pondría el campo independiente vfechahasta que falta? Gracias |
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 10/Abril/2022 a las 21:01 |
|
Pues igual que cualquier otra condición Entre:
Entre DameUnValor("F_Estadistica";"vfechadesde") Y DameUnValor("F_Estadistica";"vfechahasta")
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Enviado: 11/Abril/2022 a las 07:16 |
|
Gracias. Eso ya lo tengo hecho en la consulta, me refiero a la función. Cómo la elaboro? Un saludo.
|
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 11/Abril/2022 a las 08:57 |
|
Perdona pero no te entiendo... en mi mensaje ya hay una función llamada DameUnValor.
Lo único que puede pasar es que, para este caso concreto, debas realizar alguna conversión/formateo del resultado para que la consulta entienda que es una fecha. |
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Enviado: 11/Abril/2022 a las 17:07 |
|
Veamos. La función sería: Public Function DameUnValor(strNombreFormulario As String, strNombreCampo As Sgtring) As Variant DameUnValor = Forms(strNombreFormulario).Controls(strNombreCampo).Value End Function Dónde van los campos vFechaDesde y vFechaHasta? Gracias |
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 11/Abril/2022 a las 17:30 |
|
¿Tu has probado la función? Porque verías qué pide y qué devuelve. Entendiendo eso verías que se puede utilizar en cualquier momento con los argumentos adecuados. Entre DameUnValor("F_Estadistica";"vfechadesde") Y DameUnValor("F_Estadistica";"vfechahasta") Máximo tendrás que trabajar el formato de fechas... pero entiendo que lo tienes más que asumido. Un saludo
|
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Enviado: 11/Abril/2022 a las 18:30 |
|
Después de probar la función, me dice que el número de argumentos es incorrecto. Al tratarse de dos campos, vFechaDesde y vFechaHasta, entiendo, que la primera línea de la sintaxis de la función sería: Public Function DameUnValor(F_Estadistica As String, vFechaDesde As String, vFechaHasta as String) As Variant pero no entiendo cómo elaborar la siguiente línea: DameUnValor = Forms(strNombreFormulario).Controls(strNombreCampo).Value pues si cambio strNombreCampo por vFechaDesde, dónde añado vFechaHasta |
|
![]() |
|
lunasoft
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Habitual
Unido: 04/Noviembre/2014 Localización: Graz Estado: Sin conexión Puntos: 100 |
Enviado: 12/Abril/2022 a las 18:59 |
|
Yo lo he entendido del siguiente modo.
1. Escribe la función de Xavi tal y como te la escribió 2. En los criterios de la CONSULTA (los cuadros en blanco que están abajo de cada valor que quieres mostrar, debajo de orden), en el campo fecha(supongo) llamas a la función que te dice Xavi escribiendo: Entre DameUnValor("F_Estadistica";"vfechadesde") Y DameUnValor("F_Estadistica";"vfechahasta") |
|
|
Juanjo Luna (Lunasoft)
Microsoft MVP 2023 ---------------- https://www.luna-soft.es/ https://www.youtube.com/ACCESSoTOTAL https://github.com/ACCESSoTOTAL |
|
![]() |
|
Nomada
Colaborador
Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1759 |
Enviado: 02/Septiembre/2023 a las 12:24 |
|
Gracias a todos. Este hilo se puede cerrar.
|
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |