Página 1 de 1

Problema con campos calculados en TDBBrowse

Publicado: Vie Dic 09, 2005 12:50 pm
por Jaime Irurzun

Hola,
Necesito añadir un campo calculado a un TDBBrowse que muestre una cadena
en lugar del valor numérico que posee realmente el campo. He visto en la
ayuda cómo hacerlo y la definición del campo la hago igual (el valor numérico
accede a un array de strings). El problema está al mostrarlo en el TDBBrowse.
Para que lo podáis ver, he representado el problema en el ejemplo 2 de DataControls
(adjunto). Lo único que he hecho es añadir la definición del campo calculado:
::oDataSet:AddCalcField( "DATOS", { |oField| oField:oDataSet:FIRST + oField:oDataSet:LAST
} )
En el OnInitialize del formulario. Después he añadido una nueva columna al
browse desde el IDE y le he puesto como oDataField "DATOS", que es el nombre
que le he dado al campo calculado.
Como veréis al ejecutarlo, da este error:
Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: Class: 'CHARACTER' has no exported method
Operación: VALUE
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TDBBROWSE:DATATEXT (244)
TDBBRWCOLUMN:ONGETDATA (0)
TDBBRWCOLUMN:PAINTDATA (46)
TBROWSE:WMPAINT (132)
TDBBROWSE:WMPAINT (749)
UPDATEWINDOW (0)
(b)XCONTROL (89)
TFORM1:UPDATE (0)
TFORM1:WMNCACTIVATE (704)
SHOWWINDOW (0)
TSCROLLINGWINCONTROL:SHOW (579)
TFORM1:SHOW (411)
MAIN (15)
¿Hago algo mal...? ¿Me falta añadir algo...? Muchas gracias.
--

Attached files DbfTest-CalcField.zip (17.9 KB)Â

Problema con campos calculados en TDBBrowse

Publicado: Vie Dic 09, 2005 1:41 pm
por joseluis
Jaime,
Estás añadiendo el campo calculado en el evento OnInitialize del
formulario. Y puede que en ese momento no estén disponibles aún los
objetos fields/dataset a los que haces referencia.
Hay un evento especí­fico del dataset que se dispara en el momento de
abrirse el mismo y cargarse todos los campos (la ayuda no especifica si
se dispara antes de abrir o después de abrir el dataset).
Prueba a poner, en el ejemplo que has enviado, la linea que te falla en
el método DataSetOpen.
Saludos,
José Luis Capel
Jaime Irurzun escribió:
> Hola,
>
> Necesito añadir un campo calculado a un TDBBrowse que muestre una cadena
> en lugar del valor numérico que posee realmente el campo. He visto en la
> ayuda cómo hacerlo y la definición del campo la hago igual (el valor numérico
> accede a un array de strings). El problema está al mostrarlo en el TDBBrowse.
> Para que lo podáis ver, he representado el problema en el ejemplo 2 de DataControls
> (adjunto). Lo único que he hecho es añadir la definición del campo calculado:
>
> ::oDataSet:AddCalcField( "DATOS", { |oField| oField:oDataSet:FIRST + oField:oDataSet:LAST
> } )
>
> En el OnInitialize del formulario. Después he añadido una nueva columna al
> browse desde el IDE y le he puesto como oDataField "DATOS", que es el nombre
> que le he dado al campo calculado.
>
> Como veréis al ejecutarlo, da este error:
>
> Subsistema: BASE
> Código de error: 1004
> Estado: .F.
> Descripción: Class: 'CHARACTER' has no exported method
> Operación: VALUE
> Argumentos:
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> TDBBROWSE:DATATEXT (244)
> TDBBRWCOLUMN:ONGETDATA (0)
> TDBBRWCOLUMN:PAINTDATA (46)
> TBROWSE:WMPAINT (132)
> TDBBROWSE:WMPAINT (749)
> UPDATEWINDOW (0)
> (b)XCONTROL (89)
> TFORM1:UPDATE (0)
> TFORM1:WMNCACTIVATE (704)
> SHOWWINDOW (0)
> TSCROLLINGWINCONTROL:SHOW (579)
> TFORM1:SHOW (411)
> MAIN (15)
>
> ¿Hago algo mal...? ¿Me falta añadir algo...? Muchas gracias.

Problema con campos calculados en TDBBrowse

Publicado: Vie Dic 09, 2005 2:22 pm
por Jaime Irurzun
José Luis,
Era eso, muchísimas gracias :D
No conocía ese evento, pero de hecho en el mismo ejemplo 2 de DataControls
crea un campo calculado (clavado al que yo estaba tratando de crear como
prueba) y lo hace en el DataSetOpen()...
Campos calculados controlados ;)
Un saludo,
Jaime Irurzun.
=?ISO-8859-1?Q?Jos=E9_Luis_Capel?= <joseluis@iaicom.com> wrote:
>Jaime,
>
>Estás añadiendo el campo calculado en el evento OnInitialize del
>formulario. Y puede que en ese momento no estén disponibles aún los
>objetos fields/dataset a los que haces referencia.
>
>Hay un evento específico del dataset que se dispara en el momento de
>abrirse el mismo y cargarse todos los campos (la ayuda no especifica si
>se dispara antes de abrir o después de abrir el dataset).
>
>Prueba a poner, en el ejemplo que has enviado, la linea que te falla en
>el método DataSetOpen.
>
>Saludos,
>José Luis Capel
>
>Jaime Irurzun escribió:
>> Hola,
>>
>> Necesito añadir un campo calculado a un TDBBrowse que muestre una cadena
>> en lugar del valor numérico que posee realmente el campo. He visto en
la
>> ayuda cómo hacerlo y la definición del campo la hago igual (el valor numérico
>> accede a un array de strings). El problema está al mostrarlo en el TDBBrowse.
>> Para que lo podáis ver, he representado el problema en el ejemplo 2 de
DataControls
>> (adjunto). Lo único que he hecho es añadir la definición del campo calculado:
>>
>> ::oDataSet:AddCalcField( "DATOS", { |oField| oField:oDataSet:FIRST + oField:oDataSet:LAST
>> } )
>>
>> En el OnInitialize del formulario. Después he añadido una nueva columna
al
>> browse desde el IDE y le he puesto como oDataField "DATOS", que es el
nombre
>> que le he dado al campo calculado.
>>
>> Como veréis al ejecutarlo, da este error:
>>
>> Subsistema: BASE
>> Código de error: 1004
>> Estado: .F.
>> Descripción: Class: 'CHARACTER' has no exported method
>> Operación: VALUE
>> Argumentos:
>> Fichero:
>> Código error SO: 0
>>
>> Pila de llamadas:
>> TDBBROWSE:DATATEXT (244)
>> TDBBRWCOLUMN:ONGETDATA (0)
>> TDBBRWCOLUMN:PAINTDATA (46)
>> TBROWSE:WMPAINT (132)
>> TDBBROWSE:WMPAINT (749)
>> UPDATEWINDOW (0)
>> (b)XCONTROL (89)
>> TFORM1:UPDATE (0)
>> TFORM1:WMNCACTIVATE (704)
>> SHOWWINDOW (0)
>> TSCROLLINGWINCONTROL:SHOW (579)
>> TFORM1:SHOW (411)
>> MAIN (15)
>>
>> ¿Hago algo mal...? ¿Me falta añadir algo...? Muchas gracias.