Página 1 de 1

tMemDataSet y FieldPut

Publicado: Mié May 03, 2006 11:07 am
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

tMemDataSet y FieldPut

Publicado: Mié May 03, 2006 12:09 pm
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

tMemDataSet y FieldPut

Publicado: Mié May 03, 2006 12:33 pm
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

tMemDataSet y FieldPut

Publicado: Mié May 03, 2006 12:41 pm
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