Duda con instrucción SQL

Estoy haciendo una aplicación en vb que importa un archivo de excel separado por comas (datos.csv) y añade los datos a una tabla de access. La instrucción que me da error es la siguiente:
SQL = "INSERT INTO tabla1 SELECT * FROM [" & fichero & "] IN """ & csv_path & """ ""TEXT;""" (fichero es datos.csv y csv_path es la C:\misdatos\actual\) Previamente he hecho la conexion a la base de datos access correctamente. El error es: "La instruccion INSERT INTO contiene el siguiente nombre de campo desconocido: 'fecha-hora;numero;comentarios; Asegurese que ha introducido bien el nombre y vuelva a intentarlo.
Fecha-hora, numero y comentarios son los 3 campos del archivo csv y son los mismos que tengo definidos en la tabla1 de datos.mdb, ¿qué tengo que cambiar en la instrucción para que los reconozca por separado y los inserte bien? Muchas gracias.

2 respuestas

Respuesta
1
Seguramente intentas importar los datos, con cabecera puesta, prueba a quitarle la primera fila.
Aclaración:
Un archivo *. Csv (separado por comas) no es un archivo excel, otra cosa es que excel sepa leerlo.
Hola! He probado a quitar la cabecera y me sigue dando el mismo fallo ahora con la primera linea de datos.
Un colega me dijo que no se puede importar un archivo de texto con una sola instrucción, sino que debería ir línea por línea leyendo y escribiendo, con un bucle. ¿Es esto cierto? Un saludo.
Prueba vinculando ese archivo (no le quites la cabecera). Esto es fácil en diseño de la BD en el apartado tablas pincha con el botón derecho y vincular, sigue las instrucciones. Cuando la tengas vinculada ya es hacer una consulta de datos anexados normal.
Haciendo lo que dices de vincular la tabla funciona, pero si el archivo csv se modifica, la tabla vinculada no se modifica, ¿no? Y lo que yo quería es hacer un programa de visual basic para ejecutarlo cada cierto tiempo y que la tabla se actualizara. Por eso necesito una instrucción con código que importe los datos del archivo csv a la tabla access
Si los datos del archivo cambian también la tabla cambia, es decir, si en el fichero csv borras o metes registros esto se refleja en la tabla vinculada, precisamente porque la tienes vinculada, es más manejable por access.
Muchísimas gracias! Si los cambios se reflejan en la tabla vinculada no necesito hacer nada de código y era justo lo que necesitaba! Me has sido de gran ayuda, ya siento haberte mareado un poquillo. Un saludo!
Respuesta
1
Por lo que veo .. estas separando los campos por ; .. tendría que ser separados por, (comas) en vez de ; (punto y coma)
Ahh, vayamos por partes
Si tienes el archivo con el siguiente contenido:
1,'nicolas','boidi', 15
2,'juan','Garcia', 22
3,'Maria','Soledad', 33
Vas a tener que ejecutar linea por linea y cada linea seria una instrucción.
No vas a poder ejecutar todo el archivo en una sola instrucción.
Hola! No, los campos están bien separados por ; siempre he visto así los archivos .csv. De todas maneras he probado a cambiar los ; por, y me sigue dando el mismo fallo.
Un colega me dijo que desde no se puede importar un archivo de texto con una sola instrucción, sino que debería ir línea por línea leyendo y escribiendo, con un bucle. ¿Es esto cierto? Un saludo.
Para ir leyendo el archivo de texto linea por linea y tienes que armar el insert para ejecutar.
' ** Para leer el archivo linea por linea
set fs = server.createobject("scripting.filesystemobject")
set file = fs.opentextfile(server.mappath("archivo.csv"))
Do While Not file.AtEndOfStream
strLine = file.ReadLine
sql = "insert into tabla (" & strLine & ")"
conn.execute sql
Loop
Tienes que tener en cuenta que las lineas no estén vacías, estén bien formateadas, etc, etc

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas