![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Buenas de nuevo, allá vamos. Primero respondo, y luego agrego
Con el Debug detenido justo antes de la sentencia que lanza la excepción 'DatabaseError(SRecordChanged);'. Ello en el método y unit: procedure TSQLResolver.DoExecSQL(SQL: TWideStringList; Params: TParams); He mirado el contenido de SQL.Text, sólo pidiendolo sobre el código porque sobre el inspector de objetos 'local variables', el depurador no mostraba tal propiedad. Este es su contenido, tras haber añadido informacion a cada campo directamente, para acotar el error más a fondo:
Y Esta es la query realizada, que inicialmente obtiene los datos del cliente para mostrarlos en el formulario:
Ahora viene lo mejor, ayer estuve haciendo un programa de prueba para aislar la funcionalidad que puede ocasionar el problema. Cree una tabla cliente con tres campos (ID,Nombre,Direccion) añadi las clases implicadas, y... ¡voila! funcionaba perfectamente. ¿Qué puedo hacer? pues seguramente alguna parte del programa está afectando, pero mira que llevo horas depurando, no hay queries que 'intoxiquen' al provider, ni nada que yo haya visto que pueda afectar. Lo único que se me ocurre es ir añadiendo código a mi programa de prueba hasta que ocurra el mismo error que ahora se da en el programa completo. ¿Alguna idea más? Gracias y un saludo. |
|
#2
|
||||
|
||||
|
¡Hola!
Excelente dato. No sé si ya notaste que esa sentencia "Update Cliente..." no está usando upWhereKeyOnly, sino que pareciera usar upWhereAll. Cita:
En teoría, si UpdateMode fuese upWhereKeyOnly, ese "Update Cliente..." debería terminar en un simple "Where ID = ?", y no incluir a todos los demás campos en la cláusula Where. Funcionando entonces correctamente. Nuevamente, al estar detenido el programa en ese punto, revisa qué valor tiene la propiedad Provider.UpdateMode. No con el inspector, sino metiendo "Provider.UpdateMode" a las observaciones (watches). Todo parece indicar que NO es upWhereKeyOnly, sino upWhereAll. ¿Alguna parte del programa estará cambiando esa propiedad? ![]() Esperamos tus avances. Al González. ![]() Última edición por Al González fecha: 13-03-2009 a las 18:21:09. |
|
#3
|
|||
|
|||
|
Hola de nuevo,
lamento la tardanza en responder, resulta que he estado estudiando bien en el tema. Y tienes razón, se colaba en un sitio no esperado el cambio de la propiedad Provider.UpdateMode a upWhereAll. Cuanto siento el tiempo que hemos perdido por algo que no era tan complicado en realidad. Después de 'arreglar' este error he seguido con problemas asociados pues el provider era usado por otras queries (en algunos casos del programa) y perdía la referencia del registro del DataSet original. Quizá por simplificar (usar un Provider que se alimenta de varias queries) he terminado complicando más el tema. Bueno, muchas gracias de nuevo por tu valiosa ayuda. Volveremos a vernos pronto, seguro. Saludos. |
|
#4
|
||||
|
||||
|
Cita:
![]() Puede que valga la pena abrir un hilo sobre esa cuestión particular. |
|
#5
|
|||
|
|||
|
Bien, entonces quizá lo mejor es que cuando tenga listo y depurado el tema haga una exposición de cómo he organizado la distribución de Queries+Providers+DataSet y discutamos ¿cierto?.
Esta organización la estoy usando en una clase genérica que he creado, la cual define un comportamiento bastante común: sacar listados de esa entidad, obtener datos de ficha, actualizar, etc. Y clases que siempre suelen funcionar igual como 'clientes', 'contactos', 'proveedores' etc la heredan. Gracias y un saludo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| applyupdates (record not found or changed by another user) | Stell | Conexión con bases de datos | 4 | 13-05-2008 13:36:20 |
| Error: "Record not found or changed by another user" | jmlifi | Varios | 0 | 27-01-2006 10:16:57 |
| Record not found or changed by another user | felixgo | Conexión con bases de datos | 1 | 30-09-2005 13:07:40 |
| Record not found or changed by another user. | Luis | Conexión con bases de datos | 2 | 12-08-2005 19:50:45 |
| error couldn't perform the edit because another user changed the record | marcelofabiani | Conexión con bases de datos | 3 | 25-01-2005 01:55:11 |
|