Access - abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

   
Vista:

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por JESUS (29 intervenciones) el 19/02/2016 15:43:33
Me explico lo que quisiera hacer si se puede:
Tengo un formulario F1 con un subforulario sF1 que depende de éste F1.
Desde un formulario F2, tras seleccionar un dato en una lista quisiera abrir el F1 con su sF1 en el registro del sF1 previamente seleccionado en F2.

Quizás algo farragoso.
He intendado varias formas pero no soy capaz en el caso de que se pueda.

De las últimas intentadas es ésta:

DoCmd.OpenForm "F1", , , "[DNI]='" & Me.Lista0.Column(1) & "'" 'Abro F1 según DNI

DoCmd.FindRecord Me.Lista0.Column(0), acEntire, , acSearchAll, , acAll

Con la segunda linea intento encontrar el registro en el subformulario, pero supongo que habría que tenerlo activo...........seleccionado o algo, como????????????????????


Ante todo, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por Enrique Heliodoro (1663 intervenciones) el 19/02/2016 16:06:39
Si hay una relación correcta entre el formulario y el subformulario, seleccionado un registro cualquiera del formulario principal, el subformulario mostraría los registros asociados.

Al abrir de esa forma el formulario 'F1' se le esta condicionando a que solo tenga ese único registro, si no presenta (en el subformulario) sus datos asociados, sera porque no hay asociación (dependencia) o esta es imprecisa y no se puede aplicar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por JESUS (29 intervenciones) el 19/02/2016 18:29:10
Las relaciones son correctas.
Quizas no me haya explicado bien. Formulario F1 procede de una tabla T1 y el subformulario sF1 procede de una tabla T2 con una relación T1 a T2= 1--->varias.
Al abrir el F1 me muestra el sF1 con sus diferentes registros dependientes de F1 pero, quiero que me muestre el registro elegido de la lista con el valor de la columna 0.
Es decir la lista de F2 tiene varias columnas la columna 0 son registros de sF1 y la columna 1 tiene valores de F1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por Enrique Heliodoro (1663 intervenciones) el 19/02/2016 20:01:47
Veamos si he captado bien el entorno:

Un formulario (AA) con un subformulario (AA-AA) que mantiene una relación de uno a varios correcta.

Un formulario (BB) en el que hay un combo y en una de sus columnas hay una referencia al formulario AA y en otra al formulario AA-AA

Se desea:

Desde BB abrir AA en un registro especifico (que indicara una columna del combo) y que una vez abierto, en su subformulario se seleccione el registro que coincida con la otra columna del combo ¿es correcto?.

Para AA el código indicado no debería ser un problema (mostraría el registro y sus relacionados en AA-AA)
Para ir en AA-AA al registro deseado se deberían cumplir algunas condiciones y la fundamental es que exista en ese conjunto.

Para desplazarse por el y 'hacerlo activo' una solución eficaz es utilizar su 'RecordsetClone' con dos misiones:
Verificar su existencia
Desplazarse 'fisicamente'

El código podría ser similar a este:

With Forms.[AA].[AA-AA].Form.RecordsetClone
.FindFirst "Campo de AA-AA = " & Me.Lista0.Column(0)
IF .Not NOMatch Then Forms.[AA].[AA-AA].Form.BookMark = .BookMark
End With

Utilizo With, para evitar repetir lo mismo en un monton de sitios
Lo que hace ese código es localizar (en la copia interna: RecordsetClone) el registro y de localizarlo, igualar un 'marcador interno' (BookMark) para desplazarse a el.

Eso exigiría que el formulario AA estuviera abierto, tal vez seria mas adecuado que ese código se ejecutase en el evento 'Load' del formulario llamado (AA), pero acontecería lo inverso, si no esta abierto BB daría error (en cualquier caso una verificación previa de si 'el otro esta activo', resuelve el problema).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de douglas

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por douglas (280 intervenciones) el 19/02/2016 21:04:47
Saludos tan solo tienes que crear un evento en el registro al hacer click en el id de tu lista del formulario uno y ponerle un macro

Abirformulario
nombre del formulario: el nombre del subsormulario
condición where=="[id]=&nz(id],0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por JESUS (29 intervenciones) el 20/02/2016 09:27:20
Muy buenas otra vez:
Enrique, mi primer código era:

Dim rst As Recordset

DoCmd.OpenForm "F1", , , "[DNI]='" & Me.Lista0.Column(1) & "'"

Set rst = Forms!F1IsF1.Form!.RecordsetClone
rst.FindFirst "Id=" & Me.Lista0.Column(0)

Donde F1 en explicación es AA y sF1 es AA-AA

Ëste código lo tenía en el formulario independiente F2 en el evente hacer doble click de la lista. Lista que obtengo a traves de una consultas de las tablas T1 y T2.

He probado con el tuyo y nada. Tanto con el tuyo que creo que es lo casi lo mismo se abre F1 con el subformulario sF1 y sus registros dependientes, pero soy incapaz de ir al registro especificado.


Anoche acabe tan, tan...... que esoy pensando en usar sólo un formulario en vez de formulario y subformulario y así simplificarlo.


Muchas gracias a todos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir subformulario en un registro con formulario desde un dato seleccionado en otro formulario

Publicado por Enrique Heliodoro (1663 intervenciones) el 20/02/2016 10:07:13
Con tu método localizas el registro y punto, con el que indico haces que el registro localizado (utilizando/igualando su propiedad BOOKMARK) sea el 'registro activo' de ese subformulario, ser el registro activo le fuerza a ser visible (en ese conjunto).

La o una forma de verificarlo es sencilla:
En los formularios continuos o en hoja de datos, aun que se presenten multitud de registros solo uno 'existe' el resto son producto de la magia de Access (son fantasmas), Access no es Excel en que los datos son los que son, en Access (en ese entorno de formularios continuos) solo existe un registro, el activo.
Una 'muestra palpable' de ello es el clásico de que si en un formulario continuo añadimos un campo independiente y le asignamos un valor, el valor se repite en todos ellos, para que no se produzca ese 'efecto' se debe generar el campo en el origen de datos y crear con el resto de los datos una 'relación de dependencia'.

En mi aportación, sino encuentra el registro 'no pasa nada' pero podemos verificar que si lo localiza si modificamos el IF:

Antes: IF .Not NOMatch Then Forms.[AA].[AA-AA].Form.BookMark = .BookMark

Después:
IF .Not NOMatch Then
Forms.[AA].[AA-AA].Form.BookMark = .BookMark
Else
MsgBox "No se localizo un registro en el subformulario que cumpla esa condicion"
End IF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar