Access - Criterios de consulta

 
Vista:

Criterios de consulta

Publicado por yanira (140 intervenciones) el 28/11/2006 15:46:10
Tengo una consulta en access que en uno de los campos llamado DOCUMENTO recibe como criterio [Formularios]![ReasignaFecha]![NumDocumento]

Esa misma consulta en el campo DOCUMENTO recibe como criterio [Formularios]![Genera Documentos]![NumDocumento]

Si utilizo or para los criterios cuando estoy en el formulario ReasignaFecha me pide el dato del formulario Genera Documentos o visceversa, entonces me toco guardar la consulta dos veces con distintos nombres segun el criterio que necesito.

No es posible hacer esto de otra forma para no tener dos consultas sino una sola
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

Utilizar consulta parametrizada con múltiples formularios

Publicado por Alejandro (4142 intervenciones) el 28/07/2023 19:58:04
Sí, Yanira, es posible hacerlo de otra forma para evitar tener dos consultas separadas. Puedes utilizar una consulta parametrizada en Access y pasar el criterio desde el código VBA del formulario según corresponda.

Aquí te muestro cómo hacerlo:

1. Abre la consulta en modo diseño y en el criterio del campo "DOCUMENTO", coloca el siguiente criterio parametrizado:

`Forms!NombreFormulario!NumDocumento`

Asegúrate de reemplazar "NombreFormulario" con el nombre del formulario que contiene el campo "NumDocumento".

2. Desde el código VBA del formulario "ReasignaFecha" donde ejecutas la consulta, agrega el siguiente código para establecer el parámetro y luego abrir la consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub TuBoton_Click()
    Dim db As Database
    Dim qdf As QueryDef
    Dim strNumDocumento As String
 
    strNumDocumento = Me!NumDocumento ' O el control de donde obtienes el valor NumDocumento
 
    Set db = CurrentDb()
    Set qdf = db.QueryDefs("NombreConsulta") ' Reemplaza "NombreConsulta" con el nombre de tu consulta
 
    qdf.Parameters("Forms!ReasignaFecha!NumDocumento") = strNumDocumento
    DoCmd.OpenQuery "NombreConsulta"
End Sub

3. Desde el código VBA del formulario "Genera Documentos" donde ejecutas la misma consulta, agrega el siguiente código similar para establecer el parámetro y luego abrir la consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub TuBoton_Click()
    Dim db As Database
    Dim qdf As QueryDef
    Dim strNumDocumento As String
 
    strNumDocumento = Me!NumDocumento ' O el control de donde obtienes el valor NumDocumento
 
    Set db = CurrentDb()
    Set qdf = db.QueryDefs("NombreConsulta") ' Reemplaza "NombreConsulta" con el nombre de tu consulta
 
    qdf.Parameters("Forms!Genera Documentos!NumDocumento") = strNumDocumento
    DoCmd.OpenQuery "NombreConsulta"
End Sub

De esta manera, utilizas una sola consulta y pasas el parámetro "NumDocumento" desde el formulario correspondiente antes de ejecutar la consulta. El criterio parametrizado se reemplazará con el valor del campo "NumDocumento" del formulario que estés usando en ese momento.

Espero que esta solución te sea útil para evitar tener dos consultas separadas y utilizar una sola consulta parametrizada en Access. ¡Buena suerte!
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