Me presenta un error al usar el TWebDataSource, y no logro identificar por qué, el mismo proceso lo usaba en la versión que antes tenía y funcionaba.
Versión Xailer: Xailer 8.2.2
Compilador: Harbour 3.2.0dev (r1912031042)
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:
TWEBRECORDS:REFRESHCURRENT (513)
TWEBRECORDS:UPDATE (417)
TSQLQUERY:UPDATE (564)
TSQLQUERY:FASTUPDATE (688)
IMPORTALMACENES (65)
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
TWebDataSource
- ignacio
- Site Admin
- Mensajes: 9256
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: TWebDataSource
Hola,
En anteriores versiones ese método no estaba desarrollado y era simplemente lo que en <<Harbour>> se llama un método virtual, que básicamente no hace nada, pero impide que se produzca un error de ejecución. Eso es todo. Sin embargo en la última versión se desarrollo para que hiciera el trabajo correctamente.
En su archivo de error se indica que el error se produce en esta línea:
nPos := ATail( ::aWork[ nRecno ] )
Y nRecno en unas líneas más arribas está asignado como ::Recno(). Si se fija el error indica que está accediendo al elemento de la matriz (el elemento <1>) pero no existe. Es muy extraño. Si nos pudiese mandar un pequeño ejemplo se lo agradezco.
Un saludo
Nota: Adjunto nuevo código con control para evitar el error
En anteriores versiones ese método no estaba desarrollado y era simplemente lo que en <<Harbour>> se llama un método virtual, que básicamente no hace nada, pero impide que se produzca un error de ejecución. Eso es todo. Sin embargo en la última versión se desarrollo para que hiciera el trabajo correctamente.
En su archivo de error se indica que el error se produce en esta línea:
nPos := ATail( ::aWork[ nRecno ] )
Y nRecno en unas líneas más arribas está asignado como ::Recno(). Si se fija el error indica que está accediendo al elemento de la matriz (el elemento <1>) pero no existe. Es muy extraño. Si nos pudiese mandar un pequeño ejemplo se lo agradezco.
Un saludo
Nota: Adjunto nuevo código con control para evitar el error
Código: Seleccionar todo
METHOD RefreshCurrent() CLASS XWebRecords
LOCAL oField
LOCAL aRecord
LOCAL cSql, cFields
LOCAL nField, nRecno, nPos
cFields := ""
nField := 1
nRecno := ::Recno()
IF Empty( nRecno ) .OR. nRecno > Len( ::aWork )
RETURN .F.
ENDIF
nPos := ATail( ::aWork[ nRecno ] )
FOR EACH oField IN ::oDataSet:aFields
WITH OBJECT oField
IF !Empty( cFields )
cFields += ", "
ENDIF
cFields += :cName
END WITH
NEXT
cSql := "SELECT " + cFields + " FROM " + ::cTable + ::GetPkWhere()
WITH OBJECT ::oDataSource
aRecord := :QueryRow( cSql )
IF Len( aRecord ) == 0
RETURN .f.
ENDIF
AAdd( aRecord, nPos )
END WITH
IF nRecno <= Len( ::aWork )
::aWork[ nRecno ] := aRecord
ENDIF
RETURN .t.
Re: TWebDataSource
Si, eso logré ver que a pesar de hacer el FastAddNew(), RecNo() devuelve 0, y es dónde da el error.
Muchas gracias, aplico el parche.
Muchas gracias, aplico el parche.
- ignacio
- Site Admin
- Mensajes: 9256
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: TWebDataSource
Devuelve 1Argumentos: [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 1
Saludos