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.

tMemDataSet y FieldPut

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

tMemDataSet y FieldPut

Mensaje por jose.luis »

Hola,
No se si la sintaxis de FieldPut de tMemdataset es como sigue:
::oMemDataSet1:FieldPut(1, "mivalor")
El caso es que no me modifica el valor de la fila actual y columna indicada
(en el ejemplo 1) con el valor "mivalor".
Saludos,
José Luis Capel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9449
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

tMemDataSet y FieldPut

Mensaje por ignacio »

José Luis,
¿Estás seguro?
Acabo de modificar el ejemplo de TMemDataSet y funciona correctamente:
METHOD Button7Click( oSender ) CLASS TForm1
::oMemDataSet1:Fieldput( 1, "Prueba" )
::oDbBrowse1:RefreshCurrent()
RETURN Nil
Como es lógico, es absolutamente necesario refrescar la fila manualmente ya
que estas manipulando directamente los datos con el método FieldPut. Con el
siguiente código no hace falta ni siquiera refrescar el browse:
WITH OBJECT ::oMemDataSet1
:Edit()
:Name := "Prueba"
:Update()
END WITH
Saludos,
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97B8713FD9C6Easalesiaicomcom@82.144.6.50...]Xns97B8713FD9C6Easalesiaicomcom@82.144.6.50...[/email]
> Hola,
>
> No se si la sintaxis de FieldPut de tMemdataset es como sigue:
>
> ::oMemDataSet1:FieldPut(1, "mivalor")
>
> El caso es que no me modifica el valor de la fila actual y columna
> indicada
> (en el ejemplo 1) con el valor "mivalor".
>
> Saludos,
> José Luis Capel
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

tMemDataSet y FieldPut

Mensaje por jose.luis »

Ignacio,

> ¿Estás seguro?
>
> Acabo de modificar el ejemplo de TMemDataSet y funciona correctamente:
>
> METHOD Button7Click( oSender ) CLASS TForm1
>
> ::oMemDataSet1:Fieldput( 1, "Prueba" )
> ::oDbBrowse1:RefreshCurrent()
>
> RETURN Nil
>
> Como es lógico, es absolutamente necesario refrescar la fila
> manualmente ya que estas manipulando directamente los datos con el
> método FieldPut. Con el siguiente código no hace falta ni siquiera
> refrescar el browse:
>
> WITH OBJECT ::oMemDataSet1
> :Edit()
> :Name := "Prueba"
> :Update()
> END WITH
Gracias por el tiempo y las molestias que te estás tomando.
Creo que ya se lo que está ocurriendo. Mira este código:
WITH OBJECT ::oMemDataSet1
:AddNew()
:MiCampo1 := "Pepe"
:MiCampo2 := "Juan"
:FieldPut(3,"Antonio")
:Save()
END
Por lo que entiendo (haga o no el refreshcurrent a continuación del
fieldput), al hacer un SAVE pasa los valores del buffer interno del
dataset al propio dataset, con lo que sobre-escribe el valor "Antonio" de
la columna 3 por el que se haya generado en el buffer.
Si es así, ¿hay alguna forma de no trabajar con buffer?
Algo así como:
WITH OBJECT ::oMemDataSet1
:lBuffered := .F.
:AddNew()
:MiCampo1 := "Pepe"
:MiCampo2 := "Juan"
:FieldPut(3,"Antonio")
:Save()
END
Saludos y gracias por todo,
José Luis Capel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9449
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

tMemDataSet y FieldPut

Mensaje por ignacio »

José Luis,
Sin DataControls y por lo tanto sin bufferes:
WITH OBJECT oMemDataSet:
:Append()
:Fieldput( ....)
:Fieldput( ....)
:Fieldput( ....)
END WITH
oBrowse:Refresh()
No obstante no acabo de entender porque mezclas los dos sistemas, has de
usar uno u otro. En vez de:
:FieldPut(3,"Antonio")
Podrías usar simplemente:
:Nombre := Antonio
Aunque también si lo prefieres puede atacar al buffer directamente:
:VarPut( 3, "Antonio" )
Un saludo,
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97B87FCA1E8E7asalesiaicomcom@82.144.6.50...]Xns97B87FCA1E8E7asalesiaicomcom@82.144.6.50...[/email]
> Ignacio,
>
>> ¿Estás seguro?
>>
>> Acabo de modificar el ejemplo de TMemDataSet y funciona correctamente:
>>
>> METHOD Button7Click( oSender ) CLASS TForm1
>>
>> ::oMemDataSet1:Fieldput( 1, "Prueba" )
>> ::oDbBrowse1:RefreshCurrent()
>>
>> RETURN Nil
>>
>> Como es lógico, es absolutamente necesario refrescar la fila
>> manualmente ya que estas manipulando directamente los datos con el
>> método FieldPut. Con el siguiente código no hace falta ni siquiera
>> refrescar el browse:
>>
>> WITH OBJECT ::oMemDataSet1
>> :Edit()
>> :Name := "Prueba"
>> :Update()
>> END WITH
>
> Gracias por el tiempo y las molestias que te estás tomando.
>
> Creo que ya se lo que está ocurriendo. Mira este código:
>
> WITH OBJECT ::oMemDataSet1
> :AddNew()
> :MiCampo1 := "Pepe"
> :MiCampo2 := "Juan"
> :FieldPut(3,"Antonio")
> :Save()
> END
>
> Por lo que entiendo (haga o no el refreshcurrent a continuación del
> fieldput), al hacer un SAVE pasa los valores del buffer interno del
> dataset al propio dataset, con lo que sobre-escribe el valor "Antonio" de
> la columna 3 por el que se haya generado en el buffer.
>
> Si es así, ¿hay alguna forma de no trabajar con buffer?
>
> Algo así como:
>
> WITH OBJECT ::oMemDataSet1
> :lBuffered := .F.
> :AddNew()
> :MiCampo1 := "Pepe"
> :MiCampo2 := "Juan"
> :FieldPut(3,"Antonio")
> :Save()
> END
>
> Saludos y gracias por todo,
> José Luis Capel
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder