Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/03/2007, 07:27
judes
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 1 mes
Puntos: 0
Insertar Varios Registros(pero Desde Un Archivo)

Hola a todos, he probado el código expuesto por Tammander, pero no consigo que funcione.

Código:
Aqui CONEXIÓN con la BD.
Esto no me preocupa ya que he comprobado que funciona
A continuación muestro como he adaptado el código:

Código:
set RS=Server.CreateObject("ADODB.Recordset")



Set ofiles = Server.CreateObject("Scripting.FileSystemObject")
set ofile = ofiles.getFile(Server.MapPath("mi-archivo.csv"))
Set ts = ofile.OpenAsTextStream(1, -2)*Nota
*Nota:

Cita:
'Aqui, en ts=... he cambiado lo que tu pusiste, ya que he leido lo siguiente:


Método OpenAsTextStream

Abre un archivo especificado y devuelve un objeto TextStream que se puede utilizar para leer, escribir o agregar en el archivo.

objeto.OpenAsTextStream([modoES, [formato]])



Valores

El argumento modoES puede tener cualquiera de los siguientes valores:
Constante Valor Descripción
ForReading 1 Abrir un archivo sólo para lectura. No puede escribir en este archivo.
ForWriting 2 Abrir un archivo para escritura. Si existe un archivo con el mismo nombre, se sobreescribe su contenido anterior.
ForAppending 8 Abrir un archivo y escribir al final del archivo.

El argumento format puede tener alguno de los siguientes valores:
Constante Valor Descripción
TristateUseDefault -2 Abre el archivo utilizando el valor predeterminado del sistema.
TristateTrue -1 Abre el archivo como Unicode.
TristateFalse 0 Abre el archivo como ASCII.
Continuamos despues del inciso

Código:
on error resume next

Do while not ts.AtEndOfStream
Conn.BeginTrans
arrFields = split(ts.ReadLine,";")
if isArray(arrFields) then


sql = "INSERT INTO MI-TABLA (ID_R,NOMBRE-RESTARANTE, SITUACION, CLASE, CANTIDAD, IMAGEN, IMAGEN2, IMAGEN3, PAGAN, PAGEXTRA, MICROSITE) VALUES ('" & arrFields(0) & "','" & arrFields(1) & "','" & arrFields(2) & "','" & arrFields(3) & "','" & arrFields(4) & "','" & arrFields(5) & "','" & arrFields(6) & "','" & arrFields(7) & "','" & arrFields(8) & "','" & arrFields(9) & "','" & arrFields(10) & "')"
con.execute(sql)
if Conn.errors.count <> 0 then
Conn.rollback
exit do
end if

' No se cual es la funcion equivalente en Oracle
'yo creo que está aquí el problema, pero no sé como se puede recoger el ID 'del primer INSERT para usarlo en el segundo

set RS = Conn.execute("SELECT LASTINSERTID() AS Y")
if not RS.EOF then
sql2 = "INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES (" & rs("Y") & ",'" & arrFields(11) & "','" & arrFields(12) & "')"
Conn.execute(sql2)
end if
set RS = nothing
if Conn.errors.count <> 0 then
Conn.rollback
exit do
end if

end if

Conn.commitTrans
loop

err.clear()
on error goto 0
ts.close
set ofile = nothing
set ofiles = nothing
'set Rs = nothing
'set Conn = nothing




response.write("query restaurante: "&sql)
response.write("<BR>Query Descripci&oacute;: "&sql2)
'rs.close()
'Conn.close()
%>
Aquí muestro el Archivo del que leo los datos:
'
Cita:
402667','Mi Restaurante j', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante f<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante f';
'402668','Mi Restaurante k', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante g<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante g';
'402669','Mi Restaurante l', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante h<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante h';
'402670','Mi Restaurante m', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante i<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante i';
Por favor, si alguien sabe decirme los fallos de este código, se lo agradecería

Un saludo