Tema cerrado 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Solucionado Error en RL
31-10-2017, 01:38 PM (Este mensaje fue modificado por última vez en: 31-10-2017 01:41 PM por jesus_gesdemo.)
Mensaje: #1
Error en RL
Hola, tenemos una incidencia en un cliente que no tenemos muy claro por que esta pasando. Voy a intentar explicarme.

Para actualizar la base de datos de los dispositivos, cada vez que hay un cambio, en lugar de provisionar datos, lo hacemos a través de un script que ejecuta el propio dispositivo; el caso es que en uno de estos scripts, hemos creado una tabla y generado una relación entre una tabla que ya existía y esta nueva tabla.

Por ejemplo, hemos creado la tabla GEN_CRMSEXO:
Código XOne:
sSQL="CREATE TABLE GEN_CRMSEXO ( ID integer  PRIMARY KEY AUTOINCREMENT,     ROWID varchar(50) NULL ,     ITX_TERMINAL integer NULL ,     DESCRIPCION varchar(50) NULL ,     MK_BAJA integer NULL ,     CODIGODATAMINING varchar(20) NULL  );"
on error resume next
appdata
.GetCollection("ForMaintenance").ExecuteSqlString sSQL 
En la tabla ya existente GEN_PROPIETARIO hemos creado el campo IDSEXO:
Código XOne:
sSQL="ALTER TABLE GEN_PROPIETARIOS  add IDEDAD INTEGER NULL "
on error resume next
appdata
.GetCollection("ForMaintenance").ExecuteSqlString sSQL 

Y por último, en el script también metemos la relación en la RL:
Código XOne:
sSQL="INSERT INTO RL (T1,F1,T2,F2,T) VALUES ('GEN_PROPIETARIOS','IDEDAD','GEN_CRMEDAD','ID','L')"
on error resume next
appdata
.GetCollection("ForMaintenance").ExecuteSqlString sSQL 

el caso es que ahora cuando desde la Tablet se actualiza el campo IDSEXO no llega bien al servidor, da un error y la IQUEUE trae el campo MAP a null. En la errorlog se ve también este error:
Código XOne:
[FROM 4]:Mapping Error for field IDSEXO 

En el dispositivo el log muestra este error:
Código XOne:
10-31 13:03:49.617 V/XOneReplicator7203):  *** RPL GET ROWIDTable Namegen_propietarios
10
-31 13:03:49.617 V/XOneReplicator7203): SQL:UPDATE gen_propietarios SET MK_VENTAANTERIOR=0,MK_TRABAJADOR=1,MK_JUBILADO=0,IDSEXO=1,IDEDAD=1,NACIMIENTO=1999,APELLIDOS='XXX YYY ZZZZ',IDENTORNO=1,IDTAMFINCA=2  WHERE      ROWID='1-18-1-01BB1EC1F1104D93843F648AE686'
10-31 13:03:49.617 V/XoneAndroidFramework7203): La conexion cacheada /data/user/0/com.xone.android.ence/app_ence_xone/bd/gestion.db estaba cerrada
10
-31 13:03:49.717 V/XoneAndroidFramework7203): La conexion cacheada /data/user/0/com.xone.android.ence/app_ence_xone/bd/gestion.db estaba cerrada
10
-31 13:03:49.767 V/XOneReplicator7203): MAPERRNo hay mapeo para el campo IDSEXO en el cliente.
10-31 13:03:49.767 V/XOneReplicator7203):  *** RPLsending error to serverMapping Error for field IDSEXO 

Por que puede dar el error?
En el servidor la RL esta actualizada correctamente y los campos y tablas existen. Además, si provisionamos datos al dispositivo si que funciona correctamente.

Un saludo!

Hola,
me auto contesto, parece ser que el replicador cliente cachea las relaciones en la rl, por lo que había que reiniciar el dispositivo antes.

Gracias!!!
Encuentra todos sus mensajes
31-10-2017, 03:33 PM (Este mensaje fue modificado por última vez en: 31-10-2017 03:33 PM por Ruben.)
Mensaje: #2
RE: Error en RL
Hola, tu te has respondido correctamente, el RL se cachea, para que el sistema de réplica sea más rápido.

La forma que tiene el frame para reiniciar el RL, es enviando una nueva base de datos. Otra alternativa es reiniciar el dispositivo.

Por ello, para enviar cambios de base de datos que lleven cambios de RL, es mejor provisionar, y para ello te aconsejo un provisionar en modo seguro(tu sistema lo tiene que tener montado y disponer de una versión de XOneLive y Framework actual).
Si solo vas a crear nuevos campos o tablas, que no incluyan una relación en el RL, no es necesario provisionar.
Encuentra todos sus mensajes
Tema cerrado 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | XOne | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS