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)Â