Imprimir página | Cerrar ventana

Consultas y Creacion de tablas desde Visual Basic

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=84565
Fecha de impresión: 26/Septiembre/2020 a las 19:57


Tema: Consultas y Creacion de tablas desde Visual Basic
Publicado por: kkodalton
Asunto: Consultas y Creacion de tablas desde Visual Basic
Fecha de publicación: 19/Junio/2019 a las 10:24
Hola



A ver si alguien puede ayudarme:

Necesito crear una consulta en un procedimiento de este tipo:

SELECT a,b INTO tablaNueva IN 'c:\datos\000002.mdb'
FROM tabla;

Siendo tablanueva , tabla y destino ('c:\datos\000002.mdb') variables que las asigno en el procedimento, pero el problema lo tengo con las Comillas simples (‘ ’) del IN ,

Dim sql as string

Sql=”select a,b into “ & tablaNueva & “ IN” ....
Docmd.runsql(sql)

Gracias por todo



Respuestas:
Publicado por: Mihura
Fecha de publicación: 19/Junio/2019 a las 11:09
SELECT a,b INTO [c:\datos\000002.mdb].[TablaNueva] FROM Tabla

-------------
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: fcoval
Fecha de publicación: 19/Junio/2019 a las 14:24
Con permiso de Mihura ... lo pongo mas mascado en forma de variables que es lo que buscas

Cita
Dim sql As String
Dim tblNueva As String, tblBD As String, strRutaBD As String

tblNueva = "tablaNueva"
tblBD = "tabla"
strRutaBD = "c:\datos\000002.mdb"

sql = "SELECT a, b INTO [" & tblNueva & "] IN '" & strRutaBD & "' FROM [" & tblBD & "]"

DoCmd.RunSQL (sql)


Publicado por: kkodalton
Fecha de publicación: 20/Junio/2019 a las 14:42
Gracias a los dos, en especial a fcoval que es como me interesaba, mañana lo pruebo.


Publicado por: kkodalton
Fecha de publicación: 17/Julio/2019 a las 11:56
Buenas de nuevo.

Lo acabo de probar y me da error, me podeis ayudar?

dim qtable as dao.querydef


Set qtable = dbs.CreateQueryDef("tabla_" & up)

qtable.sql = "SELECT * INTO " & tblNueva & " IN '" & strRutaBD & "' FROM " & up     ' Aqui es donde me da el error que os he comentado

DoCmd.OpenQuery ("tabla_" & up)



error 3126
corchetes no validos en el nombre 'c:\datos\EQ\03\00012.mdb'


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 12:18
Pon un punto de interrupción, copias la cadena completa "SELECT * .... y en la ventana inmediato averigua su valor y postéalo aquí.



-------------
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: kkodalton
Fecha de publicación: 17/Julio/2019 a las 13:01
Me da error a continuacion ....
Os explico , antes creo una consulta de paso a traves de SQL, donde me la crea y se ejecuta sin problemas. Pero el resultado de esa consulta la quiero guardar en una tabla y para eso lo que hago es crear esta consulta que lo que hace es llamar a la consulta de paso a traves, me explico?


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 13:17
Si la consulta se ejecuta en el servidor de SQL, este no entiende la notación:

 IN 'c:\datos\000002.mdb' FROM tabla

Esa consulta la tienes que ejecutar en el 'lado Access'.




-------------
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: kkodalton
Fecha de publicación: 17/Julio/2019 a las 13:55
Todo lo ejecuto desde accés.
tabla hace referencia a la consulta de paso a traves, que esta si la ejecuto sola funciona.
Quizas tengas razon y no se pueda hacer


Publicado por: kkodalton
Fecha de publicación: 17/Julio/2019 a las 13:56
Y entonces como puedo ejecutar una consulta de paso a traves y el resultado me lo guarde en una tabla de accés?


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 14:05
Bienvenido a uno de los problemas de trabajar con SQL.

En este caso estás trabajando con tablas que son de entorno Access, haz la consulta directamente en Access.


-------------
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: kkodalton
Fecha de publicación: 18/Julio/2019 a las 08:30
Hola de nuevo

si las consultes son fijas , desde accés se ejecuta y se crea la tabla.

Si tengo una consulta de paso a traves, llamada por ejemplo c_dia,con la siguiente sentencia:

select sysdate from dual;

y otra consulta, que lo que hace es crear una tabla con el resultado de la consulta de paso a traves:

select * into tbldia from c_dia;

Al ejecutar esta ultima consulta se crea una tabla llamada tbldia con el dia actual.

Por tanto si las consultas son fijas, funciona. Porque no ha de funcionar si lo haces a traves de vb?
Ese es mi problema

Gracias


Publicado por: Mihura
Fecha de publicación: 18/Julio/2019 a las 08:38
Porque la base de datos SQL NO ve los datos que hay en access.

Si necesitas los datos en SQL tendrás que crear una tabla en la BD SQL y cargarla mediante un recordset ejecutado en access que lea la tabla access y la cargue en la que hay en SQL.

Pero, en vez de dar tantas vueltas teóricas, ¿por qué no explicas que es lo que tienes y qúe es lo que quieres conseguir?


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

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



Imprimir página | Cerrar ventana