MemDataSet:Edit + MemDataSet:Filter + MemDataSet:Delete
Publicado: Vie Dic 29, 2006 1:56 pm
Hola,
En un MemDataset establezco un filtro y lo ordeno como sigue:
::oMemDataSet1:SetFilter("DIA1 > 400.00")
::oMemDataSet1:sort({2}) // NDIA1
Luego, me posiciono en un registro cualquiera y modifico un campo de la fila
y lo elimino.
// -----> Modificar un dato de la fila actual del memdataset
::oMemDataSet1:Edit()
::oMemDataSet1:VarPut( ::oMemDataSet1:FieldPos( "DIA"+LTRIM(STR( 1 ) ) ),
0 )
::oMemDataSet1:Save()
::oMemDataSet1:Delete()
Y luego me recorro el memdataset (que está con filtro activo) de esta
manera:
cCodigo := ""
::oMemDataSet1:GoTop()
DO WHILE !::oMemDataSet1:Eof()
cCodigo+= ::oMemDataSet1:cliente+CRLF
::oMemDataSet1:Skip(+1)
ENDDO
MsgInfo(ccodigo)
Y el resultado es que _todos_ los registros muestran el mismo dato. Da la
sensación de que aunque hagas un Skip, éste no se actualiza.
Os dejo un ejemplo donde, para verlo claramente, pulsais los botones del
formulario en el siguiente orden:
Filtrar->Borrar registro actual -> Recorrer MemSet
Y vereis que siempre muestra el mismo dato.
Saludos y gracias por vuestro tiempo.
José Luis Capel
Attached files test3.zip (2.8 KB)Â
En un MemDataset establezco un filtro y lo ordeno como sigue:
::oMemDataSet1:SetFilter("DIA1 > 400.00")
::oMemDataSet1:sort({2}) // NDIA1
Luego, me posiciono en un registro cualquiera y modifico un campo de la fila
y lo elimino.
// -----> Modificar un dato de la fila actual del memdataset
::oMemDataSet1:Edit()
::oMemDataSet1:VarPut( ::oMemDataSet1:FieldPos( "DIA"+LTRIM(STR( 1 ) ) ),
0 )
::oMemDataSet1:Save()
::oMemDataSet1:Delete()
Y luego me recorro el memdataset (que está con filtro activo) de esta
manera:
cCodigo := ""
::oMemDataSet1:GoTop()
DO WHILE !::oMemDataSet1:Eof()
cCodigo+= ::oMemDataSet1:cliente+CRLF
::oMemDataSet1:Skip(+1)
ENDDO
MsgInfo(ccodigo)
Y el resultado es que _todos_ los registros muestran el mismo dato. Da la
sensación de que aunque hagas un Skip, éste no se actualiza.
Os dejo un ejemplo donde, para verlo claramente, pulsais los botones del
formulario en el siguiente orden:
Filtrar->Borrar registro actual -> Recorrer MemSet
Y vereis que siempre muestra el mismo dato.
Saludos y gracias por vuestro tiempo.
José Luis Capel
Attached files test3.zip (2.8 KB)Â