Página 1 de 1

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Vie Dic 09, 2005 6:33 pm
por Jaime Irurzun

Hola,
Creo que esta vez no es fallo mío ;) Me parece que hay un bug en Xailer.
Resulta que si añades una columna a un TDBBrowse que hace referencia a un
oDataField que será añadido desde código como campo calculado, si marcas
en el IDE el DataSet como lOpen := .T. da un error al visualizar ESA columna
en tiempo de diseño. El error es este:
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)
XBROWSE:WMPAINT (132)
TBROWSE:WMPAINT (0)
TDBBROWSE:WMPAINT (749)
RUNFORM (0)
TAPPLICATION:RUN (189)
MAIN (30)
Me pasa tanto en el programa que estoy haciendo como en el ejemplo 2 de los
DataControls. Lo adjunto (requiere añadir customber.dbf y customber.cdx en
el MISMO directorio del proyecto) en ese mismo estado para que veáis que
si abrís el formuario y desplazáis el scroll horizontal hasta la derecha
del todo, en el momento en que trate de visualizar la columna "Datos" (el
campo calculado) soltará el error.
Gracias por la ayuda, y si se trata de un error de Xailer, necesitaría una
forma de evitarlo mientras salga una corrección... he intentado poner lOpen
:= .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del formulario
pero sale el mismo error. Creo que en ese caso habría que abrir el dataset
en otro evento...
Un saludo,
Jaime Irurzun.
--

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

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Vie Dic 09, 2005 7:40 pm
por jfgimenez
Jaime,
Gracias por la información. Ahora mismo no puedo probarlo, pero en cuanto
pueda lo revisaré.
> Gracias por la ayuda, y si se trata de un error de Xailer, necesitaría una
> forma de evitarlo mientras salga una corrección... he intentado poner
> lOpen
> := .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del formulario
> pero sale el mismo error. Creo que en ese caso habría que abrir el dataset
> en otro evento...
Intenta abrir el dataset desde el evento OnInitialize del formulario.
El evento OnCreate del formulario se dispara cuando se ha creado el
formulario pero antes de que se cree ningún componente ni control del mismo.
Por eso no puedes abrir el dataset desde ahí; porque no existe todavía.
--
Un saludo,
José F. Giménez

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Vie Dic 09, 2005 8:23 pm
por Wilson-CPS
Percebi também que se tem 2 colunas que são calculadas na mesma Browse
acontece este erro em tempo de execução porque ao tDataSet:lOpen:=.T.. Me
parece que o Tdataset atualiza a browse ao abrir e o segundo campo ainda não
fôra criado.
Wilson Alves
"Jaime Irurzun" <jaime.irurzun@gmail.com> escreveu na mensagem
news:4399bff6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Hola,
>
> Creo que esta vez no es fallo mío ;) Me parece que hay un bug en Xailer.
> Resulta que si añades una columna a un TDBBrowse que hace referencia a un
> oDataField que será añadido desde código como campo calculado, si marcas
> en el IDE el DataSet como lOpen := .T. da un error al visualizar ESA
> columna
> en tiempo de diseño. El error es este:
>
> 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)
> XBROWSE:WMPAINT (132)
> TBROWSE:WMPAINT (0)
> TDBBROWSE:WMPAINT (749)
> RUNFORM (0)
> TAPPLICATION:RUN (189)
> MAIN (30)
>
> Me pasa tanto en el programa que estoy haciendo como en el ejemplo 2 de
> los
> DataControls. Lo adjunto (requiere añadir customber.dbf y customber.cdx en
> el MISMO directorio del proyecto) en ese mismo estado para que veáis que
> si abrís el formuario y desplazáis el scroll horizontal hasta la derecha
> del todo, en el momento en que trate de visualizar la columna "Datos" (el
> campo calculado) soltará el error.
>
> Gracias por la ayuda, y si se trata de un error de Xailer, necesitaría una
> forma de evitarlo mientras salga una corrección... he intentado poner
> lOpen
> := .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del formulario
> pero sale el mismo error. Creo que en ese caso habría que abrir el dataset
> en otro evento...
>
> Un saludo,
> Jaime Irurzun.
>

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Vie Dic 09, 2005 9:50 pm
por Wilson-CPS
Outra coisa, se adicionar os campos antes de abrir as tabelas funciona
legal:
METHOD FormInitialize( oSender ) CLASS TConsultaSolicitacao
::tbLojas:lOpen :=.T.
::tbProduto:lOpen :=.T.
::tbSolicit:AddCalcField('LOJA',{|o| ::tbLojas:FANTASIA })
::tbSolicit:lOpen := .T.
::tbItemSol:AddCalcField('DESCRICAO',{|o|
DescricaoProduto(o:oDataSET:CCDPROD,o:oDataSET:CODUNID) })
::tbItemSol:AddCalcField('SUBTOTAL',{|o|
o:oDataSET:PRECO*o:oDataSET:QTDEPED })
::tbItemSol:lOpen :=.T.
RETURN Nil
"wilson" <wilson@casteloporto.com.br> escreveu na mensagem
news:[email=4399d872@ozsrvnegro.ozlan.local...]4399d872@ozsrvnegro.ozlan.local...[/email]
> Percebi também que se tem 2 colunas que são calculadas na mesma Browse
> acontece este erro em tempo de execução porque ao tDataSet:lOpen:=.T.. Me
> parece que o Tdataset atualiza a browse ao abrir e o segundo campo ainda
> não fôra criado.
>
> Wilson Alves
>
> "Jaime Irurzun" <jaime.irurzun@gmail.com> escreveu na mensagem
> news:4399bff6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>> Hola,
>>
>> Creo que esta vez no es fallo mío ;) Me parece que hay un bug en Xailer.
>> Resulta que si añades una columna a un TDBBrowse que hace referencia a un
>> oDataField que será añadido desde código como campo calculado, si marcas
>> en el IDE el DataSet como lOpen := .T. da un error al visualizar ESA
>> columna
>> en tiempo de diseño. El error es este:
>>
>> 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)
>> XBROWSE:WMPAINT (132)
>> TBROWSE:WMPAINT (0)
>> TDBBROWSE:WMPAINT (749)
>> RUNFORM (0)
>> TAPPLICATION:RUN (189)
>> MAIN (30)
>>
>> Me pasa tanto en el programa que estoy haciendo como en el ejemplo 2 de
>> los
>> DataControls. Lo adjunto (requiere añadir customber.dbf y customber.cdx
>> en
>> el MISMO directorio del proyecto) en ese mismo estado para que veáis que
>> si abrís el formuario y desplazáis el scroll horizontal hasta la derecha
>> del todo, en el momento en que trate de visualizar la columna "Datos" (el
>> campo calculado) soltará el error.
>>
>> Gracias por la ayuda, y si se trata de un error de Xailer, necesitaría
>> una
>> forma de evitarlo mientras salga una corrección... he intentado poner
>> lOpen
>> := .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del
>> formulario
>> pero sale el mismo error. Creo que en ese caso habría que abrir el
>> dataset
>> en otro evento...
>>
>> Un saludo,
>> Jaime Irurzun.
>>
>
>

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Dom Dic 11, 2005 3:44 pm
por Jaime Irurzun
José,
Gracias, ahora sí­ funciona. Ya leí­ en tu artí­culo la diferencia entre
OnCreate y OnInitialize, y la tengo siempre muy en cuenta, por eso antes
del probar en el OnCretate habí­a probado en el OnInitialize. Lo que pasa
es que me daba un error, pero por lo visto la causa no era el Open() del
dataset. Ahora que lo he vuelto a poner ahí­ funciona perfectamente.
Os agradecerí­a que confirmárais el fallo del que avisé en el primer
mensaje. Mientras tanto lo haré así­. Muchas gracias.
--
Un saludo,
Jaime Irurzun.
Jose F. Gimenez escribió:
> Jaime,
>
> Gracias por la información. Ahora mismo no puedo probarlo, pero en cuanto
> pueda lo revisaré.
>
>
>>Gracias por la ayuda, y si se trata de un error de Xailer, necesitarí­a una
>>forma de evitarlo mientras salga una corrección... he intentado poner
>>lOpen
>>:= .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del formulario
>>pero sale el mismo error. Creo que en ese caso habrí­a que abrir el dataset
>>en otro evento...
>
>
> Intenta abrir el dataset desde el evento OnInitialize del formulario.
>
> El evento OnCreate del formulario se dispara cuando se ha creado el
> formulario pero antes de que se cree ningún componente ni control del mismo.
> Por eso no puedes abrir el dataset desde ahí­; porque no existe todaví­a.
>
>

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Dom Dic 11, 2005 8:19 pm
por jfgimenez
Jaime,
> Os agradecería que confirmárais el fallo del que avisé en el primer
> mensaje. Mientras tanto lo haré así. Muchas gracias.
Sí, no te preocupes. Seguramente lo revisará mañana mismo Ignacio. Yo no lo
he podido probar porque estoy cambiando al nuevo xHarbour, que ha cambiado
bastante por dentro, y lo tengo todo patas arriba ;-)
--
Un saludo,
José F. Giménez

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Lun Dic 12, 2005 11:00 am
por ignacio
Jaime,
Efectivamente es un fallo de Xailer. Ya está arreglado. Muchas gracias. De
momento, si lo deseas puedes incluir esta linea para solucionarlo en
run-time después de la creación del campo calculado:
::oBrw:aCols[14]:oDataField := "DATOS"
Saludos,
"Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
news:4399bff6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Hola,
>
> Creo que esta vez no es fallo mío ;) Me parece que hay un bug en Xailer.
> Resulta que si añades una columna a un TDBBrowse que hace referencia a un
> oDataField que será añadido desde código como campo calculado, si marcas
> en el IDE el DataSet como lOpen := .T. da un error al visualizar ESA
> columna
> en tiempo de diseño. El error es este:
>
> 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)
> XBROWSE:WMPAINT (132)
> TBROWSE:WMPAINT (0)
> TDBBROWSE:WMPAINT (749)
> RUNFORM (0)
> TAPPLICATION:RUN (189)
> MAIN (30)
>
> Me pasa tanto en el programa que estoy haciendo como en el ejemplo 2 de
> los
> DataControls. Lo adjunto (requiere añadir customber.dbf y customber.cdx en
> el MISMO directorio del proyecto) en ese mismo estado para que veáis que
> si abrís el formuario y desplazáis el scroll horizontal hasta la derecha
> del todo, en el momento en que trate de visualizar la columna "Datos" (el
> campo calculado) soltará el error.
>
> Gracias por la ayuda, y si se trata de un error de Xailer, necesitaría una
> forma de evitarlo mientras salga una corrección... he intentado poner
> lOpen
> := .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del formulario
> pero sale el mismo error. Creo que en ese caso habría que abrir el dataset
> en otro evento...
>
> Un saludo,
> Jaime Irurzun.
>

Campos calculados en IDE con oDataSet:lOpen := .T.

Publicado: Lun Dic 12, 2005 1:55 pm
por Jaime Irurzun
Perfecto Ignacio, gracias.
--
Un saludo,
Jaime Irurzun.
Ignacio Ortiz de Zúñiga escribió:
> Jaime,
>
> Efectivamente es un fallo de Xailer. Ya está arreglado. Muchas gracias. De
> momento, si lo deseas puedes incluir esta linea para solucionarlo en
> run-time después de la creación del campo calculado:
>
> ::oBrw:aCols[14]:oDataField := "DATOS"
>
> Saludos,
>
> "Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
> news:4399bff6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
>>Hola,
>>
>>Creo que esta vez no es fallo mí­o ;) Me parece que hay un bug en Xailer.
>>Resulta que si añades una columna a un TDBBrowse que hace referencia a un
>>oDataField que será añadido desde código como campo calculado, si marcas
>>en el IDE el DataSet como lOpen := .T. da un error al visualizar ESA
>>columna
>>en tiempo de diseño. El error es este:
>>
>> 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)
>> XBROWSE:WMPAINT (132)
>> TBROWSE:WMPAINT (0)
>> TDBBROWSE:WMPAINT (749)
>> RUNFORM (0)
>> TAPPLICATION:RUN (189)
>> MAIN (30)
>>
>>Me pasa tanto en el programa que estoy haciendo como en el ejemplo 2 de
>>los
>>DataControls. Lo adjunto (requiere añadir customber.dbf y customber.cdx en
>>el MISMO directorio del proyecto) en ese mismo estado para que veáis que
>>si abrí­s el formuario y desplazáis el scroll horizontal hasta la derecha
>>del todo, en el momento en que trate de visualizar la columna "Datos" (el
>>campo calculado) soltará el error.
>>
>>Gracias por la ayuda, y si se trata de un error de Xailer, necesitarí­a una
>>forma de evitarlo mientras salga una corrección... he intentado poner
>>lOpen
>>:= .F. en el IDE y forzar el oDataSet:Open() en el OnCreate del formulario
>>pero sale el mismo error. Creo que en ese caso habrí­a que abrir el dataset
>>en otro evento...
>>
>>Un saludo,
>>Jaime Irurzun.
>>
>
>
>