Manual de ASP

 
 
 

Mapa Web

 
borde   borde
Portada Lista de Códigos ASP Recoger valor del campo autonumérico después de insertar en ASP

 

Recoger valor del campo autonumérico después de insertar en ASP
Al hacer una inserción de un registro en una tabla, si el identificador es autonumérico, generalmente no sabemos cuál habrá tocado. Aquí enseñamos a obtener el identificador después de la inserción.

Cuando en una base de datos tenemos dos tablas relacionadas con una relación uno a varios, la clave primaria de la tabla con cardinalidad 1 se encuentra en la tabla con cardinalidad n como clave foránea. Normalmente las claves primarias suelen utilizar campos de tipo autoincremento.

El presente artículo detalla cómo averiguar el valor que se ha asignado a la clave primaria en una operación de inserción, para de esta manera poder introducir registros en la tabla relacionada que cuenta con la clave foránea.

Para el ejemplo, utilizaremos las siguientes tablas:



En un principio vamos a partir que tenemos un nuevo pedido para el cual tenemos que añadir varios detalles. En este supuesto, necesitamos insertar primero el pedido, recoger el valor que la base de datos le ha asignado al campo IdPedido, y a continuación insertar los distintos detalles con ese valor de IdPedido.

Para hacer esto, vamos a utilizar un objeto recordset:

Dim rspedidos
Set rspedidos=Server.CreateObject("ADODB.Recordset")


A continuación abrimos el Recordset:

With rspedidos
    .open "Pedidos" ,adOpenDynamic, AdLockOptimistic,adCmdTableDirect


adOpenDynamic: Cursor que no tiene un conjunto único de registros, y en el que los cambios serán visibles en el recordset.
AdLockOptimistic: El registro no se bloquea hasta que no se insertan los datos
adCmdTableDirect: sirve para indicar el nombre de la tabla

La combinación de cursor, tipo de bloqueo y si el campo esta indexado o no hace que podamos recoger el campo ID, otras combinaciones pueden no funcionar.

A continuación, creamos un nuevo registro, e insertamos en el los valores de los campos:

    .AddNew
       .Fields("idcliente")=16
       .Fields("cargo")=500
       .Fields("destinatario")="pepe"


Una vez se han introducido todos los valores de los campos, se actualiza el recordset

    .update

Y a continuación, sacamos el ID que le ha asignado la base de datos:

    MiID= .Fields("IdPedido")
End With


Ahora contamos con una variable miID que nos permite hacer los inserts correspondientes en la base de datos, bien con recordsets o con sentencias sql del tipo Insert Into.

Código completo:

Dim rspedidos
Set rspedidos=Server.CreateObject("ADODB.Recordset")
With rspedidos
    .open "Pedidos" ,adOpenDynamic, AdLockOptimistic,adCmdTableDirect
    .AddNew
       .Fields("idcliente")=16
       .Fields("cargo")=500
       .Fields("destinatario")="pepe"
   .update
    MiID= .Fields("IdPedido")
End With

Nota: Puede ser que nuestro sistema no tenga declaradas las variables del sistema del tipo adOpenDynamic, AdLockOptimistic o adCmdTableDirect. Para que queden definidas debemos incluir el archivo "adovbs.inc".

 

 
Portada
Capítulos del Manual de ASP
Crear una Página ASP
Agregar secuencias de comandos del servidor
Combinar HTML y comandos de secuencias de comandos
Utilizar directivas ASP
Espacio en Blanco en las secuencias de comandos
Introducción a las variables
Alcance de las variables
Alcance de sesión y Alcance de aplicación
Utilizar Constantes
Interactuar con secuencias de comandos del cliente
Escribir y Definir Procedimientos
Llamar a Procedimientos
Procesar los datos proporcionados por el usuario
La colección QueryString y la colección Form
Validar los datos de los formularios
Origen de Datos
Utilizar el objeto recordset para manipular resultados
Combinar formularios y el acceso a la base de datos
Transferencia entre archivos ASP
Practicar en línea
Lista de prácticas en línea
FAQ
Preguntas frecuentes
Códigos ASP
Lista de Códigos ASP
Foros
Foros ASP
Otros Manuales
Manuales de otros lenguajes
 
   
 
 
Alojamiento web en Hostalia