Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ADO
 Inserción de datos
 Foro Bloqueado  Tema Bloqueado


Autor Temas
malva
Starting Member


22 Posts
Mensajes - 26 Jun 2002 :  19:26:15  Ver Perfil  Enviar Email
Hola, tengo una página web que introduce datos en una base de datos Access que asigna auto áticamente un id al nuevo registro. Inmediatamente después tengo que averiguar cuál es el id que le ha asignado, pero la BD tarda más en actualizar el registro de lo que la página asp tarda en pedir el id. ¿Hay alguna manera de saber si se ha completado la inserción en la BD?

Gracias

Malva

buho_nero
Moderator

España
1316 Posts
Posted - 26 Jun 2002 :  19:50:33  Ver perfil  Enviar e-mail
¿Estás diciendo que un INSERT tarda más que un SELECT que es ejecutado posteriormente?
Yo alguna vez que otra hice eso que intentas y nunca tuve problemas, incluso desde un único SELECT editable. Ya sabes, editas, actualizas, cierras y vuelves a abrir, todo seguido. Y para saber si ha insertado, pues conpara los recordCount antes y despues. Y para averiguar el id, ordena por id de forma descendente y coje el primero.

Inicio Pagina

nicolas
New Member

España
74 Posts
Posted - 27 Jun 2002 :  20:09:32  Ver perfil  Enviar e-mail
Si insertas el registro con una sentencia INSERT, puedes hacer despues un "select max(id)..." (suponiendo que tu campo contador se llama así), para recuperar el valor más alto, es decir el último insertado. Esto podría fallar en situaciones de mucha concurrencia (otro usuario inserta un registro y tu recuperas su id, no el tuyo...), y sería más seguro meter ambas sentencias en una transacción.

Si insertas el registro desde un recordset, es un poco más complicado recuperar inmediatamente el valor del contador del registro insertado, es decir, despues del addNew y del Update, sin hacer ninguna consulta adicional. Para resolverlo, podrías hacer:
1) Utilizar el proveedor OLEDB en la cadena de consexión.
2) Utilizar un recordset estático de lado del cliente
3) antes de abrir el recordset, establecer la siguiente propiedad:

miRS.Properties("Update Resync")= 9
' el valor 9 es adResyncInserts + adResyncAutoIncrement

Por cierto, esta es una propiedad muy interesante que establecida de esta forma, permite sincronizar los valores de un recordset con campos autoincrementales (contadores) y con columnas de otra tabla (es decir, cuando montas un recordset sobre una consulta de 'join').

Por último, para asegurarte de que todo va bien utilizando ASP y ADO, controla los errores, hay otras preguntas en estos foros en que se explica y se dan ejemplos.


Nicolás Sánchez Ruiz
ESI BarcelonaInicio Pagina

malva
Starting Member


22 Posts
Posted - 27 Jun 2002 :  20:21:28  Ver perfil  Enviar e-mail
Gracias por las respuestas. Probaré lo que me indicáis.

De todas formas, si alguien ha estado en un caso similar, le agradecería que me contase su experiencia.

MalvaInicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar