Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2008
nachoasensio nachoasensio is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 61
Poder: 22
nachoasensio Va por buen camino
¿Hay algo equivalente al FlushBuffers en TADODataset?

Hola:

Estoy creando una aplicación monopuesto con Turbo Delphi 2006 Explorer, Access y ADODataset. Todo funciona razonablemente bien, pero tengo un problema: antes de insertar un nuevo registro sobre un ADODataset, utilizo otro para obtener el valor máximo de un campo (select MAX(...)), de modo que sumo uno al número obtenido y uso ese resultado como valor para un nuevo campo. Con ese valor hago un insert sobre el primer dataset, lo asigno y hago un post. A veces, si hago dos inserciones muy seguidas (con un intervalo de 1 segundo o menos entre ellas) el número que obtengo es el anterior que obtuve, es decir, pese a que en los controles de datos (entre ellos un DBGrid) aparece la nueva fila con el nuevo código (y ya se ha hecho el post, dado que inserto, asigno y hago Post), éste no existe cuando el segundo ADODataset ejecuta la consulta que busca el máximo, por lo que devuelve el máximo anterior y se repite el código.

Antiguamente, con el BDE, existía un método llamado "FlushBuffers" que obligaba a Access a refrescar sus buffers y a asegurar que los datos guardados físicamente en la base de datos eran los correctos, pero este método ya no aparece con ADODataset.

Si espero 2 ó 3 segundos entre una inserción y la siguiente nunca tengo ese problema. Antes de poner un temporizador que bloquee la ejecución 3 segundos (solución "cutre" pero que funcionaría) me gustaría saber si alguien conoce la solución a este problema o el método que sustituye a FlushBuffers (si es que existe).

He probado a cerrar el primer dataset, ejecutar la consulta del segundo (la que calcula el máximo) y volver a abrir el primer dataset; también he probado a desactivarlo y activarlo (a ver si así refresca el buffer), pero no he logrado resolver el problema.

Muchas gracias por adelantado y perdonad si este problema ya se ha resuelto con anterioridad. He estado buscando por los foros y no lo he encontrado.

Saludos

Nacho
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con Table.FlushBuffers geolife Conexión con bases de datos 4 15-01-2008 22:51:50
Flushbuffers en ADO eLYaN Conexión con bases de datos 1 14-07-2006 12:38:59
Edit en TADODataSet scooterjgm Conexión con bases de datos 2 10-04-2006 09:46:36
Usar FlushBuffers??? CarmaZone Tablas planas 2 19-07-2005 23:33:54
objeto TADODataSet Nidia H. Ochoa OOP 2 06-07-2004 22:48:12


La franja horaria es GMT +2. Ahora son las 12:38:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi