dbBrowse y columas desde el IDE
Publicado: Jue Nov 23, 2006 1:16 pm
Hola,
Me estoy encontrado con un comportamiento que no se si es el correcto o no.
Desde el IDE:
En un formulario pongo un tdbBrowse. A ese tdbBrowse NO indico dataset.
Añado columnas. A cada columna escribo el nombre del campo en la propiedad
oDataField. Además, en algunas columnas sobreescribo el método ongetdata.
En el evento onInitialize del formulario creo el Dataset y lo asigno al
dbbrowse. Este dataset tiene exactamente los mismos campos, mismo orden y
nombre que el configurado en las columnas del dbbrowse.
El comportamiento que veo 'extraño' es:
a. Al ejecutar el programa me arroja un error:
TFRMCLIENTES:VISTARUTASASIGNADASCOLUMN1GETDATA(173)
Error BASE/1066 Error de argumento: conditional
Argumentos: ( [ 1] = Tipo: C Valor: )
Pila de llamadas:
TFRMCLIENTES:VISTARUTASASIGNADASCOLUMN1GETDATA (173)
TDBBRWCOLUMN:ONGETDATA (0)
TDBBRWCOLUMN:DATAHEIGHT (489)
TDBBROWSE:ADJUST (456)
TBROWSE:CREATE (369)
TDBBROWSE:CREATE (92)
TFRMCLIENTES:CREATEFORM (238)
TFRMCLIENTES:NEW (182)
Por lo que veo, entiendo que el OnGetData se dispara en el momento de la
creación de la columna. Entonces, como no tiene datos del dataset, envía
uno tipo carácter.
Esto me obliga a poner este código en el evento ongetdata de cada columna
(ojo, no he sabido solucionarlo mejor):
IF VALTYPE(Value) == "C"
RETURN NIL
ENDIF
b. Si durante la ejecución del programa, reasigno el dataset al dbbrowse da
la sensación de que se pierden los eventos programados. De hecho, en mis
pruebas, no se vuelven a disparar los ongetdata de cada columna.
Cualquier ayuda o aclaración será bienvenida.
SAludos y gracias,
José Luis Capel
Me estoy encontrado con un comportamiento que no se si es el correcto o no.
Desde el IDE:
En un formulario pongo un tdbBrowse. A ese tdbBrowse NO indico dataset.
Añado columnas. A cada columna escribo el nombre del campo en la propiedad
oDataField. Además, en algunas columnas sobreescribo el método ongetdata.
En el evento onInitialize del formulario creo el Dataset y lo asigno al
dbbrowse. Este dataset tiene exactamente los mismos campos, mismo orden y
nombre que el configurado en las columnas del dbbrowse.
El comportamiento que veo 'extraño' es:
a. Al ejecutar el programa me arroja un error:
TFRMCLIENTES:VISTARUTASASIGNADASCOLUMN1GETDATA(173)
Error BASE/1066 Error de argumento: conditional
Argumentos: ( [ 1] = Tipo: C Valor: )
Pila de llamadas:
TFRMCLIENTES:VISTARUTASASIGNADASCOLUMN1GETDATA (173)
TDBBRWCOLUMN:ONGETDATA (0)
TDBBRWCOLUMN:DATAHEIGHT (489)
TDBBROWSE:ADJUST (456)
TBROWSE:CREATE (369)
TDBBROWSE:CREATE (92)
TFRMCLIENTES:CREATEFORM (238)
TFRMCLIENTES:NEW (182)
Por lo que veo, entiendo que el OnGetData se dispara en el momento de la
creación de la columna. Entonces, como no tiene datos del dataset, envía
uno tipo carácter.
Esto me obliga a poner este código en el evento ongetdata de cada columna
(ojo, no he sabido solucionarlo mejor):
IF VALTYPE(Value) == "C"
RETURN NIL
ENDIF
b. Si durante la ejecución del programa, reasigno el dataset al dbbrowse da
la sensación de que se pierden los eventos programados. De hecho, en mis
pruebas, no se vuelven a disparar los ongetdata de cada columna.
Cualquier ayuda o aclaración será bienvenida.
SAludos y gracias,
José Luis Capel