Problemas al actualizar Access
Tengo una aplicación en Delphi que trabaja sobre unas tablas access utilizando ADO. El problema es que al actualizar un registro, me sale el siguiente mensaje de error:
"No se puede encontrar la fila para la actualización: algunos valores han cambiado desde la última vez que se leyó" Lo más curioso es que si creo un nuevo elemento en la tabla, y lo intento actualizar, no me sale este error. En algun sitio me han dicho que el problema podria estar en meter un valor predeterminado, pero los he borrado en todos los campos, y me sigue dando error. Para la aplicacion uso TADOtable's, un TDBGrid, un tDBNavigator, y algunos TDBEdit y TDLookUpCombobox para mostrar los los datos de la fila del grid seleccionada. ¿Alguna idea? Gracias de antemano por vuestra ayuda |
¿La tabla tiene clave primaria? Ya se que parece que no tiene que ver nada con el error, pero me suena hace tiempo haber leído sobre esto...
|
Cita:
Una cosa que se me habia olvidado comentar es que hay una relación maestro-detalle con otra tabla...quizas esto os pueda ayudar. |
Bueno ,voy a aportar más datos para ver si alguien me ayuda a solucionar el problema. Resulta que el error da en un tipo especifico de campo de la tabla access, concretamente en un campo de tipo numerico, con tamaño de campo Decimal y escala 2. Si pongo la escala a 0 no me da ningún problema, pero necesito meter numeros con decimales en ese campo. ¿Alguna idea?:confused:
|
Este error suele dar siempre cuando no hay clave primaria, tal como ha indicado Neftali.
Si indicas la estructura de las tablas, igual podemos ayudarte. Un saludo |
Cita:
Codigo_material: Autonumerico. La tengo como clave principal Codigo_sondeo:Numerico (Entero largo). Este campo lo uso para con el que hago una relación maestro detalle con otra tabla cuya clave principal es Codigo_sondeo (Que es autonumerico) Material: Numerico (Entero) Profundidad_ini: Numerico (Decimal) Profundidad_fin: Numerico (Decimal) Tipo: Numerico (Entero) |
¿Puedes poner las líneas de código que utilizas para buscar y actualizar?
|
Cita:
|
Cita:
|
Cita:
|
¿Has probado tanto con el punto(.), como con la coma(,) para el separador decimal?
¿Exactamente cómo está definido el campo en la tabla? |
Cita:
En Delphi los campos problematicos están definidos como TBCDField. En Access, si seleccionamos el campo en vista de diseño, en la pestaña general aparece lo siguiente: Tamaño del campo: Decimal Formato: Precisión: 18 Escala: 2 Lugares decimales: Automático ... Requerido: Si Indexado: No Lo curioso es que si en Escala pongo el valor 0, no me da ningún problema, pero aunque meta decimales en la aplicación, después estos decimales no aparecen. P.D.: Aunque no consiga hallar el error, os agradezco vuestra ayuda. |
Bueno, finalmente he hallado la solución. que por cierto es bastante "simple" :D
He cambiado el tamaño de campo de decimal a simple, y con eso me ha dejado de dar problemas. Espero que a alguien le sirva esta solución en el futuro. De todos modos, muchas gracias por vuestra ayuda, ya que aunque no me ha dado la solución final, me ha ayudado a descartar otro tipo de errores. :) |
Problema resuelto ???
Mirá es ilógica la solución que encontraste y de hecho no fue eso lo que te solucionó el problema, sino que tendrías algún combo o grid que perdía la relación con el registro que actualizabas, 'donde tenías el datafield', éste se actualizaba o algun campo se actualizaba antes de que realices el update/Post de la tabla, entonces lógicamente perdías el valor original del registro.
|
La franja horaria es GMT +2. Ahora son las 20:31:14. |
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