Imprimir página | Cerrar ventana

Usar variables en instrucción SQL

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86351
Fecha de impresión: 24/Abril/2024 a las 01:28


Tema: Usar variables en instrucción SQL
Publicado por: Kublai
Asunto: Usar variables en instrucción SQL
Fecha de publicación: 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



Respuestas:
Publicado por: Mihura
Fecha de publicación: 22/Mayo/2022 a las 12:23
¿Dónde usas esa sentencia? ... ¿en VBA?

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

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Kublai
Fecha de publicación: 22/Mayo/2022 a las 12:33
en VBA



Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Kublai
Fecha de publicación: 22/Mayo/2022 a las 12:56
Muchas gracias!.
Mañana lo pruebo en el trabajo.
Un saludote!



Publicado por: Kublai
Fecha de publicación: 23/Mayo/2022 a las 09:38
Hola
Lo he probado, pero me da error de sintaxis en la cláusula FROM.


Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Kublai
Fecha de publicación: 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]"



Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Kublai
Fecha de publicación: 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!.



Imprimir página | Cerrar ventana