Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Averiguar el ID del último registro insertado en una tabla para...

Estas en el tema de Averiguar el ID del último registro insertado en una tabla para... en el foro de Oracle en Foros del Web. Hola a todos tengo un problema que me han ayudado mucho en el foro de ASP, pero nos hemos topado con una duda que es ...
  #1 (permalink)  
Antiguo 13/03/2007, 05:56
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Averiguar el ID del último registro insertado en una tabla para...

Hola a todos tengo un problema que me han ayudado mucho en el foro de ASP, pero nos hemos topado con una duda que es específica de Oracle, creo que aquí sabreís responderme.

EL problema está completamente explicado en el foro de ASP. Si alguien quiere conocerlo en detalle, puede seguir este link:

http://www.forosdelweb.com/f15/insertar-varios-registros-pero-desde-archivo-466975/

Ahora ya no hace falta ir al foro de ASP ya he copiado el código un poco más abajo en este tema.


Para aquellos que les de palo mirar en el foro de ASP. Comentaré un poco de que va.

Lo que yo quiero es leer de un archivo.CSV (texto separado por comas) para despues almacenarlo en una matriz e insertar linea por linea en una base de datos ORACLE. Pero en DOS tablas.

Todo esto lo sé hacer más o menos pero la duda que os traigo es la siguiente:
Cita:
Despues de insertar los campos necesarios en la primera tabla tengo que insertar tres campos más en la segunda tabla. Y uno de esos campos es el ID de la primera tabla... En Oracle, ¿Qué sentencia debo de usar para obtener este ID?
Gracias por adelantado

Un saludo

Última edición por judes; 23/03/2007 a las 03:54 Razón: Ahora ya puedo poner links. Quería añadir uno.
  #2 (permalink)  
Antiguo 19/03/2007, 03:49
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Como generaras los ID de la primera tabla?
mediante nextval debo suponer y un trigger?

De ser así la opción que doy es generar tu mismo mediante nextval un id unico que utilices en todo el proceso, recogerlo y usarlo para la inserción de ambas tablas, no dejando que oracle lo genere automáticamente con el trigger.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #3 (permalink)  
Antiguo 20/03/2007, 02:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Gracias Zoe, lo pruebo y lo cuento

Hasta pronto
  #4 (permalink)  
Antiguo 20/03/2007, 04:15
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Lo siento Zoe, no me ha funcionado
En este mensaje hay cosas que se explican y que no vienen a cuento. esto es porque lo he copiado de un mensaje que puse en el foro de ASP

Código:
Aqui CONEXIÓN con la BD.
Esto no me preocupa ya que he comprobado que funciona
A continuación muestro como leo del archivo "mi-archivo.csv":

Código:
Dim Conn,sql,sql1,sql2
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open(mi-conexión)
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

	sql="select id_r.nextval id_r from restaurantes"
	Set RS = Conn.Execute(sql) 
	id_r=RS("id_r")

arrFields = split(ts.ReadLine,",")
if isArray(arrFields) then


sql1 = "INSERT INTO MI-TABLA (ID_R,NOMBRE-RESTARANTE, SITUACION, CLASE, CANTIDAD, IMAGEN, IMAGEN2, IMAGEN3, PAGAN, PAGEXTRA, MICROSITE) VALUES ('"&id_r&"','" & arrFields(0) & "','" & arrFields(1) & "','" & arrFields(2) & "','" & arrFields(3) & "','" & arrFields(4) & "','" & arrFields(5) & "','" & arrFields(6) & "','" & arrFields(7) & "','" & arrFields(8) & "','" & arrFields(9) & "')"
con.execute(sql1)
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

Aquí he hecho lo que has dicho, he aprovecado el id que he conseguido con nextval para la primera, pero no me ha funcionado


sql2 = "INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES ('"&id_r&"','" & arrFields(11) & "','" & arrFields(12) & "')"
Conn.execute(sql2)

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: "&sql1)
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'
Lo del tigger lo he mirado un poco pero no entiendo bien como va. En este código hay partes que están bien pero estoy seguro que en algún lado estoy metiendo la pata hasta el fondo

Ya me direís algo

Un saludo
  #5 (permalink)  
Antiguo 20/03/2007, 05:14
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Pero te esta arrojando algún error ahora mismo??
Si es así pone aquí cual es.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #6 (permalink)  
Antiguo 20/03/2007, 06:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

No. Ahora he comentado esto

Código:
 'if Conn.errors.count <> 0 then 
  '       Conn.rollback
  '     exit do      
  'end if
Este es el que va después del primer INSERT

y ahora si que me ejecuta el (sql2)=segundo INSERT. Esto lo sé porque he puesto un response write para que me muestre lo que producen los INSERTS.

Los dos se ejecutan pero no se produce ninguna insercción en la BBDD.

Volviendo a responder a tu pregunta NOno me da ningún error
  #7 (permalink)  
Antiguo 20/03/2007, 06:43
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Cita:
Iniciado por judes Ver Mensaje
No. Ahora he comentado esto

Código:
 'if Conn.errors.count <> 0 then 
  '       Conn.rollback
  '     exit do      
  'end if
Este es el que va después del primer INSERT

y ahora si que me ejecuta el (sql2)=segundo INSERT. Esto lo sé porque he puesto un response write para que me muestre lo que producen los INSERTS.

Los dos se ejecutan pero no se produce ninguna insercción en la BBDD.

Volviendo a responder a tu pregunta NOno me da ningún error
Pues si te da un error, otra cosa es que no sepas recogerlo. Hace mucho que dejé ASP de lado, así que no te puedo ayudar ahí.
Con que me pongas un no más pequeño me vale. No estoy ciego y no dice mucho de tu parte.

El error estará en la base de datos.. ya que como ves... en el Conn.errors te devuelve que ha habido algún error. Comprueba que tienes puestos bien todos los literales, y que no estes metiendo algún dato que no acepte la base de datos.
Te recomendaría lanzar esa sentendia desde TOAD o sql/plus para que veas el error que te esta dando.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #8 (permalink)  
Antiguo 20/03/2007, 07:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Perdóname, cuando lo he puesto estaba de buen humor porque alguien me estaba ayudando (TÚ). Yo sólo quería expresarlo de alguna manera. De verdad que no quería ofenderte en ningún sentido.

Lo siento.
  #9 (permalink)  
Antiguo 20/03/2007, 07:12
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Cita:
Iniciado por Zoe79 Ver Mensaje
El error estará en la base de datos.. ya que como ves... en el Conn.errors te devuelve que ha habido algún error. Comprueba que tienes puestos bien todos los literales, y que no estes metiendo algún dato que no acepte la base de datos.
Te recomendaría lanzar esa sentendia desde TOAD o sql/plus para que veas el error que te esta dando.
En cuanto a lo del error me miraré mejor el código y lo que meto en la BBDD. Lo de TOAD o sql/plus no puedo probarlo ya que estoy trabajando en Mac OS. Probaré a ver si consigo algo del estilo TOra, pero no sé yo.

De nuevo gracias por tu ayuda y siento haberte ofendido, en serio no era mi intención. Creeme, soy tonto, pero no tanto como para ofender a alguien que se toma la molestia de contestarme
  #10 (permalink)  
Antiguo 20/03/2007, 08:29
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

No pasa nada, perdona.

Puedes hacerme una desc de ambas tablas?
Según veo el problema puede ser que estés intentando meter un varchar en un numérico.....
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #11 (permalink)  
Antiguo 20/03/2007, 09:32
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Tabla para el primer INSERT

Cita:
*================================================= =============*/

/* Table: Mi-tabla TABLA PRINCIPAL */

/*================================================= =============*/



CREATE TABLE Mi-tabla1 (

ID_R NUMBER(10) NOT NULL,

NOMBRE VARCHAR2(200),

ZONA NUMBER(10) NOT NULL,

ESPECIALIDAD NUMBER(10) NOT NULL,

PRECIO VARCHAR2(30),

FOTO VARCHAR2(50),

PAGAN VARCHAR2(2),

PAGEXTRA VARCHAR2(200),

PLANTILLA NUMBER(38),

FOTO2 VARCHAR2(255),

FOTO3 VARCHAR2(255),

MICROSITE VARCHAR2(300),

constraint SYS_C001734 PRIMARY KEY (ID_R),

constraint FK_REST_ZONA FOREIGN KEY (ZONA)

REFERENCES ZONAS (ID_ZONA)
Tabla para el segundo INSERT

Cita:
/*================================================= =============*/

/* Table: Mi-tabla2 */

/*================================================= =============*/



CREATE TABLE Mi-tabla2 (

ID_R NUMBER(10) NOT NULL,

IDIOMA NUMBER(10) NOT NULL,

DESCRIPCION VARCHAR2(2000),

constraint SYS_C001670 PRIMARY KEY (ID_R),

constraint SYS_C001670 PRIMARY KEY (IDIOMA),

constraint SYS_C001816 FOREIGN KEY (ID_R)

REFERENCES RESTAURANTES (ID_R)
Supongo que es esto lo que me pides,aunque creo que lo tengo bien, no lo sé, ya me dirás
  #12 (permalink)  
Antiguo 20/03/2007, 10:09
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Corrígeme si me equivoco.. pero campos que estan en la query no existen en la tabla....., por ejemplo NOMBRE-RESTAURANTE, en la tabla es NOMBRE..., SITUACION no lo encuentro.. a no ser que sea ZONA...
Incluso veo que el nombre de la tabla es Mi-tabla1 en dez de MI-TABLA....

Recomiendo de paso no usar "-" para nombres y siempre usar "_" en cualquier caso por compatibilidad.

sql1 = "INSERT INTO MI-TABLA (ID_R,NOMBRE-RESTARANTE, SITUACION, CLASE, CANTIDAD, IMAGEN, IMAGEN2, IMAGEN3, PAGAN, PAGEXTRA, MICROSITE) VALUES ('"&id_r&"','" & arrFields(0) & "','" & arrFields(1) & "','" & arrFields(2) & "','" & arrFields(3) & "','" & arrFields(4) & "','" & arrFields(5) & "','" & arrFields(6) & "','" & arrFields(7) & "','" & arrFields(8) & "','" & arrFields(9) & "')"


CREATE TABLE Mi-tabla1 (

ID_R NUMBER(10) NOT NULL,

NOMBRE VARCHAR2(200),

ZONA NUMBER(10) NOT NULL,

ESPECIALIDAD NUMBER(10) NOT NULL,

PRECIO VARCHAR2(30),

FOTO VARCHAR2(50),

PAGAN VARCHAR2(2),

PAGEXTRA VARCHAR2(200),

PLANTILLA NUMBER(38),

FOTO2 VARCHAR2(255),

FOTO3 VARCHAR2(255),

MICROSITE VARCHAR2(300),

constraint SYS_C001734 PRIMARY KEY (ID_R),

constraint FK_REST_ZONA FOREIGN KEY (ZONA)

REFERENCES ZONAS (ID_ZONA)
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #13 (permalink)  
Antiguo 20/03/2007, 10:23
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Las tablas son reales. Las sentencias sql no son exactamente las que estoy usando. Auí te muestro las que uso:

Código:
sql1 = "INSERT INTO RESTAURANTES (ID_R,NOMBRE, ZONA, ESPECIALIDAD, PRECIO, FOTO, PAGAN, PAGEXTRA,PLANTILLA, FOTO2, FOTO3, MICROSITE) VALUES ('"&id_r&"','" & arrFields(0) & "','" & arrFields(1) & "','" & arrFields(2) & "','" & arrFields(3) & "','" & arrFields(4) & "','" & arrFields(5) & "','" & arrFields(6) & "','" & arrFields(7) & "','" & arrFields(8) & "','" & arrFields(9) & "','" & arrFields(10) & "')"
Código:
sql2 = "INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES ('"&id_r&"','" & arrFields(11) & "','" & arrFields(12) & "')"
El archivo csv tambien lo he cambiado. Cuando me has pedido la estructura de las tablas, me he dado cuenta de que estaban mal los inserts, aunque no creo que sea el problema. Aquí esta el archivo que estoy usando ahora.

Cita:
'Mi Restaurante 5', '122', '94', '7', 'abrasas.gif', '', '', '', 'abrasas.gif', 'abrasas.gif', '', '1','<b>Nombre:</b> Mi Resturante 5<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 5'
'Mi Restaurante 6', '122', '94', '7', 'abrasas.gif', '', '', '', 'abrasas.gif', 'abrasas.gif', '', '1','<b>Nombre:</b> Mi Resturante 6<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 6'
'Mi Restaurante 7', '122', '94', '7', 'abrasas.gif', '', '', '', 'abrasas.gif', 'abrasas.gif', '', '1','<b>Nombre:</b> Mi Resturante 7<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 7'
'Mi Restaurante 8', '122', '94', '7', 'abrasas.gif', '', '', '', 'abrasas.gif', 'abrasas.gif', '', '1','<b>Nombre:</b> Mi Resturante 8<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 8'
  #14 (permalink)  
Antiguo 20/03/2007, 10:28
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Poniendo bien los nombres correspondientes donde te esta dando el error es en los campos numéricos donde estas intentando meter un String.
Quita las comillas simples alla donde los campos numéricos sean tal en la tabla... como por ejemplo zona.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #15 (permalink)  
Antiguo 20/03/2007, 10:53
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Perdona, lo estoy probando y no me termino de aclarar de como tiene que ir un campo numérico y un varchar. Pongo dos ejemplos y me dices si es así
Código:
Numérico = " & arrFields(i) & "

Varchar = '" & arrFields(i) & "'

i=el indice que sea
Es decir mi duda es como va el tema de las comillas simples y las dobles. ¿Cuán se ponen las dos juntas y cuando van solas?
  #16 (permalink)  
Antiguo 20/03/2007, 10:55
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Tal y como lo has puesto tu.
Es quitar las comillas simples de los campos numéricos, incluida la primary key, que es numérico también.

Las comillas dobles es de ASP para meter variables externas en un texto.

no sé a que te refieres con lo de i.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #17 (permalink)  
Antiguo 20/03/2007, 11:11
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Imprimiendo las query, me da esto

Cita:
última Query de RESTAURANTE: INSERT INTO RESTAURANTES (ID_R,NOMBRE, ZONA, ESPECIALIDAD, PRECIO, FOTO, PAGAN, PAGEXTRA,PLANTILLA, FOTO2, FOTO3, MICROSITE) VALUES (408613,'Mi Restaurante 8', 122, 94, 7,' abrasas.gif', , , ,' abrasas.gif',' abrasas.gif',' ')

última Query de DESCRIPCIÓN: INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES (408613, 1,'Nombre: Mi Resturante 8
Dirección: Dirección de Mi Restaurante 8 ')
Estos son los INSERT:

Código:
sql1 = "INSERT INTO RESTAURANTES (ID_R,NOMBRE, ZONA, ESPECIALIDAD, PRECIO, FOTO, PAGAN, PAGEXTRA,PLANTILLA, FOTO2, FOTO3, MICROSITE) VALUES ("&id_r&",'" & arrFields(0) & "'," & arrFields(1) & "," & arrFields(2) & "," & arrFields(3) & ",'" & arrFields(4) & "'," & arrFields(5) & "," & arrFields(6) & "," & arrFields(7) & ",'" & arrFields(8) & "','" & arrFields(9) & "','" & arrFields(10) & "')"
Código:
sql2 = "INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES ("&id_r&"," & arrFields(11) & ",'" & arrFields(12) & "')"
Y este es el archivo csv ahora:
Cita:
Mi Restaurante 5, 122, 94, 7, abrasas.gif, , , , abrasas.gif, abrasas.gif, , 1,<b>Nombre:</b> Mi Resturante 5<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 5

Mi Restaurante 6, 122, 94, 7, abrasas.gif, , , , abrasas.gif, abrasas.gif, , 1,<b>Nombre:</b> Mi Resturante 6<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 6

Mi Restaurante 7, 122, 94, 7, abrasas.gif, , , , abrasas.gif, abrasas.gif, , 1,<b>Nombre:</b> Mi Resturante 7<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 7

Mi Restaurante 8, 122, 94, 7, abrasas.gif, , , , abrasas.gif, abrasas.gif, , 1,<b>Nombre:</b> Mi Resturante 8<br><b>Direcci&oacute;n:</b> Direcci&oacute;n de Mi Restaurante 8
Me sigue sin funcionar
  #18 (permalink)  
Antiguo 20/03/2007, 11:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Una cosa, cuando imprimo me muestra el segundo insert porque he cambiado el siguiente if que está justo debajo del sql1 en el codigo que he puesto antes

Antes:

Cita:
Conn.execute(sql1)
if Conn.errors.count <> 0 then
Conn.rollback
exit do
end if
Ahora:

Cita:
Conn.execute(sql1)
if Conn.errors.count = 0 then
Conn.rollback
exit do
end if
Como está ahora como nínimo me deja imprimir el sql2. Aunque tampoco funciona.
  #19 (permalink)  
Antiguo 20/03/2007, 11:46
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Quita el sql2 a ver si por lo menos el primero te funciona.

Date cuenta que estas colando algun espacio en alguno de los campos.
Veo que debes tener otra tabla Zona a la que hace referencia la primera tabla.
Si metes algun valor en zona de la primera tabla que no esta en la tabla Zona, te cascará también.

Así de primeras sin poder ejecutar las sentencias en un sqlplus o similar no veo el error. Pero estar esta dando en algún sitio a nivel base de datos.

Como te digo, si puedes prueba primero ejecutando la primera sentencio sólamente a ver si la traga. Y si se consigue ya es un avance...
por hoy ya me piro..

un saludo.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #20 (permalink)  
Antiguo 21/03/2007, 02:07
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Muchas gracias lo voy a probar...
  #21 (permalink)  
Antiguo 21/03/2007, 03:07
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Cita:
Iniciado por Zoe79 Ver Mensaje
Quita el sql2 a ver si por lo menos el primero te funciona.

Date cuenta que estas colando algun espacio en alguno de los campos.
Veo que debes tener otra tabla Zona a la que hace referencia la primera tabla.
Si metes algun valor en zona de la primera tabla que no esta en la tabla Zona, te cascará también.
Tenías razón había espacios. Pero los he quitado y ya no están (aquí te dejo las sentencias sql corregidas):

Código:
sql1 = "INSERT INTO RESTAURANTES (ID_R,NOMBRE,ZONA,ESPECIALIDAD,PRECIO,FOTO,PAGAN,PAGEXTRA,PLANTILLA,FOTO2,FOTO3,MICROSITE) VALUES ("&id_r&",'"&arrFields(0)&"',"&arrFields(1)&","&arrFields(2)&",'"&arrFields(3)&"','"&arrFields(4)&"','"&arrFields(5)&"','"& arrFields(6)&"',"& arrFields(7)&",'"&arrFields(8)&"','"&arrFields(9)&"','"&arrFields(10)&"')"
Código:
sql2 = "INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES ("&id_r&","&arrFields(11)&",'"&arrFields(12)&"')"
Por otro lado, he probado a quitar sql2 y aún así no me introduce sql1.

En cuanto a los campos que se cogen de otras tablas, sé que la zona que he puesto existe en la tabla zona y las demás también existen.

No sé, si tienes alguna idea más, ya sabes...

GRACIAS
  #22 (permalink)  
Antiguo 22/03/2007, 03:08
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Hola de nuevo,

que tal vas con el tema? algún avance?
si consigues lanzar la sentencia en sqlplus o similar aparecerá el error...
ya siento no poder hacer mucho más...

un saludo
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #23 (permalink)  
Antiguo 23/03/2007, 02:23
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Ayer no toqué el tema, aunque si consigo algo nuevo, te lo diré. lo del sqlPlus, no sé. Ya veré si me lo puedo montar

Gracias por tu interés

Saludos
  #24 (permalink)  
Antiguo 25/03/2007, 21:06
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 23 años
Puntos: 11
Re: Averiguar el ID del último registro insertado en una tabla para...

No se si al final has resuelto el problema o no pero lo mas recomendable por la Base de datos que estas ocupando es que aproveches su versatilidad y no intentes complicartela desde un lenguaje externo que no es nato para Oracle como es ASP.

Lo mas conveniente es importar la data a una tabla temporal la cual al hacer un insert dispare un trigger que ingrese una data en tu tabla principal y tres datas a tu tabla secundaria a traves de un procedimiento luego borrando la tubla ocupada de la tabla temporal (con elo lograras que las tublas que quedan en la tabla temporal es que no se pudieron insertar en la sotras dos por algun problema y solamente trabajas en ellas).


asi sabes que puedes subir toda la data sin ninguna restricciòn a la temporal (esto debido a que en ella no le debes poner muchas restricciones) y asi la data mala simplemente la tienes en la temporal en Oracle y no en un archivo txt
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #25 (permalink)  
Antiguo 26/03/2007, 01:31
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Cita:
Iniciado por Linterns Ver Mensaje
No se si al final has resuelto el problema o no pero lo mas recomendable por la Base de datos que estas ocupando es que aproveches su versatilidad y no intentes complicartela desde un lenguaje externo que no es nato para Oracle como es ASP.

Lo mas conveniente es importar la data a una tabla temporal la cual al hacer un insert dispare un trigger que ingrese una data en tu tabla principal y tres datas a tu tabla secundaria a traves de un procedimiento luego borrando la tubla ocupada de la tabla temporal (con elo lograras que las tublas que quedan en la tabla temporal es que no se pudieron insertar en la sotras dos por algun problema y solamente trabajas en ellas).


asi sabes que puedes subir toda la data sin ninguna restricciòn a la temporal (esto debido a que en ella no le debes poner muchas restricciones) y asi la data mala simplemente la tienes en la temporal en Oracle y no en un archivo txt
Por como ha descrito el problema dudo mucho que tenga acceso a la base de datos para crear triggers o tablas temporales. Lo mismo me equivoco...
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #26 (permalink)  
Antiguo 26/03/2007, 03:54
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Creo que no, ¿Qué hace falta para crear un trigger o tabla temporal? Si hace falta tener acceso a un panel de control de Oracle, la respuesta es no. La base está en remoto y sólo tengo acceso mediante el navegador. Creo que esto es así porque mi ISP me dice que no me facilita ningún interfaz de acceso a la BBDD y además no puedo usar algo del estilo sql Plus ya que trabajo con Mac Os.

De nuevo muchas gracias a los dos por todas las molestias. Yo ahora mismo lo veo negro. Pero cualquier idea será bien recibida.

gracias
  #27 (permalink)  
Antiguo 26/03/2007, 04:02
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Cita:
Iniciado por judes Ver Mensaje
Creo que no, ¿Qué hace falta para crear un trigger o tabla temporal? Si hace falta tener acceso a un panel de control de Oracle, la respuesta es no. La base está en remoto y sólo tengo acceso mediante el navegador. Creo que esto es así porque mi ISP me dice que no me facilita ningún interfaz de acceso a la BBDD y además no puedo usar algo del estilo sql Plus ya que trabajo con Mac Os.

De nuevo muchas gracias a los dos por todas las molestias. Yo ahora mismo lo veo negro. Pero cualquier idea será bien recibida.

gracias
Necesitas tener acceso a la bd y además tener ciertos permisos, y si tal como dices no te facilitan ningún acceso esta complicado...

alguna vez has consigo meter datos en alguna de las tablas?
aunque sea creando una simple insert con datos que metas tu manualmente sin leer del txt?
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #28 (permalink)  
Antiguo 26/03/2007, 05:32
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Averiguar el ID del último registro insertado en una tabla para...

Cita:
Iniciado por Zoe79 Ver Mensaje
Necesitas tener acceso a la bd y además tener ciertos permisos, y si tal como dices no te facilitan ningún acceso esta complicado...

alguna vez has consigo meter datos en alguna de las tablas?
aunque sea creando una simple insert con datos que metas tu manualmente sin leer del txt?
Perdona, creo que me explicado mal. Acceso a la BBDD para conectarme y preparar una página en ASP en la que incluya un formulario y luego lea los campos de este formulario y los introduzca en las tablas de la BBDD. Si que tengo.
Lo que digo es que no sé como funciona el tema de los triggers y de la creación de tablas temporales y que tampoco sé si tengo permiso para hacerlo. Que hace falta para ello.
  #29 (permalink)  
Antiguo 27/03/2007, 07:57
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 23 años
Puntos: 1
Re: Averiguar el ID del último registro insertado en una tabla para...

Necesitas más acceso a la base de datos que simple conexión.
No crea que puedas crear tablas a tu gusto... O triggers, por la descripción que das...

Yo ya te dije. Probaría a crearme una simple insert en una página donde vayas testeando con diferentes valores en la insert, y a ver si así das con ello.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #30 (permalink)  
Antiguo 21/06/2007, 08:47
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años, 8 meses
Puntos: 2
Re: Averiguar el ID del último registro insertado en una tabla para...

Hola,
Procedimiento almacenado es la solución a tu problema

Prueba con eso.

Saludos
__________________
Amtez de enpezar kom otro idioma,
escrivamos vien el nueztro i como corezpomde. Jracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:41.