Página 1 de 1

MariaDb dataset:Update error

Publicado: Dom May 05, 2024 8:32 pm
por CapelSoft
Hola,

En el cambio introducido en la versión 9.01 ' Evitar deshacer edición cuando se produce un error de salvado' aparece el siguiente error:

***************************** Registro de errores *****************************

Exe: ********************************************
Version: 1.0.0.0
User name: *************************************
Computer name: ***********************************
Fecha: 05-05-2024
Hora: 20:22:08
Memoria libre: 2097151
Area actual: 1

------------------------- Información del compilador --------------------------

Versión Xailer: Xailer 9.0.1
Compilador: Harbour 3.2.0dev (r1803161710)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
Plataforma: Windows 10 10.0

----------------------- Información detallada del error -----------------------

Subsistema: BASE
Código de error: 1132
Estado: .F.
Descripción: Bound error
Operación: array access
Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 1
Fichero:
Código error SO: 0

Pila de llamadas:
TMARIADBRECORDS:REPLACE (695)
TMARIADBRECORDS:UPDATE (536)
TSQLQUERY:UPDATE (580)
TFRM_ADMCONFIGCOLS:GRABADATOS (92)
TFRM_ADMCONFIGCOLS:BTNGRABARCLICK (115)
TBUTTONMOD:ONCLICK (0)
TBUTTONMOD:CLICK (197)
TBUTTONMOD:WMLBUTTONUP (303)
RUNFORM (0)
TAPPLICATION:RUN (292)
MAIN (23)


Este error aparece al hacer un segundo update() dando el primero un .F. por problemas de FK. Es decir, la secuencia es:

a. hacemos el primer :odataset:Update() -> el :update() devuelve un .F. por problemas de FK.
b. acto seguido hacemos otro :odataset:Update() -> da el error que muestro más arriba.

Entre a. y b. no hay cambio alguno en los datacontrols.

Espero haberme explicado.

Saludos,

Re: MariaDb dataset:Update error

Publicado: Dom May 05, 2024 8:37 pm
por ignacio
Buenas tardes,

Por la línea del error, se deduce que el buffer de datos interno de TMariaDB está corrompido, sin poder tener idea del motivo. Sin un ejemplo exprofeso que muestre el error es complicado solucionarlo, lo siento. Espero que pueda proporcionarlo. Gracias.

Un saludo

Re: MariaDb dataset:Update error

Publicado: Jue May 09, 2024 8:24 pm
por CapelSoft
Hola Ignacio,

Aquí tienes un ejemplo. No he conseguido reproducir el error en runtime. Pero veo que hay un comportamiento extraño: el primer update da un error de 'unique key' y en el segundo update da Ok. La secuencia es esta:
AltD()
LogDebug(::oDataset:lOnAppend)

l := ::oDataset:Update()

AltD()
LogDebug(::oDataset:lOnAppend)
Al hacer clic la primera vez en el boton 'Añadir' (hay que poner datos que dan error de clave única) el update muestra mensaje de error y el lOnAppend da .T. Si volvemos a hacer clic (sin cambiar ningún dato) el lOnAppend antes del update es .T. pero al hacer el update no da mensaje de error y devuelve .T. y el lOnAppend ha cambiado a .F.

Espero haberme explicado.

Re: MariaDb dataset:Update error

Publicado: Vie May 10, 2024 9:50 am
por ignacio
Buenos días,

Aquí funciona perfectamente sin ningún error.
Imagen 493.png
Imagen 493.png (4.73 KiB) Visto 24181 veces
Me he tomado la molestia de provocar un caso de error de actualización con su código, que consisten en quitar el autoincremental del campo ID y provocar una alta con un duplicado en dicho campo:
Imagen 494.png
Imagen 494.png (6.94 KiB) Visto 24181 veces
Y funciona perfectamente con este simple código:

Código: Seleccionar todo

   l := ::oDataset:Update()

   IF !l
      ::oDataset:Id := HB_RandomInt(99999999)
      l := ::oDataset:Update()
   ENDIF
Saludos

Re: MariaDb dataset:Update error

Publicado: Mar May 14, 2024 9:46 pm
por CapelSoft
Hola Ignacio,

Espero que este video se explique mejor que yo. El video está en el fichero rar. El problema es que al hacer el segundo clic en 'Aceptar' el oDataset:update() no devuelve .F. ni tampoco muestra el error de MariaDb. Simplemente devuelve .T. y no hace nada.

Saludos,

Re: MariaDb dataset:Update error

Publicado: Jue May 16, 2024 11:17 am
por ignacio
Buenos días,

Si quiere subir un vídeo utilice YouTube. No abro binarios de terceros. Lo siento.


Re: MariaDb dataset:Update error

Publicado: Lun May 27, 2024 7:55 pm
por CapelSoft
Buenas tardes,

Aquí está el enlace del video.

https://youtu.be/_gBKt1v-Rrs

Espero que sea de ayuda para aclarar el problema.

Re: MariaDb dataset:Update error

Publicado: Mar May 28, 2024 12:41 pm
por ignacio
Buenos días,

Modifique este código:

Código: Seleccionar todo

METHOD Update() CLASS XMariaDBRecords

   LOCAL lSuccess

   IF ::lOnAppend
      lSuccess := ::Append()
      IF lSuccess
         ::lOnAppend := .F.
      ENDIF
   ELSE
      lSuccess := ::Replace()
   ENDIF

RETURN lSuccess
Saludos

Re: MariaDb dataset:Update error

Publicado: Jue May 30, 2024 11:10 pm
por CapelSoft
Hola,

Así funciona.

Saludos,