exportar de excel a access (porrrrrsupuesto con VB)

31/05/2006 - 11:53 por xabi | Informe spam
Buenas!!!
Aqui sigo pegandome con el Visual.Lo que intento hacer aora es exportar
una tabla de Excel a Access.Anteriormente he comprobado que los campos estan
en el orden adecuado(menos una columna en la tabla access llamanada id para
identificar cada grupo nuevo que importo)
Es decir:
tabla access
id lote sublote denominacion
tabla excel
lote sublote denominacion

Lo que quiero aora es rellenar mi tabla de acces con los datos que el
usuario a matido en el EXCEL.He encontrado varias maneras pero no se si sera
cosa de la configuracion de la conexion pero no hace nada.La que mas me
atraia era la de INSERT INTO tabla access IN ruta SELECT * FROM Hoja1$
pero no he conseguido nada.Mi ruta la tengo en una variable que se llama
NombreArchivo.Trabajo con un projecto de access(*.adp).
Alguien sabe como hacer esto?
Mi conexio al EXCEL es esta:
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source = " + NombreArchivo
.Properties("Extended Properties") = "Excel 8.0;HDR=Yes"
.Open
End With

lo hago al principio del projecto visual y no la vuelvo a cambiar...le falta
algo para poder hacer la exportacion?
muchisimas gracias como siempre!!!
:):)

Preguntas similare

Leer las respuestas

#36 SoftJaén
07/06/2006 - 20:35 | Informe spam
"xabi" escribió:
ya...pero esque tengo dos consultas:

1)la que me saca el id_nuevo:

2)La que me saca los datos del excel:

para mi LO MAS LOGICO seria insertar la variable nuevo_id dentro de la
consulta que me va a insertar los campos del excel en la BD de access,pero
no se como hacer el VALUES en esta consulta

VALUES("&nuevo_id&","SELECT * FROM [Hoja1$]")



¡Vamos a ver! Lo que tú deseas hacer (o lo que yo he entendido que deseas
hacer), no se puede hacer mediante consultas SQL. La consulta de datos
añadidos INSERT INTO solamente tiene dos sintaxis: una para una inserción
masiva de registros, y la otra para insertar un único registro. Pero no
intentes mezclar las dos consultas, porque desde luego NUNCA te va a
funcionar.

esto no va...cuando tu defines VALUES tienes que indicarle que valor va en
cada posicion,pero en mi caso las posiciones 2 3 y 4 son el resultado de
una consulta aparte de la posicion 1,la cual es una variable...he hay mi
dilema...he intentado sumarle nuvo_id a la consulta del excel,por eso
hacia lo de INSERT INTO sql...poruqe vi que era posible sumarle registros
y quizas asi podria insertar todo de una.



Si deseas insertar un único registro, ya te indiqué cómo lo tenías que
hacer. Antes de ejecutar la consulta, averigua los valores de los datos que
deseas añadir y los guardas en sus respectivas variables.

Una vez que ya tengas las variables rellenas de datos (y la hayas sumado,
restado o dividido), añade las mismas a la consulta SQL, en las posiciones
que desees, que deberán de corresponderse con los campos de la tabla de SQL
Server. ¿Me explico?

..."VALUES (" & _
variableNumerica & ", " & _
"'" & variableAlfanumérica1 & "'," & _
"'" & variableAlfanumérica2 & ")"

¡Creo que está claro! :-)


Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#37 xabi
08/06/2006 - 10:05 | Informe spam
esque tonto de mi habia pensado que era posible insertar una variable+el
resultado de una consulta de seleccion tan solo pasandole la consulta y no
las variables...ejem...despues de este lio...vamos a probar todo esto
una pregunta mas:Va sonar a novato pero es para saber como se comporta el
access:
yo aora voy a tener que realizar una rutina que me guarde en variables todos
los resultados de mi consulta,lo que pasa esuq etengo diferentes tipos de
datos,y no quiero andar haciendo esto:
if micolumna=primera columna
variable1=micolumna.valor

lo que quiero es hacer que por cada registro que me lea me lo guarde en una
variable...puedo guardar todos los datos en STRINGS y luego copiarlos a mi
BD de access en la que algunas columnas son INTEGER??Daria error cierto??
:):)
Que paciencia teneis!!!

"SoftJaén" escribió en el mensaje
news:
"xabi" escribió:
> ya...pero esque tengo dos consultas:
>
> 1)la que me saca el id_nuevo:
>
> 2)La que me saca los datos del excel:
>
> para mi LO MAS LOGICO seria insertar la variable nuevo_id dentro de la
> consulta que me va a insertar los campos del excel en la BD de


access,pero
> no se como hacer el VALUES en esta consulta
>
> VALUES("&nuevo_id&","SELECT * FROM [Hoja1$]")

¡Vamos a ver! Lo que tú deseas hacer (o lo que yo he entendido que deseas
hacer), no se puede hacer mediante consultas SQL. La consulta de datos
añadidos INSERT INTO solamente tiene dos sintaxis: una para una inserción
masiva de registros, y la otra para insertar un único registro. Pero no
intentes mezclar las dos consultas, porque desde luego NUNCA te va a
funcionar.

> esto no va...cuando tu defines VALUES tienes que indicarle que valor va


en
> cada posicion,pero en mi caso las posiciones 2 3 y 4 son el resultado de
> una consulta aparte de la posicion 1,la cual es una variable...he hay mi
> dilema...he intentado sumarle nuvo_id a la consulta del excel,por eso
> hacia lo de INSERT INTO sql...poruqe vi que era posible sumarle


registros
> y quizas asi podria insertar todo de una.

Si deseas insertar un único registro, ya te indiqué cómo lo tenías que
hacer. Antes de ejecutar la consulta, averigua los valores de los datos


que
deseas añadir y los guardas en sus respectivas variables.

Una vez que ya tengas las variables rellenas de datos (y la hayas sumado,
restado o dividido), añade las mismas a la consulta SQL, en las posiciones
que desees, que deberán de corresponderse con los campos de la tabla de


SQL
Server. ¿Me explico?

..."VALUES (" & _
variableNumerica & ", " & _
"'" & variableAlfanumérica1 & "'," & _
"'" & variableAlfanumérica2 & ")"

¡Creo que está claro! :-)


Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado


o
sugerido en el presente mensaje.





Respuesta Responder a este mensaje
#38 SoftJaén
08/06/2006 - 11:19 | Informe spam
"xabi" escribió:

lo que quiero es hacer que por cada registro que me lea me lo guarde en
una variable...puedo guardar todos los datos en STRINGS y luego copiarlos
a mi BD de access en la que algunas columnas son INTEGER??Daria error
cierto??



Una cadena INSERT INTO es precisamente eso: una cadena alfanumérica donde
aparecen una serie de valores para añadirlos a la tabla de tu base de datos
de SQL Server. Tú puedes guardar los valores en las variables
correspondientes, pero a la hora de añadirlos a la cadena SQL, los tipos de
datos que no sean String, deberás de convertirlos expresamente a String,
mediante la función «Chr$»:

..."VALUES (" & _
Chr$(variableNumerica) & ", " & _
"'" & variableAlfanumérica1 & "'," & _
"'" & variableAlfanumérica2 & ")"

No es sumamente necesario que utilices la función «Chr$», porque Visual
Basic hace la conversión internamente, aunque es una buena práctica de
programación el convertir explícitamente los datos, sobre todo si tienes
pensado el día de mañana trabajar con Visual Basic .NET.

Lo que sí debes de tener mucho cuidado, es en incluir en la cadena SQL
comillas simples para encerrar los tipos de datos alfanuméricos, o en tu
caso, las variables alfanuméricas, tal y como aparecen en el ejemplo.

:):)
Que paciencia teneis!!!




¡No lo sabes bien! :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#39 xabi
08/06/2006 - 12:41 | Informe spam
um...un pequeño "apunte" o duda tontaya me va todo perfecto...me inserta
en la tabla de access etc etc,muchisimas gracias.Una vez que he insertado
varios registros me desordena la tabla es decir:
en vez de estar asi:
id lote sublote denominacion
0 1 1 den1
0 1 1 den1
1 1 1 den1
1 1 1 den1
2 1 1 den1
2 1 1 den1

esta asi (quedaros con que esta desordenada no sige ninguna logica...creo):
id lote sublote denominacion
0 1 1 den1
1 1 1 den1
1 1 1 den1
2 1 1 den1
0 1 1 den1
1 1 1 den1

me mosquea bastante porque estoy insertando "en grupo",osea,varios registro
en tandas:es decir,con la id=2 inserto seguidos los registros que sea,vamos
que no hay operaciones de por medio que me indiquen el porque de este
desorden...
alguna idea??
Respuesta Responder a este mensaje
#40 SoftJaén
08/06/2006 - 15:29 | Informe spam
"xabi" escribió:

ya me va todo perfecto...me inserta
en la tabla de access etc etc,muchisimas gracias.



¡Hombre! ¡Vamos progresando! :-)

Una vez que he insertado varios registros me desordena la tabla



Eso ya no depende de la consulta SQL. Si ejecutaras una inserción masiva de
registros, podías añadir una cláusula ORDER BY a la consulta de selección,
para que los registros se ordenen ascendentemente por el campo ID. Pero como
estás utilizando la sintaxis INSERT INTO para añadir un único registro, si
no te quieres mosquear con el orden en que aparecen los registros de la
tabla, no te va a quedar más remedio que crear una clave en la tabla de SQL
Server para que una vez que abras la tabla, te aparezcan los registros
ordenados por el campo que conforma la clave, porque si no hay ninguna
clave, los registros se muestran en el orden en que se van añadiendo. Que yo
sepa, no hay otra solución.

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida