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.

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

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

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

Mensaje 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)Â
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

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

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Wilson-CPS
Mensajes: 120
Registrado: Vie Mar 14, 2008 1:14 am

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

Mensaje 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.
>
Wilson-CPS
Mensajes: 120
Registrado: Vie Mar 14, 2008 1:14 am

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

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

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

Mensaje 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.
>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

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

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9252
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

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

Mensaje 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.
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jaime Irurzun
Mensajes: 67
Registrado: Mar Nov 02, 2004 6:23 pm

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

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