ASP - Cómo capturo el autonumérico generado en un INSERT

 
Vista:

Cómo capturo el autonumérico generado en un INSERT

Publicado por Rafa (2 intervenciones) el 30/09/2003 13:28:41
Hola. Primero explicaré la situación y luego planteo el problema.
* Situación:
Tengo dos tablas en Access (A y B).
El identificador de la tabla A (id_A) es un autonumérico.
En la tabla B, un campo relaciona sus filas con la tabla A. En ese campo quiero guardar el id_A que corresponda en la relación.
* Problema:
Hago una inserción en A, y para hacer la correspondiente inserción (relacionada) en B necesito conocer el id_A que se acaba de generar. ¿Cómo puedo capturarlo?
* Solución que se me ocurre:
Calcular el máximo id_A de la tabla A
* Problema a esta solución:
Cuando calcule el máximo id_A puede que otra persona que esté usando el programa haya generado una nueva inserción en la tabla A, con lo cual me quedarían los datos inconsistentes.

Saludos.
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:Cómo capturo el autonumérico generado en un INS

Publicado por Avatar (150 intervenciones) el 30/09/2003 16:43:57
Hola:

mira.. la solución a tu problema depende de la plataforma.
si estas usando SQL SERVER existe una funcion incorporada llamada @@IDENTITY que devuelve el ultimo ID insertado en la coneccion desde donde estas haciendo la consulta.
En Oracle existe otra función cuyo ejemplo es como sigue:
"select nombre_secuencia.currval from dual".
La cosa es que tenes que tener una secuencia que genere los IDs, pero esa es otra historia. Para mayor referencia fijate en el foro de ORACLE.
En Access lamentablemente te tengo que informar que no se puede hacer algo as.

salu2
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:Cómo capturo el autonumérico generado en un INS

Publicado por Rafa (2 intervenciones) el 30/09/2003 20:52:47
Como tu dices, lamentablemente estoy trabajando con Access. Por lo que me comentas, mi solución pasa por rediseñar las tablas (siguiendo con el ejemplo, unir las tablas A y B).
En cualquier caso muchas gracias por la lección.
Saludos.
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:Cómo capturo el autonumérico generado en un INS

Publicado por NoBody (28 intervenciones) el 01/10/2003 07:14:15
Hola...
No desesperes hombre... Nunca está todo acabado; al insertar un registro usando ADO (con los metodos ADDNEW y UPDATE), al hacer el método Update el recordset te queda apuntando al registro recién creado, por lo que tienes disponibles todos los campos de ese registro, incluso el nuevo valor autogenerado por la DB...

Espero te sirva.
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:Cómo capturo el autonumérico generado en un INS

Publicado por Cecilia Colalongo (22 intervenciones) el 12/10/2003 15:08:49
El SELECT @@IDENTITY AS Campo funciona con Access también.
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:Cómo capturo el autonumérico generado en un INS

Publicado por Cristian Goncalves (8 intervenciones) el 10/10/2003 18:07:58
Saludos,

Para obtener el id generado por un autonumerico haz lo siguientes.

Dim int_id_autonumerico

With rcd_recordset
.CursorType = 1 \'adOpenKeyset
.LockType = 3 \'adLockOptimistic
.Open \"[nombre_tabla]\", dbConnection, , , adCmdTable \' dbConnection es tu connectionString a Access
.AddNew \' Reservas un nuevo registro en la base de datos

.Fields(\"campo_1\") = \"valor campo 1\"
.Fields(\"campo_2\") = \"valor campo 2\"
.Fields(\"campo_3\") = \"valor campo 3\"

.Update \' Haces commit del insert

int_id_autonumerico = .Fields(\"campo_autonumerico\") \' Tomo el valor generado en el campo del ID

.Close \' Cerramos el Recordset
End With

La tabla deberís ser (supongamos)
campo_autonumerico Autonumeric NN PK
campo_1 Memo
campo_2 Memo
campo_3 Memo

Espero te sirva.
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