Ver Mensaje Individual
  #4  
Antiguo 27-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 27
jachguate Va por buen camino
¿la tabla tiene una llave primaria?

¿está dicha llave primaria identificada en el TQuery?. debiera ocurrir automáticamente, pero quizás el driver de Mysql no provee esa funcionalidad.

El mensaje de error significa que el BDE no ha podido encontrar el registro para actualizar... por tanto asume que fue modificado (o borrado) por otro usuario, en un entorno multiusuario.

Te recomiendo la lectura del libro "La Cara oculta de Delphi 4", de Ian Marteens, enfocado al desarrollo con BDE, que podes obtener en el ftp del club Delphi-Win32/Libros.

De lo aprendido en dicho libro (según creo), el BDE se basa en el valor establecido en la propiedad UpdateMode para construir la sentencia Update.

Probablemente dicho valor está establecido a upWhereAll, pero o bien hay algún campo cuyo valor es construido al vuelo o bien el valor realmente ha cambiado. Podes conseguir corregir el comportamiento dejando dicho valor en upWhereKeyOnly, para que solo en los campos que conforman la llave primaria formen parte del where, aunque esto signifique el riesgo de machacar las modificaciones realizadas por otro usuario.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita