Problemas con el uso de MemDataSet en Xailer 2.01
Publicado: Sab Dic 12, 2009 7:48 am
Resulta que para el llenado de muchos combos me apoyo mayormente en
memdataset que armo en función de los datos de las tablas (usamos PostGres),
por medio de una función que se llama ElitabX(), resulta que ahora al crear
esos combos me saltan errores en getstructfrom() al definir los campos del
memdataset, tuve que cambiar el New por el Create para que no se clave, pero
saltan otros errores de ::RECNO() method no implementado y no lo puedo
resolver, para colmo todos los combos se llenan por medio de esta funcion
general que usando sus propiedades reciben los valores, la cuestión es que
sin eso nada funciona. Voy a preparar un ejemplo sencillo para ver que será.
Uso los oDbComboBox por que necesito tener los datos a mostrar en aItems y
los ID de los datos mostrados en aItemsBound, lo que hago es un queryarray a
la tabla y luego paso con ArraCol() los datos a aittem y aitemsbound, quizás
este usando eso y deba usar otra cosa, algo pasa con el memdataset por que
es como que tiene menos metodos o trabaja con otra cosa de fondo. No sé me
da la impresión.
#include "Xailer.ch"
CLASS TElitabX FROM TForm
DATA cValor INIT ""
DATA FoDbf INIT ""
DATA FoDataField INIT ""
DATA oDBCombo INIT NIL
DATA cSelect INIT "" // Consulta a ejecutar
DATA aItems INIT 1
DATA aItemsBound INIT 2
DATA cFiltro INIT "" // Filtro adicional para
agregar al Where
METHOD SetElitabX( oSender )
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD SetElitabX( oSender ) CLASS TElitabX
local aData
::FoDbf:=TMemDataSet():New()
IF !empty(alltrim(::cSelect))
// Levanta los elementos y los ID de una tabla
aData:=AppData:oOdbcDS:QueryArray( ::cSelect )
::oDBCombo:aItems := ArrayCol( aData, 1 )
::oDBCombo:aItemsBound := ArrayCol( aData, 2 )
ENDIF
::oDBCombo:oDataField := ::FoDataField
::oDBCombo:oDataSet := ::FoDbf
::FoDbf:Edit()
::FoDbf:Open(::oDBCombo:aItems)
RETURN Nil
//---------------------------------------------------------- --------------------
Espero ayuda, muchas gracias.
Carlos Ortiz.
memdataset que armo en función de los datos de las tablas (usamos PostGres),
por medio de una función que se llama ElitabX(), resulta que ahora al crear
esos combos me saltan errores en getstructfrom() al definir los campos del
memdataset, tuve que cambiar el New por el Create para que no se clave, pero
saltan otros errores de ::RECNO() method no implementado y no lo puedo
resolver, para colmo todos los combos se llenan por medio de esta funcion
general que usando sus propiedades reciben los valores, la cuestión es que
sin eso nada funciona. Voy a preparar un ejemplo sencillo para ver que será.
Uso los oDbComboBox por que necesito tener los datos a mostrar en aItems y
los ID de los datos mostrados en aItemsBound, lo que hago es un queryarray a
la tabla y luego paso con ArraCol() los datos a aittem y aitemsbound, quizás
este usando eso y deba usar otra cosa, algo pasa con el memdataset por que
es como que tiene menos metodos o trabaja con otra cosa de fondo. No sé me
da la impresión.
#include "Xailer.ch"
CLASS TElitabX FROM TForm
DATA cValor INIT ""
DATA FoDbf INIT ""
DATA FoDataField INIT ""
DATA oDBCombo INIT NIL
DATA cSelect INIT "" // Consulta a ejecutar
DATA aItems INIT 1
DATA aItemsBound INIT 2
DATA cFiltro INIT "" // Filtro adicional para
agregar al Where
METHOD SetElitabX( oSender )
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD SetElitabX( oSender ) CLASS TElitabX
local aData
::FoDbf:=TMemDataSet():New()
IF !empty(alltrim(::cSelect))
// Levanta los elementos y los ID de una tabla
aData:=AppData:oOdbcDS:QueryArray( ::cSelect )
::oDBCombo:aItems := ArrayCol( aData, 1 )
::oDBCombo:aItemsBound := ArrayCol( aData, 2 )
ENDIF
::oDBCombo:oDataField := ::FoDataField
::oDBCombo:oDataSet := ::FoDbf
::FoDbf:Edit()
::FoDbf:Open(::oDBCombo:aItems)
RETURN Nil
//---------------------------------------------------------- --------------------
Espero ayuda, muchas gracias.
Carlos Ortiz.