Sobre MemdatSet
Publicado: Mar Ago 21, 2007 11:23 am
Hola Ignacio un par de preguntas sobre las modificaciones que hicisteis
en esta clase.
En la versión 1.4 me andaba sin problemas pero al cambiar a la 1.5 me
han fallado todos los que tenía y el error salta en el METHOD FieldGet(
n ) el Return ::aWork[ nRecno, n ] me da error ya que n se sale de los
elementos de la tabla y casca, asi que lo he cambiado por:
RETURN If(n<=Len(::aWork[ nRecno] ), ::aWork[ nRecno, n ], Nil)
y ya no me casca, aunque es un poco chapucero.
Otra cosa más en el METHOD Open si el array viene vacío no puede tomar
los Valtype de él sino que directamente ponéis
::lReadOnly := .T.
LogDebug( "XAILER: TMemDataSet:'aData' parameter empty with no
structure defined. :lReadOnly set to TRUE." )
Pero si antes de hacer el Open ya he hecho oSender:GetStructFrom
pasándole todos los tipos y tamaños, antes funcionaba y ahora ya no le vale.
Evidentemente debería de prevalecer el GetStrucFrom creo yo, bastaría
con hacer esto en el METHOD Open
If Len(::aFields)=0
::lReadOnly := .T.
LogDebug( "XAILER: TMemDataSet:'aData' parameter empty with no
structure defined. :lReadOnly set to TRUE." )
Endif
Pero entonces hay que controlar que si el set esta vacío no se pueda
hacer un Edit lo cual esta implementado ahora de forma que da un error
de la aplicación con ::NewError( LT( XA_MSG_SET_VACIO_EDIT_NO_PERMITIDO
) ) lo cual si lo quito no casca el programa pero me entra en una
línea de edición fantasma que ya no se como quitar.
Gracias por tu atención y salu2.
en esta clase.
En la versión 1.4 me andaba sin problemas pero al cambiar a la 1.5 me
han fallado todos los que tenía y el error salta en el METHOD FieldGet(
n ) el Return ::aWork[ nRecno, n ] me da error ya que n se sale de los
elementos de la tabla y casca, asi que lo he cambiado por:
RETURN If(n<=Len(::aWork[ nRecno] ), ::aWork[ nRecno, n ], Nil)
y ya no me casca, aunque es un poco chapucero.
Otra cosa más en el METHOD Open si el array viene vacío no puede tomar
los Valtype de él sino que directamente ponéis
::lReadOnly := .T.
LogDebug( "XAILER: TMemDataSet:'aData' parameter empty with no
structure defined. :lReadOnly set to TRUE." )
Pero si antes de hacer el Open ya he hecho oSender:GetStructFrom
pasándole todos los tipos y tamaños, antes funcionaba y ahora ya no le vale.
Evidentemente debería de prevalecer el GetStrucFrom creo yo, bastaría
con hacer esto en el METHOD Open
If Len(::aFields)=0
::lReadOnly := .T.
LogDebug( "XAILER: TMemDataSet:'aData' parameter empty with no
structure defined. :lReadOnly set to TRUE." )
Endif
Pero entonces hay que controlar que si el set esta vacío no se pueda
hacer un Edit lo cual esta implementado ahora de forma que da un error
de la aplicación con ::NewError( LT( XA_MSG_SET_VACIO_EDIT_NO_PERMITIDO
) ) lo cual si lo quito no casca el programa pero me entra en una
línea de edición fantasma que ya no se como quitar.
Gracias por tu atención y salu2.