Access - Join de consultas en tiempo de ejecución

 
Vista:

Join de consultas en tiempo de ejecución

Publicado por torkhia (1 intervención) el 14/12/2004 11:10:09
Buenas. Mi duda es la siguiente; yo tengo varias consultas creadas en Access del tipo "mostrar alumnos por sexo,edad,asignaturas,etc...". Me gustaría saber si hay alguna forma de combinar esas consultas sólo pasándole el nombre de las dos consultas que quiero que me combine y que el programa me haga el join automáticamente, sin tener yo que crear una consulta en concreto. Tipo "CONSULTA 1" JOIN "CONSULTA 2" y no usando el INNER JOIN dentro de una consulta, porque entonces tengo que crear una consulta específica para cada caso que se me ocurra.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
Imágen de perfil de Alejandro

Combinar consultas sin crear consultas específicas

Publicado por Alejandro (4142 intervenciones) el 19/05/2023 23:18:28
En Access, puedes combinar consultas sin tener que crear consultas específicas para cada caso utilizando consultas SQL dinámicas. Esto te permite pasar el nombre de las dos consultas que deseas combinar como parámetros y generar la consulta resultante mediante código VBA. A continuación, te proporciono un ejemplo de cómo hacerlo:

1. Abre el Editor de Visual Basic en Access presionando Alt + F11.
2. En el Editor de Visual Basic, crea un nuevo módulo si aún no tienes uno.
3. En el nuevo módulo, escribe el siguiente código:

1
2
3
4
5
6
7
Function CombinarConsultas(nombreConsulta1 As String, nombreConsulta2 As String) As String
    Dim sql As String
 
    sql = "SELECT * FROM [" & nombreConsulta1 & "] INNER JOIN [" & nombreConsulta2 & "] ON [campo_comun]"
 
    CombinarConsultas = sql
End Function

4. Reemplaza `[campo_comun]` en el código con el nombre del campo común que se utilizará para realizar el join entre las consultas.
5. Guarda el módulo con un nombre significativo.

Ahora, puedes utilizar la función `CombinarConsultas` en cualquier parte de tu base de datos para generar la consulta resultante. Por ejemplo, puedes usarla en un formulario o en un informe. Aquí tienes un ejemplo de cómo utilizar la función en un botón de comando en un formulario:

1. Abre el formulario en modo de diseño.
2. Inserta un botón de comando en el formulario.
3. Haz doble clic en el botón de comando para abrir el editor de código del evento "Al hacer clic".
4. Escribe el siguiente código:

1
2
3
4
5
6
7
8
Private Sub btnCombinarConsultas_Click()
    Dim sql As String
 
    sql = CombinarConsultas("Consulta1", "Consulta2")
 
    Me.RecordSource = sql
    Me.Requery
End Sub

5. Reemplaza `"Consulta1"` y `"Consulta2"` en el código con los nombres de las consultas que deseas combinar.
6. Cierra el editor de código y guarda el formulario.

Cuando hagas clic en el botón de comando, se generará dinámicamente la consulta combinada utilizando la función `CombinarConsultas` y se actualizará el origen de registro del formulario.

Ten en cuenta que en el código proporcionado se utiliza un INNER JOIN como ejemplo, pero puedes ajustarlo según tus necesidades, como utilizar otros tipos de join (LEFT JOIN, RIGHT JOIN, etc.) o agregar condiciones adicionales a la cláusula WHERE.

Espero que esta solución te sea útil para combinar consultas en Access sin tener que crear consultas específicas para cada caso. ¡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