Página 1 de 1

Problemas con el uso de MemDataSet en Xailer 2.01

Publicado: Sab Dic 12, 2009 7:48 am
por Carlos Ortiz
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.

Problemas con el uso de MemDataSet en Xailer 2.01

Publicado: Sab Dic 12, 2009 2:28 pm
por jrcpoli-quitar
Saludos:
Creo que deberí­as leer el hilo del foro privado que dice "Problema con
MemDataSet en RC1" creo que la solución puede estar en esa respuesta.
José Ramón Castro.
Carlos Ortiz escribió:
> 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.
>
>