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.

Problema con campos calculados en TDBBrowse

Foro público de Xailer en español
Responder
Jaime Irurzun
Mensajes: 67
Registrado: Mar Nov 02, 2004 6:23 pm

Problema con campos calculados en TDBBrowse

Mensaje 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)Â
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

Problema con campos calculados en TDBBrowse

Mensaje 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.
Jaime Irurzun
Mensajes: 67
Registrado: Mar Nov 02, 2004 6:23 pm

Problema con campos calculados en TDBBrowse

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