Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas al actualizar Access (https://www.clubdelphi.com/foros/showthread.php?t=39420)

Pitilingorri 19-01-2007 11:58:20

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

Neftali [Germán.Estévez] 19-01-2007 12:15:12

¿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...

Pitilingorri 19-01-2007 12:31:47

Cita:

Empezado por Neftali
¿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...

Si, tiene clave primaria.
Una cosa que se me habia olvidado comentar es que hay una relación maestro-detalle con otra tabla...quizas esto os pueda ayudar.

Pitilingorri 25-01-2007 13:17:54

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:

fjcg02 25-01-2007 23:28:07

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

Pitilingorri 29-01-2007 17:55:48

Cita:

Empezado por fjcg02
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

La estructura de la tabla "problematica" es la siguiente:

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)

Neftali [Germán.Estévez] 29-01-2007 18:09:59

¿Puedes poner las líneas de código que utilizas para buscar y actualizar?

Pitilingorri 29-01-2007 19:18:36

Cita:

Empezado por Neftali
¿Puedes poner las líneas de código que utilizas para buscar y actualizar?

Para buscar y actualizar uso un dbgrid y un dbNavigator. Las modificaciones las hago sobre dos dbedit y dos dbLookUpCombobox, no sobre el dbgrid

Neftali [Germán.Estévez] 29-01-2007 19:33:39

Cita:

Empezado por Pitilingorri
Las modificaciones las hago sobre dos dbedit y dos dbLookUpCombobox

¿Esos componentes están "ligados" a la misma fuente de Datos del DBGrid (Tabla o consulta)?

Pitilingorri 29-01-2007 19:37:10

Cita:

Empezado por Neftali
¿Esos componentes están "ligados" a la misma fuente de Datos del DBGrid (Tabla o consulta)?

Efectivamente, están ligados a la misma tabla ¿Puede ser este el problema? Lo digo porque, como he comentado antes, si el el campo Profundidad_ini pongo escala 0, no me da problemas, aunque nom e deja meter decimales.

Neftali [Germán.Estévez] 30-01-2007 11:26:23

¿Has probado tanto con el punto(.), como con la coma(,) para el separador decimal?
¿Exactamente cómo está definido el campo en la tabla?

Pitilingorri 30-01-2007 19:13:07

Cita:

Empezado por Neftali
¿Has probado tanto con el punto(.), como con la coma(,) para el separador decimal?
¿Exactamente cómo está definido el campo en la tabla?

Solo me deja usar comas como separador decimal, no admite el punto.

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.

Pitilingorri 14-02-2007 12:47:13

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. :)

waly2k1 19-02-2007 16:34:47

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