insert masivo en access

16/11/2006 - 17:02 por Robinson.Moscoso | Informe spam
hola como estan todos...

quiero hacer esto en una BD de access

en una instruccion inserto los datos en la tabla 1 digamos algo asi:

insert into tabla1 (id_tabla1, campotabla1) values (1,"carro")
insert into tabla1 (id_tabla1, campotabla1) values (2,"moto")
insert into tabla1 (id_tabla1, campotabla1) values (3,"bus")
insert into tabla1 (id_tabla1, campotabla1) values (4,"camion")

luego en otra instruccion inserto los datos de la tabla 2 digamos algo asi:

insert into tabla2 (id_tabla2, id_tabla1, campotabla2) values (1,
1,"vehiculo carro1")
insert into tabla2 (id_tabla2, id_tabla1, campotabla2) values (2,
1,"vehiculo carro2")
insert into tabla2 (id_tabla2, id_tabla1, campotabla2) values (3,
2,"vehiculo moto1")
insert into tabla2 (id_tabla2, id_tabla1, campotabla2) values (4,
2,"vehiculo carro2")

las dos tablas estan vacias, el problema es que el id_tabla1 es autonumerico
y no me recibe el valor que le estoy pasando, sino que utiliza el del
autonumerico, y cuando inserto los datos de la tabla 2 hay problemas pq no
coinciden los id_tabla1.

Pregunta: ¿se pude hacer algo para que acces me reciba el valor que le estoy
pasando?, o alguna sugerencia para manejar los id_tabla1 que estoy
insertarndo en la tabla2 con el fin de que inserten en la forma que
necesito?.
estoy trabajando con VB2005


Un saludo,

Róbinson Moscoso
Colombia

Preguntas similare

Leer las respuestas

#1 Carlos Gómez
16/11/2006 - 18:32 | Informe spam
Como el Id es autonumerico, no es necesario (creo que ni se debe)
pasarlo:
INSERT INTO tabla1 (campotabla1) VALUES ("carro")

Despues tienes que leer el autonumerico asignado, esto usar un
dataReader con la siguiente consulta:
SELECT MAX(Id_Tabla1) FROM tabla1

para tener en .net el valor del Id asignado, y lo guardas en una
variable:
Dim Id1 as Integer = dataReader.GetInteger(0)
...

después para la tabla2:
INSERT INTO tabla2 (id_tabla1, campotabla2) VALUES (Id1,"vehiculo
carro1")
no hay que poner id_tabla2 porque es autonumerico
Respuesta Responder a este mensaje
#2 Robinson.Moscoso
16/11/2006 - 18:50 | Informe spam
Gracias Carlos por reponder

el problema es que ya en un archivo plano todos los registros de la tabla 1
y todos los registros de la tabla2 entos no puedo insertarlos uno a uno, de
la tabla 1 son solo como 40 registros pero de la tabla2 sin son como 5000,
por eso es que necesito poder conservar los ids de los campos que inserto,
ademas que para el ejemplo puse dos tabla pero la cosa se complica pq de la
tabla2 dependen otras tablas que tambien hay que importar



"Carlos Gómez" escribió en el mensaje
news:
Como el Id es autonumerico, no es necesario (creo que ni se debe)
pasarlo:
INSERT INTO tabla1 (campotabla1) VALUES ("carro")

Despues tienes que leer el autonumerico asignado, esto usar un
dataReader con la siguiente consulta:
SELECT MAX(Id_Tabla1) FROM tabla1

para tener en .net el valor del Id asignado, y lo guardas en una
variable:
Dim Id1 as Integer = dataReader.GetInteger(0)
...

después para la tabla2:
INSERT INTO tabla2 (id_tabla1, campotabla2) VALUES (Id1,"vehiculo
carro1")
no hay que poner id_tabla2 porque es autonumerico
Respuesta Responder a este mensaje
#3 Jesús López
16/11/2006 - 19:27 | Informe spam
Pues entonces usa una consulta de datos anexados para cargar los datos en la
base de datos. El SQL de JET permite especificar un archivo de texto plano
como tabla.

La consulta tendría esta pinta:

"INSERT INTO Table1 SELECT name, recdate, num, num2 FROM [Table1#txt] IN
'D:\VB.Net Projects\DBtest\bin' 'Text;';"

Con las consultas de datos anexados puedes insertar datos en campos
autonuméricos sin que éstos sean generados por JET, sino que son los que
vienen de origen. Además insertar los 5000 registros con este método tardará
sólo una fracción de segundo.

Aquí tienes un ejemplo:

http://www.kelbli.net/kb1/AdoNetContest.html

Saludos:

Jesús López



"Robinson.Moscoso" escribió en el mensaje
news:%23X$
Gracias Carlos por reponder

el problema es que ya en un archivo plano todos los registros de la tabla
1 y todos los registros de la tabla2 entos no puedo insertarlos uno a uno,
de la tabla 1 son solo como 40 registros pero de la tabla2 sin son como
5000, por eso es que necesito poder conservar los ids de los campos que
inserto, ademas que para el ejemplo puse dos tabla pero la cosa se
complica pq de la tabla2 dependen otras tablas que tambien hay que
importar



"Carlos Gómez" escribió en el mensaje
news:
Como el Id es autonumerico, no es necesario (creo que ni se debe)
pasarlo:
INSERT INTO tabla1 (campotabla1) VALUES ("carro")

Despues tienes que leer el autonumerico asignado, esto usar un
dataReader con la siguiente consulta:
SELECT MAX(Id_Tabla1) FROM tabla1

para tener en .net el valor del Id asignado, y lo guardas en una
variable:
Dim Id1 as Integer = dataReader.GetInteger(0)
...

después para la tabla2:
INSERT INTO tabla2 (id_tabla1, campotabla2) VALUES (Id1,"vehiculo
carro1")
no hay que poner id_tabla2 porque es autonumerico


Respuesta Responder a este mensaje
#4 Robinson.Moscoso
16/11/2006 - 20:16 | Informe spam
Gracias Jesús esa era la solucion...

y abusando de tu confianza, veo que se pude utilizar la clausua IN para
pasar los datos de una BD a otra, tienes por ahi un ejemplo donde se haga
algo asi?... la pregunta es mas bien como hago para conectarme a la BDfuente
pues esa esta protegida con contraseña

Un saludo

Róbinson Moscoso
Colombia


"Jesús López" escribió en el mensaje
news:
Pues entonces usa una consulta de datos anexados para cargar los datos en
la base de datos. El SQL de JET permite especificar un archivo de texto
plano como tabla.

La consulta tendría esta pinta:

"INSERT INTO Table1 SELECT name, recdate, num, num2 FROM [Table1#txt] IN
'D:\VB.Net Projects\DBtest\bin' 'Text;';"

Con las consultas de datos anexados puedes insertar datos en campos
autonuméricos sin que éstos sean generados por JET, sino que son los que
vienen de origen. Además insertar los 5000 registros con este método
tardará sólo una fracción de segundo.

Aquí tienes un ejemplo:

http://www.kelbli.net/kb1/AdoNetContest.html

Saludos:

Jesús López



"Robinson.Moscoso" escribió en el mensaje
news:%23X$
Gracias Carlos por reponder

el problema es que ya en un archivo plano todos los registros de la tabla
1 y todos los registros de la tabla2 entos no puedo insertarlos uno a
uno, de la tabla 1 son solo como 40 registros pero de la tabla2 sin son
como 5000, por eso es que necesito poder conservar los ids de los campos
que inserto, ademas que para el ejemplo puse dos tabla pero la cosa se
complica pq de la tabla2 dependen otras tablas que tambien hay que
importar



"Carlos Gómez" escribió en el mensaje
news:
Como el Id es autonumerico, no es necesario (creo que ni se debe)
pasarlo:
INSERT INTO tabla1 (campotabla1) VALUES ("carro")

Despues tienes que leer el autonumerico asignado, esto usar un
dataReader con la siguiente consulta:
SELECT MAX(Id_Tabla1) FROM tabla1

para tener en .net el valor del Id asignado, y lo guardas en una
variable:
Dim Id1 as Integer = dataReader.GetInteger(0)
...

después para la tabla2:
INSERT INTO tabla2 (id_tabla1, campotabla2) VALUES (Id1,"vehiculo
carro1")
no hay que poner id_tabla2 porque es autonumerico






Respuesta Responder a este mensaje
#5 Robinson.Moscoso
16/11/2006 - 20:33 | Informe spam
Jesus, muchisimas gracias

Un saludo

Róbinson Moscoso

"Robinson.Moscoso" escribió en el mensaje
news:
Gracias Jesús esa era la solucion...

y abusando de tu confianza, veo que se pude utilizar la clausua IN para
pasar los datos de una BD a otra, tienes por ahi un ejemplo donde se haga
algo asi?... la pregunta es mas bien como hago para conectarme a la
BDfuente pues esa esta protegida con contraseña

Un saludo

Róbinson Moscoso
Colombia


"Jesús López" escribió en el mensaje
news:
Pues entonces usa una consulta de datos anexados para cargar los datos en
la base de datos. El SQL de JET permite especificar un archivo de texto
plano como tabla.

La consulta tendría esta pinta:

"INSERT INTO Table1 SELECT name, recdate, num, num2 FROM [Table1#txt] IN
'D:\VB.Net Projects\DBtest\bin' 'Text;';"

Con las consultas de datos anexados puedes insertar datos en campos
autonuméricos sin que éstos sean generados por JET, sino que son los que
vienen de origen. Además insertar los 5000 registros con este método
tardará sólo una fracción de segundo.

Aquí tienes un ejemplo:

http://www.kelbli.net/kb1/AdoNetContest.html

Saludos:

Jesús López



"Robinson.Moscoso" escribió en el mensaje
news:%23X$
Gracias Carlos por reponder

el problema es que ya en un archivo plano todos los registros de la
tabla 1 y todos los registros de la tabla2 entos no puedo insertarlos
uno a uno, de la tabla 1 son solo como 40 registros pero de la tabla2
sin son como 5000, por eso es que necesito poder conservar los ids de
los campos que inserto, ademas que para el ejemplo puse dos tabla pero
la cosa se complica pq de la tabla2 dependen otras tablas que tambien
hay que importar



"Carlos Gómez" escribió en el mensaje
news:
Como el Id es autonumerico, no es necesario (creo que ni se debe)
pasarlo:
INSERT INTO tabla1 (campotabla1) VALUES ("carro")

Despues tienes que leer el autonumerico asignado, esto usar un
dataReader con la siguiente consulta:
SELECT MAX(Id_Tabla1) FROM tabla1

para tener en .net el valor del Id asignado, y lo guardas en una
variable:
Dim Id1 as Integer = dataReader.GetInteger(0)
...

después para la tabla2:
INSERT INTO tabla2 (id_tabla1, campotabla2) VALUES (Id1,"vehiculo
carro1")
no hay que poner id_tabla2 porque es autonumerico










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida