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.
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.
TDataField:OnSetValue
TDataField:OnSetValue
El ejemplo de la documentación lo vi y trate de usarlo, como esta claro en
el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
paso contiene un error, falta cerrar el corchete de aValues y sobra la
llave abierta antes de aValues )
oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
oField:DataSet:Tipo } )
de todas formas con el manual no me alcanzo para entenderlo, por eso
pido ayuda, gracias igual.
--
Rolando Sarrailh
TEL. (0221)-4891480
rsarrailh@ciudad.com.ar
el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
paso contiene un error, falta cerrar el corchete de aValues y sobra la
llave abierta antes de aValues )
oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
oField:DataSet:Tipo } )
de todas formas con el manual no me alcanzo para entenderlo, por eso
pido ayuda, gracias igual.
--
Rolando Sarrailh
TEL. (0221)-4891480
rsarrailh@ciudad.com.ar
- ignacio
- Site Admin
- Mensajes: 9463
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
TDataField:OnSetValue
Rolando,
Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que está
haciendo mal.
Un saludo,
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro en
> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
> paso contiene un error, falta cerrar el corchete de aValues y sobra la
> llave abierta antes de aValues )
>
> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
> oField:DataSet:Tipo } )
>
> de todas formas con el manual no me alcanzo para entenderlo, por eso
> pido ayuda, gracias igual.
>
> --
> Rolando Sarrailh
> TEL. (0221)-4891480
> rsarrailh@ciudad.com.ar
>
Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que está
haciendo mal.
Un saludo,
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro en
> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
> paso contiene un error, falta cerrar el corchete de aValues y sobra la
> llave abierta antes de aValues )
>
> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
> oField:DataSet:Tipo } )
>
> de todas formas con el manual no me alcanzo para entenderlo, por eso
> pido ayuda, gracias igual.
>
> --
> Rolando Sarrailh
> TEL. (0221)-4891480
> rsarrailh@ciudad.com.ar
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
TDataField:OnSetValue
Va el ejemplo.
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
> Rolando,
>
> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
> está
> haciendo mal.
>
> Un saludo,
>
> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro
>> en
>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
>> paso contiene un error, falta cerrar el corchete de aValues y sobra la
>> llave abierta antes de aValues )
>>
>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>> oField:DataSet:Tipo } )
>>
>> de todas formas con el manual no me alcanzo para entenderlo, por eso
>> pido ayuda, gracias igual.
>>
>> --
>> Rolando Sarrailh
>> TEL. (0221)-4891480
>> rsarrailh@ciudad.com.ar
>>
>
>
Attached files Nuevo.zip (3.4 KB)Â
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
> Rolando,
>
> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
> está
> haciendo mal.
>
> Un saludo,
>
> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro
>> en
>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
>> paso contiene un error, falta cerrar el corchete de aValues y sobra la
>> llave abierta antes de aValues )
>>
>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>> oField:DataSet:Tipo } )
>>
>> de todas formas con el manual no me alcanzo para entenderlo, por eso
>> pido ayuda, gracias igual.
>>
>> --
>> Rolando Sarrailh
>> TEL. (0221)-4891480
>> rsarrailh@ciudad.com.ar
>>
>
>
Attached files Nuevo.zip (3.4 KB)Â
- ignacio
- Site Admin
- Mensajes: 9463
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
TDataField:OnSetValue
Rolando,
Muchas gracias. He visto los siguientes errores:
1) ::oDataPac:cMutual:OnSetValue := {|ofield,
value|savetipo(ofield:odataset, value) }
::oDataPac:cMutual NO es un objeto TDataField. Es el valor del campo, en tu
caso lo que devuelva el bloque:
{|oField| aValues[ oField:oDataSet:NRO_RES ] }
Debería haberse escrito así:
WITH OBJECT ::oDataPac:AddCalcField("cMutual", {|oField| aValues[
oField:oDataSet:NRO_RES ] } )
:OnSetValue := {|ofield, value|savetipo(ofield:odataset, value) }
END WITH
2) Has utilizado para el primer campo en el Form2 un control tipo TDBEdit,
pero el campo que enlaza es del tipo numérico. Los controles tipo TEdit o
TDBEdit sólo manejan tipos carácter. Por este motivo daba un error de
FieldPut() al salvar los datos. No obstante acabo de modificar la clase
TDbfDataSet para que ofrezca más información cuando esto ocurra, por
ejemplo:
#1: XAILER Fieldput error: Invalid data type for field 'CODPAC'. Expected
type 'N', got type 'C' (1)
´3) La grabación en la función SaveTipo() no funcionaba porque la
actualización de los campos calculados se hacía después de los campos
normales, y por lo tanto cualquier modificación que hicieses en los campos
normales, como seguía en modo edición, no se tenían en cuenta. He
solucionado el problema forzando a que primero se graben los campos
calculados y a continuación los campos normales. No obstante lo puedes
solucionar tu facilmente forzando a que se modifique el valor del campo y no
el de su buffer de edición de esta forma:
FUNCTION SaveTipo( oDataSet, Value )
LOCAL oField := oDataSet:oFieldByName( "NRO_RES" )
do case
case Value == "Mutualizado"
oField:FieldPut( 1 )
case Value == "No Mutualizado"
oField:FieldPut( 2 )
case Value == "Otra"
oField:FieldPut( 3 )
end case
RETURN nil
Saludos,
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=44c0dae8@news.xailer.com...]44c0dae8@news.xailer.com...[/email]
> Va el ejemplo.
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
> news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
>> Rolando,
>>
>> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
>> está
>> haciendo mal.
>>
>> Un saludo,
>>
>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>>> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro
>>> en
>>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
>>> paso contiene un error, falta cerrar el corchete de aValues y sobra la
>>> llave abierta antes de aValues )
>>>
>>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>>> oField:DataSet:Tipo } )
>>>
>>> de todas formas con el manual no me alcanzo para entenderlo, por eso
>>> pido ayuda, gracias igual.
>>>
>>> --
>>> Rolando Sarrailh
>>> TEL. (0221)-4891480
>>> rsarrailh@ciudad.com.ar
>>>
>>
>>
>
>
>
Muchas gracias. He visto los siguientes errores:
1) ::oDataPac:cMutual:OnSetValue := {|ofield,
value|savetipo(ofield:odataset, value) }
::oDataPac:cMutual NO es un objeto TDataField. Es el valor del campo, en tu
caso lo que devuelva el bloque:
{|oField| aValues[ oField:oDataSet:NRO_RES ] }
Debería haberse escrito así:
WITH OBJECT ::oDataPac:AddCalcField("cMutual", {|oField| aValues[
oField:oDataSet:NRO_RES ] } )
:OnSetValue := {|ofield, value|savetipo(ofield:odataset, value) }
END WITH
2) Has utilizado para el primer campo en el Form2 un control tipo TDBEdit,
pero el campo que enlaza es del tipo numérico. Los controles tipo TEdit o
TDBEdit sólo manejan tipos carácter. Por este motivo daba un error de
FieldPut() al salvar los datos. No obstante acabo de modificar la clase
TDbfDataSet para que ofrezca más información cuando esto ocurra, por
ejemplo:
#1: XAILER Fieldput error: Invalid data type for field 'CODPAC'. Expected
type 'N', got type 'C' (1)
´3) La grabación en la función SaveTipo() no funcionaba porque la
actualización de los campos calculados se hacía después de los campos
normales, y por lo tanto cualquier modificación que hicieses en los campos
normales, como seguía en modo edición, no se tenían en cuenta. He
solucionado el problema forzando a que primero se graben los campos
calculados y a continuación los campos normales. No obstante lo puedes
solucionar tu facilmente forzando a que se modifique el valor del campo y no
el de su buffer de edición de esta forma:
FUNCTION SaveTipo( oDataSet, Value )
LOCAL oField := oDataSet:oFieldByName( "NRO_RES" )
do case
case Value == "Mutualizado"
oField:FieldPut( 1 )
case Value == "No Mutualizado"
oField:FieldPut( 2 )
case Value == "Otra"
oField:FieldPut( 3 )
end case
RETURN nil
Saludos,
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=44c0dae8@news.xailer.com...]44c0dae8@news.xailer.com...[/email]
> Va el ejemplo.
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
> news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
>> Rolando,
>>
>> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
>> está
>> haciendo mal.
>>
>> Un saludo,
>>
>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>>> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro
>>> en
>>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea de
>>> paso contiene un error, falta cerrar el corchete de aValues y sobra la
>>> llave abierta antes de aValues )
>>>
>>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>>> oField:DataSet:Tipo } )
>>>
>>> de todas formas con el manual no me alcanzo para entenderlo, por eso
>>> pido ayuda, gracias igual.
>>>
>>> --
>>> Rolando Sarrailh
>>> TEL. (0221)-4891480
>>> rsarrailh@ciudad.com.ar
>>>
>>
>>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
TDataField:OnSetValue
Ignacio,
Muchas gracias, todo funciona perfecto, me confundio un poco
la propiedad lNumeric de TDBEdit pero ya esta bien claro todo.
Un saludo.
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:44c0f25c$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Rolando,
>
> Muchas gracias. He visto los siguientes errores:
>
> 1) ::oDataPac:cMutual:OnSetValue := {|ofield,
> value|savetipo(ofield:odataset, value) }
>
> ::oDataPac:cMutual NO es un objeto TDataField. Es el valor del campo, en
> tu caso lo que devuelva el bloque:
>
> {|oField| aValues[ oField:oDataSet:NRO_RES ] }
>
> Debería haberse escrito así:
>
> WITH OBJECT ::oDataPac:AddCalcField("cMutual", {|oField| aValues[
> oField:oDataSet:NRO_RES ] } )
> :OnSetValue := {|ofield, value|savetipo(ofield:odataset, value) }
> END WITH
>
> 2) Has utilizado para el primer campo en el Form2 un control tipo TDBEdit,
> pero el campo que enlaza es del tipo numérico. Los controles tipo TEdit o
> TDBEdit sólo manejan tipos carácter. Por este motivo daba un error de
> FieldPut() al salvar los datos. No obstante acabo de modificar la clase
> TDbfDataSet para que ofrezca más información cuando esto ocurra, por
> ejemplo:
>
> #1: XAILER Fieldput error: Invalid data type for field 'CODPAC'. Expected
> type 'N', got type 'C' (1)
>
> ´3) La grabación en la función SaveTipo() no funcionaba porque la
> actualización de los campos calculados se hacía después de los campos
> normales, y por lo tanto cualquier modificación que hicieses en los campos
> normales, como seguía en modo edición, no se tenían en cuenta. He
> solucionado el problema forzando a que primero se graben los campos
> calculados y a continuación los campos normales. No obstante lo puedes
> solucionar tu facilmente forzando a que se modifique el valor del campo y
> no el de su buffer de edición de esta forma:
>
> FUNCTION SaveTipo( oDataSet, Value )
>
> LOCAL oField := oDataSet:oFieldByName( "NRO_RES" )
>
> do case
> case Value == "Mutualizado"
> oField:FieldPut( 1 )
> case Value == "No Mutualizado"
> oField:FieldPut( 2 )
> case Value == "Otra"
> oField:FieldPut( 3 )
> end case
> RETURN nil
>
> Saludos,
>
> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
> news:[email=44c0dae8@news.xailer.com...]44c0dae8@news.xailer.com...[/email]
>> Va el ejemplo.
>>
>> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
>> news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
>>> Rolando,
>>>
>>> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
>>> está
>>> haciendo mal.
>>>
>>> Un saludo,
>>>
>>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>>> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>>>> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro
>>>> en
>>>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea
>>>> de
>>>> paso contiene un error, falta cerrar el corchete de aValues y sobra la
>>>> llave abierta antes de aValues )
>>>>
>>>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>>>> oField:DataSet:Tipo } )
>>>>
>>>> de todas formas con el manual no me alcanzo para entenderlo, por
>>>> eso
>>>> pido ayuda, gracias igual.
>>>>
>>>> --
>>>> Rolando Sarrailh
>>>> TEL. (0221)-4891480
>>>> rsarrailh@ciudad.com.ar
>>>>
>>>
>>>
>>
>>
>>
>
>
Muchas gracias, todo funciona perfecto, me confundio un poco
la propiedad lNumeric de TDBEdit pero ya esta bien claro todo.
Un saludo.
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:44c0f25c$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Rolando,
>
> Muchas gracias. He visto los siguientes errores:
>
> 1) ::oDataPac:cMutual:OnSetValue := {|ofield,
> value|savetipo(ofield:odataset, value) }
>
> ::oDataPac:cMutual NO es un objeto TDataField. Es el valor del campo, en
> tu caso lo que devuelva el bloque:
>
> {|oField| aValues[ oField:oDataSet:NRO_RES ] }
>
> Debería haberse escrito así:
>
> WITH OBJECT ::oDataPac:AddCalcField("cMutual", {|oField| aValues[
> oField:oDataSet:NRO_RES ] } )
> :OnSetValue := {|ofield, value|savetipo(ofield:odataset, value) }
> END WITH
>
> 2) Has utilizado para el primer campo en el Form2 un control tipo TDBEdit,
> pero el campo que enlaza es del tipo numérico. Los controles tipo TEdit o
> TDBEdit sólo manejan tipos carácter. Por este motivo daba un error de
> FieldPut() al salvar los datos. No obstante acabo de modificar la clase
> TDbfDataSet para que ofrezca más información cuando esto ocurra, por
> ejemplo:
>
> #1: XAILER Fieldput error: Invalid data type for field 'CODPAC'. Expected
> type 'N', got type 'C' (1)
>
> ´3) La grabación en la función SaveTipo() no funcionaba porque la
> actualización de los campos calculados se hacía después de los campos
> normales, y por lo tanto cualquier modificación que hicieses en los campos
> normales, como seguía en modo edición, no se tenían en cuenta. He
> solucionado el problema forzando a que primero se graben los campos
> calculados y a continuación los campos normales. No obstante lo puedes
> solucionar tu facilmente forzando a que se modifique el valor del campo y
> no el de su buffer de edición de esta forma:
>
> FUNCTION SaveTipo( oDataSet, Value )
>
> LOCAL oField := oDataSet:oFieldByName( "NRO_RES" )
>
> do case
> case Value == "Mutualizado"
> oField:FieldPut( 1 )
> case Value == "No Mutualizado"
> oField:FieldPut( 2 )
> case Value == "Otra"
> oField:FieldPut( 3 )
> end case
> RETURN nil
>
> Saludos,
>
> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
> news:[email=44c0dae8@news.xailer.com...]44c0dae8@news.xailer.com...[/email]
>> Va el ejemplo.
>>
>> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
>> news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
>>> Rolando,
>>>
>>> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
>>> está
>>> haciendo mal.
>>>
>>> Un saludo,
>>>
>>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>>> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>>>> El ejemplo de la documentación lo vi y trate de usarlo, como esta claro
>>>> en
>>>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea
>>>> de
>>>> paso contiene un error, falta cerrar el corchete de aValues y sobra la
>>>> llave abierta antes de aValues )
>>>>
>>>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>>>> oField:DataSet:Tipo } )
>>>>
>>>> de todas formas con el manual no me alcanzo para entenderlo, por
>>>> eso
>>>> pido ayuda, gracias igual.
>>>>
>>>> --
>>>> Rolando Sarrailh
>>>> TEL. (0221)-4891480
>>>> rsarrailh@ciudad.com.ar
>>>>
>>>
>>>
>>
>>
>>
>
>
TDataField:OnSetValue
Hola: de vuelta por aqui, tengo un problema con los campos calculados cuando
entran en modo :AddNew no graba los valores adecuados, en modo :Edit andan
bien, tambien hay un error en el control memo que no logro descubrir, va el
ejemplo y Muchas gracias,
Un saludo.
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=44c10b8f@news.xailer.com...]44c10b8f@news.xailer.com...[/email]
> Ignacio,
> Muchas gracias, todo funciona perfecto, me confundio un
> poco
> la propiedad lNumeric de TDBEdit pero ya esta bien claro todo.
>
> Un saludo.
>
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
> news:44c0f25c$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> Rolando,
>>
>> Muchas gracias. He visto los siguientes errores:
>>
>> 1) ::oDataPac:cMutual:OnSetValue := {|ofield,
>> value|savetipo(ofield:odataset, value) }
>>
>> ::oDataPac:cMutual NO es un objeto TDataField. Es el valor del campo, en
>> tu caso lo que devuelva el bloque:
>>
>> {|oField| aValues[ oField:oDataSet:NRO_RES ] }
>>
>> Debería haberse escrito así:
>>
>> WITH OBJECT ::oDataPac:AddCalcField("cMutual", {|oField| aValues[
>> oField:oDataSet:NRO_RES ] } )
>> :OnSetValue := {|ofield, value|savetipo(ofield:odataset, value) }
>> END WITH
>>
>> 2) Has utilizado para el primer campo en el Form2 un control tipo
>> TDBEdit,
>> pero el campo que enlaza es del tipo numérico. Los controles tipo TEdit o
>> TDBEdit sólo manejan tipos carácter. Por este motivo daba un error de
>> FieldPut() al salvar los datos. No obstante acabo de modificar la clase
>> TDbfDataSet para que ofrezca más información cuando esto ocurra, por
>> ejemplo:
>>
>> #1: XAILER Fieldput error: Invalid data type for field 'CODPAC'. Expected
>> type 'N', got type 'C' (1)
>>
>> ´3) La grabación en la función SaveTipo() no funcionaba porque la
>> actualización de los campos calculados se hacía después de los campos
>> normales, y por lo tanto cualquier modificación que hicieses en los
>> campos
>> normales, como seguía en modo edición, no se tenían en cuenta. He
>> solucionado el problema forzando a que primero se graben los campos
>> calculados y a continuación los campos normales. No obstante lo puedes
>> solucionar tu facilmente forzando a que se modifique el valor del campo y
>> no el de su buffer de edición de esta forma:
>>
>> FUNCTION SaveTipo( oDataSet, Value )
>>
>> LOCAL oField := oDataSet:oFieldByName( "NRO_RES" )
>>
>> do case
>> case Value == "Mutualizado"
>> oField:FieldPut( 1 )
>> case Value == "No Mutualizado"
>> oField:FieldPut( 2 )
>> case Value == "Otra"
>> oField:FieldPut( 3 )
>> end case
>> RETURN nil
>>
>> Saludos,
>>
>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>> news:[email=44c0dae8@news.xailer.com...]44c0dae8@news.xailer.com...[/email]
>>> Va el ejemplo.
>>>
>>> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
>>> news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
>>>> Rolando,
>>>>
>>>> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
>>>> está
>>>> haciendo mal.
>>>>
>>>> Un saludo,
>>>>
>>>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>>>> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>>>>> El ejemplo de la documentación lo vi y trate de usarlo, como esta
>>>>> claro
>>>>> en
>>>>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea
>>>>> de
>>>>> paso contiene un error, falta cerrar el corchete de aValues y sobra
>>>>> la
>>>>> llave abierta antes de aValues )
>>>>>
>>>>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>>>>> oField:DataSet:Tipo } )
>>>>>
>>>>> de todas formas con el manual no me alcanzo para entenderlo, por
>>>>> eso
>>>>> pido ayuda, gracias igual.
>>>>>
>>>>> --
>>>>> Rolando Sarrailh
>>>>> TEL. (0221)-4891480
>>>>> rsarrailh@ciudad.com.ar
>>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
Attached files Nuevo.zip (18.8 KB)Â
entran en modo :AddNew no graba los valores adecuados, en modo :Edit andan
bien, tambien hay un error en el control memo que no logro descubrir, va el
ejemplo y Muchas gracias,
Un saludo.
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=44c10b8f@news.xailer.com...]44c10b8f@news.xailer.com...[/email]
> Ignacio,
> Muchas gracias, todo funciona perfecto, me confundio un
> poco
> la propiedad lNumeric de TDBEdit pero ya esta bien claro todo.
>
> Un saludo.
>
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
> news:44c0f25c$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> Rolando,
>>
>> Muchas gracias. He visto los siguientes errores:
>>
>> 1) ::oDataPac:cMutual:OnSetValue := {|ofield,
>> value|savetipo(ofield:odataset, value) }
>>
>> ::oDataPac:cMutual NO es un objeto TDataField. Es el valor del campo, en
>> tu caso lo que devuelva el bloque:
>>
>> {|oField| aValues[ oField:oDataSet:NRO_RES ] }
>>
>> Debería haberse escrito así:
>>
>> WITH OBJECT ::oDataPac:AddCalcField("cMutual", {|oField| aValues[
>> oField:oDataSet:NRO_RES ] } )
>> :OnSetValue := {|ofield, value|savetipo(ofield:odataset, value) }
>> END WITH
>>
>> 2) Has utilizado para el primer campo en el Form2 un control tipo
>> TDBEdit,
>> pero el campo que enlaza es del tipo numérico. Los controles tipo TEdit o
>> TDBEdit sólo manejan tipos carácter. Por este motivo daba un error de
>> FieldPut() al salvar los datos. No obstante acabo de modificar la clase
>> TDbfDataSet para que ofrezca más información cuando esto ocurra, por
>> ejemplo:
>>
>> #1: XAILER Fieldput error: Invalid data type for field 'CODPAC'. Expected
>> type 'N', got type 'C' (1)
>>
>> ´3) La grabación en la función SaveTipo() no funcionaba porque la
>> actualización de los campos calculados se hacía después de los campos
>> normales, y por lo tanto cualquier modificación que hicieses en los
>> campos
>> normales, como seguía en modo edición, no se tenían en cuenta. He
>> solucionado el problema forzando a que primero se graben los campos
>> calculados y a continuación los campos normales. No obstante lo puedes
>> solucionar tu facilmente forzando a que se modifique el valor del campo y
>> no el de su buffer de edición de esta forma:
>>
>> FUNCTION SaveTipo( oDataSet, Value )
>>
>> LOCAL oField := oDataSet:oFieldByName( "NRO_RES" )
>>
>> do case
>> case Value == "Mutualizado"
>> oField:FieldPut( 1 )
>> case Value == "No Mutualizado"
>> oField:FieldPut( 2 )
>> case Value == "Otra"
>> oField:FieldPut( 3 )
>> end case
>> RETURN nil
>>
>> Saludos,
>>
>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>> news:[email=44c0dae8@news.xailer.com...]44c0dae8@news.xailer.com...[/email]
>>> Va el ejemplo.
>>>
>>> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
>>> news:[email=44c0bbfd@news.xailer.com...]44c0bbfd@news.xailer.com...[/email]
>>>> Rolando,
>>>>
>>>> Intente hacer un pequeño ejemplo y lo revisaremos para indicarle lo que
>>>> está
>>>> haciendo mal.
>>>>
>>>> Un saludo,
>>>>
>>>> "Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
>>>> news:[email=44c0baac@news.xailer.com...]44c0baac@news.xailer.com...[/email]
>>>>> El ejemplo de la documentación lo vi y trate de usarlo, como esta
>>>>> claro
>>>>> en
>>>>> el código que agregue, ademas vi la ayuda mas extensa ( que dicho sea
>>>>> de
>>>>> paso contiene un error, falta cerrar el corchete de aValues y sobra
>>>>> la
>>>>> llave abierta antes de aValues )
>>>>>
>>>>> oDataSet:AddCalcField( "cTipo", {|oField| { aValues[
>>>>> oField:DataSet:Tipo } )
>>>>>
>>>>> de todas formas con el manual no me alcanzo para entenderlo, por
>>>>> eso
>>>>> pido ayuda, gracias igual.
>>>>>
>>>>> --
>>>>> Rolando Sarrailh
>>>>> TEL. (0221)-4891480
>>>>> rsarrailh@ciudad.com.ar
>>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
Attached files Nuevo.zip (18.8 KB)Â
TDataField:OnSetValue
Rolando,
> Hola: de vuelta por aqui, tengo un problema con los campos calculados
> cuando
> entran en modo :AddNew no graba los valores adecuados, en modo :Edit andan
> bien,
Es porque estás usando oField:FieldPut(), y tienes que usar oField:VarPut()
> tambien hay un error en el control memo que no logro descubrir, va el
> ejemplo y Muchas gracias,
Corregido, gracias. Aquí tienes el módulo. Sólo tienes que añadir el .obj al
proyecto.
--
Un saludo,
José F. Giménez
http://www.xailer.com
Attached files dbfdataset.zip (11.6 KB)Â
> Hola: de vuelta por aqui, tengo un problema con los campos calculados
> cuando
> entran en modo :AddNew no graba los valores adecuados, en modo :Edit andan
> bien,
Es porque estás usando oField:FieldPut(), y tienes que usar oField:VarPut()
> tambien hay un error en el control memo que no logro descubrir, va el
> ejemplo y Muchas gracias,
Corregido, gracias. Aquí tienes el módulo. Sólo tienes que añadir el .obj al
proyecto.
--
Un saludo,
José F. Giménez
http://www.xailer.com
Attached files dbfdataset.zip (11.6 KB)Â
TDataField:OnSetValue
Ok. muchas gracias, como se agrega el .obj al proyecto ?
Un saludo,
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=44c73d5b@news.xailer.com...]44c73d5b@news.xailer.com...[/email]
> Rolando,
>
>> Hola: de vuelta por aqui, tengo un problema con los campos calculados
>> cuando
>> entran en modo :AddNew no graba los valores adecuados, en modo :Edit
>> andan
>> bien,
>
> Es porque estás usando oField:FieldPut(), y tienes que usar
> oField:VarPut()
>
>
>> tambien hay un error en el control memo que no logro descubrir, va el
>> ejemplo y Muchas gracias,
>
> Corregido, gracias. Aquí tienes el módulo. Sólo tienes que añadir el .obj
> al proyecto.
>
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Un saludo,
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=44c73d5b@news.xailer.com...]44c73d5b@news.xailer.com...[/email]
> Rolando,
>
>> Hola: de vuelta por aqui, tengo un problema con los campos calculados
>> cuando
>> entran en modo :AddNew no graba los valores adecuados, en modo :Edit
>> andan
>> bien,
>
> Es porque estás usando oField:FieldPut(), y tienes que usar
> oField:VarPut()
>
>
>> tambien hay un error en el control memo que no logro descubrir, va el
>> ejemplo y Muchas gracias,
>
> Corregido, gracias. Aquí tienes el módulo. Sólo tienes que añadir el .obj
> al proyecto.
>
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
TDataField:OnSetValue
Rolando,
> Ok. muchas gracias, como se agrega el .obj al proyecto ?
Usa la opción "Añadir fichero al proyecto..." del menú "Proyecto"
--
Un saludo,
José F. Giménez
http://www.xailer.com
> Ok. muchas gracias, como se agrega el .obj al proyecto ?
Usa la opción "Añadir fichero al proyecto..." del menú "Proyecto"
--
Un saludo,
José F. Giménez
http://www.xailer.com