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.

Problemas con el uso de MemDataSet en Xailer 2.01

Foro público de Xailer en español
Responder
Avatar de Usuario
Carlos Ortiz
Mensajes: 873
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Problemas con el uso de MemDataSet en Xailer 2.01

Mensaje 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.
jrcpoli-quitar
Mensajes: 558
Registrado: Mar Feb 09, 2010 2:26 pm

Problemas con el uso de MemDataSet en Xailer 2.01

Mensaje 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.
>
>
Responder