** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Usar variables en instrucción SQL
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoUsar variables en instrucción SQL

 Responder Responder
Autor
Mensaje
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Tema: Usar variables en instrucción SQL
    Enviado: 22/Mayo/2022 a las 11:58

Hola.

Tengo una tabla cuya estructura duplico cada año con docmd.copyobject
el nombre de la tabla varía con los 4 dígitos finales, que son el año, que previamente he metido en una variable de cadena vaño:

nombre_tabla= "nombre_" & vaño

cómo sustituyo las cláusulas FROM y WHERE de esta instrucción SQL con la variable nombre_tabla?

SELECT * FROM Empleados INNER JOIN nombre_2020 ON Empleados.[NOMBRE_COMPLETO] = nombre_2020.[TECNICO]

Es que no se bien cómo sería la sintaxis: si entre comillas simples, almohadillas...

Muchas gracias por vuestra ayuda
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14021
Enlace directo a este mensaje Enviado: 22/Mayo/2022 a las 12:23
¿Dónde usas esa sentencia? ... ¿en VBA?
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 22/Mayo/2022 a las 12:33
en VBA

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14021
Enlace directo a este mensaje Enviado: 22/Mayo/2022 a las 12:45
Pues por ejemplo:

NomTabla = "Nombre_" & format(Year(Fecha), "yyyy")  
o
NomTabla = "Nombre_2022"

y la SQL:
SQL = "SELECT .... FROM Empleados LEFT JOIN " & NomTabla & " LEFT JOIN Empleados.[NOMBRE_COMPLETO] = " & NomTabla & ".TECNICO"


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 22/Mayo/2022 a las 12:56
Muchas gracias!.
Mañana lo pruebo en el trabajo.
Un saludote!

Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 23/Mayo/2022 a las 09:38
Hola
Lo he probado, pero me da error de sintaxis en la cláusula FROM.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14021
Enlace directo a este mensaje Enviado: 23/Mayo/2022 a las 09:49
¿Y qué has puesto? ¿Y cómo?

Pon un punto de interrupción y comprueba la variable con la cadena SQL en la cadena inmediato.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 23/Mayo/2022 a las 13:20
Lo he puesto con y sin comillas, y de las dos formas me da error de sintaxis:

LA VARIABLE VEJERCICIO ES PÚBLICA Y VIENE DE UN FORMULARIO CON UN CUADRO COMBINADO QUE MUESTRA LOS DISTINTOS AÑOS
ÉSTE ES EL CÓDIGO DEL PROCEDIMIENTO:

    Dim nomConsulta, nomTabla
    nomConsulta = "Consulta_Master_exclusiones_" & vejercicio
    nomTabla = "Master_exclusiones_" & vejercicio


    Dim consulta As DAO.QueryDef
    
    For Each consulta In CurrentDb.QueryDefs
        If consulta.Name = nomConsulta Then

consulta.SQL = "SELECT * FROM &nomTabla& LEFT JOIN Empleados on &nomTabla&.[TECNICO]= Empleados.[Id]"
            
            Exit For
        End If
    Next consulta
    
    Set consulta = Nothing

PONIENDO COMILLAS TAMBIÉN DA ERROR:

consulta.SQL = "SELECT * FROM "&nomTabla&" LEFT JOIN Empleados on "&nomTabla&".[TECNICO]= Empleados.[Id]"

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14021
Enlace directo a este mensaje Enviado: 23/Mayo/2022 a las 13:30
Esto es parecido a lo de: "Encuentre las diferencias"

Esto has escrito tú:
"SELECT * FROM &nomTabla& LEFT JOIN Empleados on &nomTabla&.[TECNICO]= Empleados.[Id]"
"SELECT * FROM "&nomTabla&" LEFT JOIN Empleados on "&nomTabla&".[TECNICO]= Empleados.[Id]"

Esto es lo que he escrito yo:
"SELECT .... FROM Empleados LEFT JOIN " & NomTabla & " LEFT JOIN Empleados.[NOMBRE_COMPLETO] = " & NomTabla & ".TECNICO"

Mira la secuencia de comillas dobles, blancos, etc.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 23/Mayo/2022 a las 13:45
Eran los espacios en blanco!!!!!
Hay que ver por qué poquito se puede estropear un programa!
Muchísimas gracias. Ahora funciona perfectamente!.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable