ASP - Insertar varios registros de golpe II

 
Vista:

Insertar varios registros de golpe II

Publicado por Orellana (12 intervenciones) el 12/10/2000 00:00:00
Hace unos días pregunté cómo insertar varios registros de golpe en una tabla.

Me recomendarosn usar
INSERT TablaDestino SELECT campo1, campo2, campo3 FROM TablaOrigen

He intentado usar un recordset como tabla (el recordset coge la tabla entera), pero no me sale.
Me dice que no he terminado la instrucción.

La idea es insertar una tabla de Access dentro de otra, estando ambas en distintos archivos mdb.

No se si estoy confundiento Tablas y recordsets. ¿Alguien puede echarme una mano?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insertar varios registros de golpe II

Publicado por Alejandro (1 intervención) el 12/10/2000 00:00:00
Este es un ejemplo de una consulta de inserción sencilla. Supongamos que tenes una tabla llamada DATOS con los campos Nombre,Apellido, Telefono y Direccion

La consulta quedaria asi:

strSQL="Insert INTO Datos (Nombre, Aplellido, Telefono, Direccion) VALUES (´" & Request("Nombre") & "´, ´" & Request("Apellido") & "´, ´" & Request("Telefono") & "´, ´" & Request("Direccion") & "´;)"
rst.Source=strSQL
rst.Open
rst.Close
set rst=Nothing
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar varios registros de golpe II

Publicado por Seba (14 intervenciones) el 12/10/2000 00:00:00
No estoy seguro de que eso es lo que desea Orellana. Tu ejemplo, Alejandro, es para insertar unos valores desde el envío de un formulario o algo equivalente. Me parece que el problema es insertar en una tabla datos que existen en otra tabla preexistente. O sea, transferir estos de datos de una tabla a otra.

Orellana, el sql que te di inicialmente se ejecuta sobre la conexion que tengas a una base de datos (no hay necesidad de objetos RecordSet). Sin embargo, ese SQL supone que ambas tablas estan en la misma base de datos (archivo .mdb).

Vas a tener que abrir dos conexiones e iterar. Te voy a mostrar un trozo de codigo que debiera funcionar. Antes, debes tener ambas bases de datos (archivos .mdb) asociadas a un nombre en el ODBC. Upong que sabes hacer esto, si no, entonces pregunta aquí mismo.

Voy a suponer que la primera base de datos se llama "Origen" en tu ODBC, y la tabla con los datos que leerás se llama Tabla_Ori. Supondré también que la base de datos donde existe la tabla donde insertarás estos datos se llama "Destino" y la tabla Tabla_Dst

Para el caso del ejemplo, supongamos que los campos de Tabla_Ori y Tabla_Des son:
nombre: texto
apellido: texto
telefono: número

El codigo seria el siguiente:

<%

Dim Conn1, Conn2 ´Las conexiones que usaremos
Dim Datos ´ Donde guardaremos los datos de origen

Set Conn1 = Server.CreateObject("ADODB.Connection")
Set Conn2 = Server.CreateObject("ADODB.Connection")


Conn1.Open "Origen"
Conn2.Open "Destino"

´ Una vez abiertas las conexiones hacia las Bases
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El código

Publicado por Seba (14 intervenciones) el 12/10/2000 00:00:00
(código propuesto completo)
El codigo seria el siguiente:

<%

Dim Conn1, Conn2 ´Las conexiones que usaremos
Dim Datos ´ Donde guardaremos los datos de origen

Set Conn1 = Server.CreateObject("ADODB.Connection")
Set Conn2 = Server.CreateObject("ADODB.Connection")


Conn1.Open "Origen"
Conn2.Open "Destino"

´ Una vez abiertas las conexiones hacia las Bases
´ de datos, obtenemos los datos desde el origen

Set Datos = Conn1.Execute("SELECT nombre, apellido, telefono FROM Tabla_Ori")

´ Iteramos sobre los datos insertando cad registro
´ a la tabla de destino

While Not Datos.EOF
´La instruccion siguiente va toda en una misma linea
Conn2.Execute "INSERT INTO Tabla_Dst (nombre, apellido, telefono) VALUES ( ´" & Datos("nombre") & "´, ´" & Datos("apellido") & "´, " & Datos("telefono") & " )"
Datos.MoveNext
Wend

Conn1.Close
Conn2.Close

%>

A buenas y primeras creo que no debieras tener problemas con este método. Espero que te resulte bien.

Saludos.

PS: avísame si todo resulta OK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Si pero...

Publicado por Orellana (12 intervenciones) el 13/10/2000 00:00:00
Para empezar , gracias de nuevo por vuestra ayuda.

La idea de usar un bucle pasópor mi cabeza, pero hay un problema: Las tablas, que son idénticas en cuanto a su estructura, tienen un montón de campos.

Podría crear la sentencia entera, aunque supongo que se podrá hacer se un tirón.

Es decir. Al igual que podemos decir
SELECT * FROM Tabla
debe haber algo para que coja todos los valores del registro en la parte "VALUES".

Perdonad si soy un poco coñazo, pero es que ahora no estoy demasiado inspirado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El código funciona

Publicado por Orellana (12 intervenciones) el 18/10/2000 00:00:00
Aunque no hace lo que quería en un principio, si que funciona (escribiendo todos los campos).

Eso sí, cuidado al copiar ese código, ya que donde aparece " ´ " debe aparecer " ´ ". (no se si será un problema del juego de caracteres de cada uno).

De nuevo gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar