Como abrir un formulario que cumpla dos condiciones, siendo una de tipo texto y otra de tipo fecha

Quiero abrir el formulario de un alumno que cumpla dos condiciones. La expresión utilizada es la siguiente, pero me da el error "No coinciden los tipos". Creo que tiene que ver con que no escribo bien la sintaxis del campo fecha, pero no sé cómo se hace.

DoCmd.OpenForm "Alumnado", , , "[NIE_alumnado]=" & Me.NIE_alumnado And "[Fecha_inicio_demanda]=" & Me.Fecha_inicio_demanda

¿Qué está mal?

1 respuesta

Respuesta
2

Pues un par de cosas: las comillas dobles deben ir antes del AND, y las fechas deben ir entre almohadillas. Así:

DoCmd.OpenForm "Alumnado", , , "[NIE_alumnado]=" & Me.NIE_alumnado & " AND [Fecha_inicio_demanda]=#" & Me.Fecha_inicio_demanda & "#"

Saludos.


He puesto ese código pero, aunque no me da error, la ficha se abre en blanco. Por supuesto, el NIE y el fecha existen tanto en el formulario desde donde se hace la llamada, como en el formulario que se quiere abrir

Si NIE es un campo de texto, la instrucción será:

DoCmd.OpenForm "Alumnado", , , "[NIE_alumnado]='" & Me.NIE_alumnado & "' AND [Fecha_inicio_demanda]=#" & Me.Fecha_inicio_demanda & "#"

A ver si así te va.

El campo es tipo texto. En el formulario del alumnado hay filtros que se activan, pero creo que no debería afectar... Voy a ver si hay algún código que interfiera. Es lo único que se me ocurre. Haré pruebas y te comento.

Para que interfieran los filtros del formulario que abres, deberían estar en alguno de estos eventos: al abrir, al cargar o al activar registro, o bien tener configurada la propiedad "filtrar al cargar" en Sí.

Si me quieres mandar una copia de tu BD (con solo las tablas y formularios que intervienen en esta consulta) con un par de registros inventados, no me cuesta nada echarle una ojeada. Dímelo y te paso un correo

Efectivamente están en uno de esos tres eventos. Los voy a quitar, porque creo que no me hacen falta. Si aún así no funciona te pido el correo y te la mando. Ya te cuento cómo me va. Gracias.

He quitado todos los filtros, pero sigue sin funcionar. No sé si esto puede influir pero acabo de darme cuenta que:

- El campo [NIE_alumnado] está dentro de una tabla llamada "Alumnado".
- El campo [Fecha_inicio_demanda] está dentro de una tabla llamada "Alumnado_datos".

Ambas tablas están relacionadas de uno a infinito. En el origen de datos del formulario "Alumnado" hay una consulta SQL que tira de ambas tablas.

Eso no tiene que ver, pues en el origen de datos tienes los dos campos. Si no fuera así, te debería dar un error o salir una ventana pidiendo el valor de un parámetro.

Prueba a formatear la fecha a estilo americano, a ver si así te resulta:

DoCmd.OpenForm "Alumnado", , , "[NIE_alumnado]='" & Me.NIE_alumnado & "' AND [Fecha_inicio_demanda]=#" & Format(Me.Fecha_inicio_demanda,"mm/dd/yyyy") & "#"

Me da error: "No coinciden los datos de expresión de criterio". Creo que te voy a tener que pasar la base de datos como me dijiste.

[email protected] 

Envíala a esa dirección, comprimida en rar o zip, y con los elementos que intervienen en tu consulta, para que me sea fácil identificarlos.

No adjuntaste la BD en el correo...

Perdón, te la acabo de enviar ya.

No me llegó el archivo correctamente. Haz una cosa: súbelo a dropbox, onedrive...(si los usas), o usa http://filebig.net/ (es gratuito) y envíame el enlace para que lo descargue yo

Te acabo de enviar un enlace a onedrive. Gracias

Ahora sí! Mañana te digo algo.

Tras ojear tu BD solo puedo decirte que el filtro funciona correctamente y filtra según los datos que tiene el origen del formulario. En los casos en los que no te devuelve resultados es simplemente porque no hay registros que cumplan la condición del filtro.

Con los datos de la BD que me envías, la consulta origen del formulario "Alumnado" (el que quieres abrir filtrado) tiene solamente dos registros, con estos datos (a efectos del filtro):

NIE_alumnado | Nombre  | Fecha_inicio_demanda

3662517 | Alumno 1 | 09/01/2017

6762444 | Alumno 3 | 29/09/2017

En el formulario "Menu_alumnado1", tienes estos datos:

NIE | Alumnado | Fecha_inicio_demanda

3662517 | A1, Alumno 1 | 09/01/2017

3662517 | A1, Alumno 1 | 24/10/2016

3861763 | A2, Alumno 2 |25/10/2016

6762444 | A3, Alumno 3 | 29/09/2017

Con estos datos el filtro solo te funcionará con el primer y cuarto registro, que son los que cumplen las dos condiciones (marco en negrita).

Ahora bien, tal como lo mandas solo devuelve resultados para el alumno 3, por problemas de formato de fecha.

Si formateas la fecha a la americana, sí funciona perfectamente. Antes decías que te daba un error al hacerlo, así que imagino que algo no habrás escrito bien. A mí así me funciona perfectamente en tu BD:

DoCmd.OpenForm "Alumnado", , , "[NIE_alumnado]=" & Me.NIE_alumnado & " AND [Fecha_inicio_demanda]=#" & Format(Me.Fecha_inicio_demanda, "mm/dd/yyyy") & "#"

Saludos!


Respecto a la consulta del formulario "Alumnado", acabo de ver que tenía un criterio en un campo. Eso hacía que, de los cuatro, sólo apareciesen dos registros.

Sobre formatear la fecha a la americana, genial!. Ahora sí que funciona perfectamente. No sé por qué ocurre eso, pero me acabas de solucionar un problema que me traía en jaque durante un tiempo. Muchas gracias!!!!

Pues nada, me alegra haberte ayudado y sobro todo, que lo consiguieras solucionar.

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas