Access - Abrir formularios relacionados indirectamente

 
Vista:

Abrir formularios relacionados indirectamente

Publicado por oretania (12 intervenciones) el 23/08/2006 13:21:25
Un ploblemilla:

Tengo un formulario "Proyectos" al que estan asociados unas "Partidas".A su vez cada partida puede estar asociada a muchos "contratos", y un contrato asociado a muchas partidas. Tengo una tabla que asocia ambas, llamada "Partidas-contratos".

Mi problema es que quiero acceder desde el formulario "Proyectos" a otro "Contratos" teniendo en cuenta lo anterior, es decir, que me salgan todos los contratos asociados a aquellas partidas del proyecto en el que estoy, pero no me aclaro con el 'link criteria' que deberia poner, esta es mi solución, pero me da fallo:

stLinkCriteria =
"Principal![ID_PROYECTO]= & Me![ID_PROYECTO]AND
Principal![ID_PARTIDA]=Partida_Contrato![ID_PARTIDA] AND
Partida_Contrato![ID_CONTRATO]=Contratos![ID_CONTRATO]"

DoCmd.OpenForm "Contratos", , , stLinkCriteria

Que falla aqui? Es correcta la forma de seleccionar mediante conectores AND? O se debe hacer la seleccion sobre cada seleccion?

Muchas gracias, de nuevo.
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
Imágen de perfil de Alejandro

Filtrar contratos asociados a partidas de un proyecto específico en formulario "Contratos"

Publicado por Alejandro (4142 intervenciones) el 24/07/2023 22:52:50
Para enlazar correctamente los contratos asociados a las partidas de un proyecto específico en el formulario "Proyectos", necesitas realizar una consulta que involucre las tablas "Proyectos", "Partidas", "Partidas-contratos" y "Contratos". Luego, utilizar el formulario "Contratos" para mostrar los resultados filtrados por el proyecto y las partidas asociadas.

A continuación, te presento la solución:

1. Crea una consulta que relacione las tablas "Proyectos", "Partidas", "Partidas-contratos" y "Contratos". En la consulta, asegúrate de incluir los campos que necesitas para mostrar los contratos, como "ID_CONTRATO" y otros detalles relevantes.

2. Guarda la consulta y nómbrala, por ejemplo, "ConsultaContratosPorProyecto".

3. En el formulario "Proyectos", crea un botón o evento que abra el formulario "Contratos" filtrado por el proyecto y las partidas asociadas. Puedes hacerlo con el siguiente código en el evento clic del botón:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub btnVerContratos_Click()
    Dim stLinkCriteria As String
 
    ' Obtener el ID del proyecto actual en el formulario "Proyectos"
    Dim proyectoID As Long
    proyectoID = Me![ID_PROYECTO]
 
    ' Crear el filtro para la consulta
    stLinkCriteria = "ID_PROYECTO=" & proyectoID
 
    ' Abrir el formulario "Contratos" filtrado por el proyecto y las partidas asociadas
    DoCmd.OpenForm "Contratos", , , stLinkCriteria
End Sub

4. En el formulario "Contratos", debes configurar el origen de registros para que utilice la consulta "ConsultaContratosPorProyecto". Para ello, ve a la vista de diseño del formulario "Contratos", haz clic derecho y selecciona "Propiedades" (Properties). En la sección "Origen del registro" (Record Source), ingresa el nombre de la consulta ("ConsultaContratosPorProyecto") que creaste en el paso 2.

5. Guarda los cambios en el formulario "Contratos".

Ahora, al hacer clic en el botón o evento del formulario "Proyectos", se abrirá el formulario "Contratos" mostrando solo los contratos asociados al proyecto y las partidas seleccionadas en el formulario "Proyectos".

Espero que esta solución te ayude a filtrar correctamente los contratos asociados a las partidas de un proyecto específico en Access. ¡Buena suerte con tu proyecto!
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