Abrir formulario filtrando registros desde un evento doble-click teniendo en cuenta el dato desde el que se activa

Tengo un Formulario A, con un Subformulario B, a su vez con varios campos y registros.

Necesito que al hacer doble-click en uno de los datos (dato X) del Subformulario B me abra un tercer Formulario C pero con una condición:

- Que uno de los campos (campo1) del Formulario C coincida con X

Para ello, he creado un evento de doble click en el que abro el formulario con la condición WHERE: [Formularios]![A]![Subformulario B].[Formulario]![X]=[C]![campo1]

No se qué estoy haciendo mal pero se abre el formulario pero vacío. A ver si alguien me puede echar una manita.

1 respuesta

Respuesta
1

Alberto: Si el Click o DobleClick lo haces desde el Formulario o SubFormulario que sea, si quieres tomar el valor de un cuadro de Texto de "el mismo", lo tienes que hacer como >> Me.

Algo parecido a ésto>>

DoCmd.OpenForm FormName:="FormC", WindowMode:=acDialog, WhereCondition:="IdEmpleado = " & Me.CboEmpleado.Column(0)

Esto partiendo de un Combo que tiene el IdEmpleado en su columna(0) Primera columna y además es numérico.

Si fuera Texto>>

DoCmd.OpenForm FormName:="FormC", WindowMode:=acDialog, WhereCondition:="Empleado = '" & Me.CboEmpleado.Column(0) & "'"

Si fuera Texto en un cuadro de Texto>>

DoCmd.OpenForm FormName:="FormC", WindowMode:=acDialog, WhereCondition:="Empleado = '" & Me.TxtEmpleado & "'"

Espero que con ésto se hayan disipadotus dudas. Saludos >> Jacinto

Gracias. Lo miraré este fin de semana más tranquilamente y metiéndome un poco en tema de código (estoy pez en eso).

Hola Jacinto. Gracias de nuevo por tu dedicación, pero soy un auténtico cero a la izquierda con el código.

Con tus indicaciones he generado la siguiente línea de código:

DoCmd.OpenForm (FormName:="Necesidad Formativa", wherecondition:= "Formacion Recibida" = "& Me."Formacion Realizada" & "", WindowMode:=acDialog)

Donde:

  • "Necesidad Formativa" es el formulario que quiero abrir
  • "Formacion Recibida" es el campo del formulario "Necesidad Formativa" que quiero comparar
  • "Formacion Realizada" es el campo del subformulario donde hago doble click que comparo con el anterior

Con esta línea me da error de sintaxis, pero no encuentro el error.

A ver si hay suerte y me puedes echar una manita.

Mil Gracias

Alberto: Estaré fuera hasta el día 2 o 3 de Abril. A mi vuelta miro éste tema y si no me has contestado que lo tienes resuelto, te Comento algo. Mis saludos >> Jacinto

Alberto: He abierto el PC para mirar el correo y aprovecho para ver si corrigiendo algo sales del atasco.

Veamos:

Sabes que arriba te comenté unas posibilidades. Una cuando era Texto y al no aclararme si Formación Realizada es texto voy a suponer que lo es.

DoCmd.OpenForm FormName:="FormC", WindowMode:=acDialog, WhereCondition:="Empleado = '" & Me.TxtEmpleado & "'"

Tu construcción que me citas se parece a ésta

DoCmd.OpenForm (FormName:="Necesidad Formativa", wherecondition:= "Formacion Recibida" = "& Me."Formacion Realizada" & "", WindowMode:=acDialog)

Con las siguientes excepciones:

1.- Paréntesis no debe llevar

2.-Cuando los Nombres de los Objetos son separados hay que encerrarlos en corchetes.

3.- Hay comillas sobrantes y otras omitidas

De éste modo la construcción sería:

DoCmd.OpenForm FormName:="[Necesidad Formativa]", WindowMode:=acDialog, WhereCondition:="[Formacion Recibida] = '" & Me.[Formacion Realizada] & "'"

Y si fuera Formacion Recibida y Realizada fueran Número>>

DoCmd.OpenForm FormName:="[Necesidad Formativa]", WindowMode:=acDialog, WhereCondition:="[Formacion Recibida] = '"& Me.[Formacion Realizada]

Si tus Objetos se llaman realmente así y copias la instrucción adecuada no debería darte problemas. Mis Saludos >> Jacinto

Gracias por tu esfuerzo y tu dedicación (sobre todo en vacaciones). Sigo teniendo algún problemilla pero creo que ya será fácil solventarlo. A ver si a la vuelta de vacaciones se te ocurre qué es lo que estoy haciendo mal.

Metiendo la sentencia directamente me da error porque dice que no reconoce el nombre del formulario (muy extraño). Por ver si me había colado, he probado abriendo otro formulario con otro nombre y no me va tampoco.

Lo que he hecho es meterme en el generador de macros para hacer lo mismo y... lo abre! Me abre bien el formulario (no se que podrá pasar con la expresión). He metido la condición en el campo correspondiente y... me sigue sin funcionar. Te cuento las variantes que he hecho y el resultado, a ver si así...:

  • A) Metiendo la condición tal y como tú la pones:

"[Formación realizada] = '" & Me.[Formacion realizada] & "'"

Resultado: Se me abre cuadro de diálogo pidiéndome el valor de: Me.Formacion realizada

Da igual el valor que meta (que coincida con algún registro o no, vacío o no), si le doy cualquier valor, me abre el formulario pero no filtra (me saca todos los registros).

Me pasa igual si meto la expresión que me diste para números (comprobado que son campos de texto, pero por si acaso he probado también)

  • B) Metiendo la misma condición en Filtro, en vez de en la condición WHERE:

No me sale el cuadro de diálogo, abre el formulario pero no me ejecuta el filtro (salen igualmente todos los registros).

  • C) Generando la condición mediante el propio generador de expresiones:

[Formularios]![Necesidad Formativa]![Formación realizada]=[Formularios]![Personas]![Subformulario Formacion].[Formulario]![Formacion realizada]

Resultado: me abre el formulario pero no accede a ningún registro (no hay ninguno que cumpla la condición dada).

Finalmente comentarte que he revisado todos los nombres de los campos y parecen estar bien. Los nombres correctos son:

  • Formulario que quiero abrir: "Necesidad formativa". En él está el campo: "Formación realizada" (si, con acento en la o, ya me he fijado. El resto van sin acento)
  • Formulario primario en pantalla desde el que ejecuto el doble click: "Personas". En él, tengo el subformulario: "Subformulario Formacion", que contiene el campo: "Formacion realizada" (campo en el que está asociado el evento doble-click).

No se qué más información te puedo dar. A ver si hay suerte...

Gracias de antemano de nuevo y disfruta de las vacaciones. Ya me contestarás a la vuelta cuando tengas un ratito

Disculpa las molestias Jacinto, pero cuando algo empieza mal... los fallos se van acumulando, se van poniendo parches y al final no hay manera de que funcione.

He re-hecho la BD desde cero (con una pequeña reestructuración de concepto) y me ha funcionado tu solución a la primera!!!

Mil gracias por tu paciencia.

Me ha surgido otra duda con la misma BD, pero la publico como pregunta separada ya que no tiene relación con el título de ésta.

Alberto: No te preocupes que no es molestia.

Aún sigo fuera, pero a diario abro el correo un par de veces y también miro en el Foro.

A partir del lunes, que ya estaré un poco mas dedicado veo lo que tengo pendiente tuyo y te contesto.

Si para entonces no has recibido respuesta a tu pregunta de dar de alta alumnos en cursos de forma rápida, le doy una mirada y te incluyo mi punto de vista.

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas