FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Extraño comportamiento de ADO
Hola Amigos, estoy desarrollando una aplicación en delphi que se conecta con una bd de access via ADO y estoy notando un comportamiento bastante extraño, previamente les mostraré el código que estoy utilizando y luego les describo lo que estoy observando:
el código de arriba lo que hace es enviar un insert a la bd, tengo un procedimiento GenerarID que lo que hace es generar números de id secuenciales, utilizo este procedimiento y no los campos autonuméricos de access porque así esta implementado el sistema y debo continuar con esta estrategia de desarrollo, el tema es que, si envio mas de un insert, el procedimiento generarid, a veces, me devuelve el mismo número, como si en el ciclo anterior del for no hubiese grabado el id. Para comprobar esto, puse un sleep(300) y ahí si funciona, la pregunta sería, ¿existe alguna forma de asegurarse que Access grabe efectivamente el registro, esto dentro de procedimiento GenerarID, para asegurarse que no devuelva un id duplicado? Si no existe alguna instrucción tipo flush (la ví en algún otro lenguaje), que baje a disco lo que esté en buffer, tendré que dejar el sleep(300) para que funcione. Gracias por la atención y saludos. |
#2
|
|||
|
|||
Hola,
no existe flush, pero si refresh o update, que hace exactamente eso. De todas maneras, ten en cuenta que si GeneraId no relee de la base de datos para encontrar el numero, tendra en buffer los registros anteriores, sin el nuevo insertado. Saludos. |
#3
|
|||
|
|||
Gracias por la respuesta, estas ordenes que me comentas, ¿donde están?, ¿son parte de ado? como verás, en el código que pasé de ejemplo, estoy usando un objeto command y no encuentro aqui las ordenes sugeridas.
Te pido disculpas por la insistencia y nuevamente te agradezco tu atención. |
#4
|
|||
|
|||
Hola,
no lo recuerdo bien, pero creo que todos los descendientes de TCustomDataset tienen el metodo Refresh y Update (TADOQuery, TADOTable, etc...). No conozco el objeto command que comentas, tendras que mirar si desciende de TCommandDataSet, que probablemente lo sea pues parece un query. Si no es asi, no sabria decirte prueba de mirar los metodos propios de la clase. Un saludo. PD: en el caso que descienda de TCustomDataSet pero tenga el update o el refresh protegido, puedes usar el truco de 'hackear' la clase
espero que te sirva de ayuda. Un saludo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comportamiento extraño del TPageControl | Chris | OOP | 4 | 02-04-2009 21:16:09 |
Comportamiento extraño en StringList | MaMu | Varios | 7 | 19-06-2007 19:07:07 |
Un comportamiento extraño en delphi... | uper | Varios | 1 | 07-08-2004 00:44:14 |
Comportamiento extraño de Delphi | walrus | Varios | 3 | 05-08-2004 10:04:32 |
Comportamiento extraño dataModule | brandolin | OOP | 9 | 08-07-2004 14:25:47 |
|