Hola,
No consigo hacer lo siguiente: Tengo un MemDataset enlazado con un dbbrowse
en un formulario. Desde ese formulario abro otro formulario de forma modal
y ahí se puede modificar elementos del memdataset. El caso es que al hacer
cambios en el formulario se reflejan automáticamente en el dbbrowse,
incluso con oMemDataSet:lUpLinked := .F.
Os dejo un ejemplo a ver si alguien me puede decir donde me he dejado algo
por hacer.
Saludos y gracias,
José Luis Capel
Attached files MemdataSet.zip (3.1 KB)Â
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.
tMemDataSet y lUpdLinked - 1 attachment
tMemDataSet y lUpdLinked - 1 attachment
Ups...
Veo que no lo he explicado claro...
Lo que pretendo es que los cambios que puedan haber en el tMemdataset no
se reflejen en el dbbrowse. Para ello hice algo parecido a esto:
::oMemdataSet1:lUpLinked := .F.
oFrm := tMiFormulario():New(Self)
oFrm:ShowModal()
::oMemdataSet1:lUpLinked := .T.
en tMiFormulario pueden añadir/modificar elementos del tMemdataset. Pero
no consigo que _no_ se actualicen en el dbBrowse.
Saludos,
José Luis Capel
"José Luis Capel" <jose.luis@iaicom.com> wrote in
news:[email=Xns97B9A9065935Dasalesiaicomcom@82.144.6.50]Xns97B9A9065935Dasalesiaicomcom@82.144.6.50[/email]:
> Hola,
>
> No consigo hacer lo siguiente: Tengo un MemDataset enlazado con un
> dbbrowse en un formulario. Desde ese formulario abro otro formulario
> de forma modal y ahí se puede modificar elementos del memdataset. El
> caso es que al hacer cambios en el formulario se reflejan
> automáticamente en el dbbrowse, incluso con oMemDataSet:lUpLinked :=
> .F.
>
> Os dejo un ejemplo a ver si alguien me puede decir donde me he dejado
> algo por hacer.
>
> Saludos y gracias,
> José Luis Capel
>
> begin 644 MemdataSet.zip
> Attachment decoded: MemdataSet.zip
> `
> end
>
>
Veo que no lo he explicado claro...
Lo que pretendo es que los cambios que puedan haber en el tMemdataset no
se reflejen en el dbbrowse. Para ello hice algo parecido a esto:
::oMemdataSet1:lUpLinked := .F.
oFrm := tMiFormulario():New(Self)
oFrm:ShowModal()
::oMemdataSet1:lUpLinked := .T.
en tMiFormulario pueden añadir/modificar elementos del tMemdataset. Pero
no consigo que _no_ se actualicen en el dbBrowse.
Saludos,
José Luis Capel
"José Luis Capel" <jose.luis@iaicom.com> wrote in
news:[email=Xns97B9A9065935Dasalesiaicomcom@82.144.6.50]Xns97B9A9065935Dasalesiaicomcom@82.144.6.50[/email]:
> Hola,
>
> No consigo hacer lo siguiente: Tengo un MemDataset enlazado con un
> dbbrowse en un formulario. Desde ese formulario abro otro formulario
> de forma modal y ahí se puede modificar elementos del memdataset. El
> caso es que al hacer cambios en el formulario se reflejan
> automáticamente en el dbbrowse, incluso con oMemDataSet:lUpLinked :=
> .F.
>
> Os dejo un ejemplo a ver si alguien me puede decir donde me he dejado
> algo por hacer.
>
> Saludos y gracias,
> José Luis Capel
>
> begin 644 MemdataSet.zip
> Attachment decoded: MemdataSet.zip
> `
> end
>
>
- ignacio
- Site Admin
- Mensajes: 9449
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
tMemDataSet y lUpdLinked - 1 attachment
José Luis,
Me temo que no es posible. lUpdLinked cuando está a verdadero actualiza los
valores de los DataControls y FUERZA el repintado pero no quiere decir que
cuando este a falso los DataControls no terminen reflejando los cambios. El
DBBrowse sobre TmemDataSet siempre se apoya directametne en una matriz, por
lo tanto, si se modifica cualquier elemento de la matriz, en cuanto el
DBBrowse se repinte mostrará los cambios.
Un saludo
"Aicom" <aicom@iaicom.com> escribió en el mensaje
news:[email=Xns97B9A992BEA47asalesiaicomcom@82.144.6.50...]Xns97B9A992BEA47asalesiaicomcom@82.144.6.50...[/email]
> Ups...
>
> Veo que no lo he explicado claro...
>
> Lo que pretendo es que los cambios que puedan haber en el tMemdataset no
> se reflejen en el dbbrowse. Para ello hice algo parecido a esto:
>
> ::oMemdataSet1:lUpLinked := .F.
>
> oFrm := tMiFormulario():New(Self)
> oFrm:ShowModal()
>
> ::oMemdataSet1:lUpLinked := .T.
>
>
> en tMiFormulario pueden añadir/modificar elementos del tMemdataset. Pero
> no consigo que _no_ se actualicen en el dbBrowse.
>
> Saludos,
> José Luis Capel
>
> "José Luis Capel" <jose.luis@iaicom.com> wrote in
> news:[email=Xns97B9A9065935Dasalesiaicomcom@82.144.6.50]Xns97B9A9065935Dasalesiaicomcom@82.144.6.50[/email]:
>
>> Hola,
>>
>> No consigo hacer lo siguiente: Tengo un MemDataset enlazado con un
>> dbbrowse en un formulario. Desde ese formulario abro otro formulario
>> de forma modal y ahí se puede modificar elementos del memdataset. El
>> caso es que al hacer cambios en el formulario se reflejan
>> automáticamente en el dbbrowse, incluso con oMemDataSet:lUpLinked :=
>> .F.
>>
>> Os dejo un ejemplo a ver si alguien me puede decir donde me he dejado
>> algo por hacer.
>>
>> Saludos y gracias,
>> José Luis Capel
>>
>> begin 644 MemdataSet.zip
>> Attachment decoded: MemdataSet.zip
>> `
>> end
>>
>>
>
Me temo que no es posible. lUpdLinked cuando está a verdadero actualiza los
valores de los DataControls y FUERZA el repintado pero no quiere decir que
cuando este a falso los DataControls no terminen reflejando los cambios. El
DBBrowse sobre TmemDataSet siempre se apoya directametne en una matriz, por
lo tanto, si se modifica cualquier elemento de la matriz, en cuanto el
DBBrowse se repinte mostrará los cambios.
Un saludo
"Aicom" <aicom@iaicom.com> escribió en el mensaje
news:[email=Xns97B9A992BEA47asalesiaicomcom@82.144.6.50...]Xns97B9A992BEA47asalesiaicomcom@82.144.6.50...[/email]
> Ups...
>
> Veo que no lo he explicado claro...
>
> Lo que pretendo es que los cambios que puedan haber en el tMemdataset no
> se reflejen en el dbbrowse. Para ello hice algo parecido a esto:
>
> ::oMemdataSet1:lUpLinked := .F.
>
> oFrm := tMiFormulario():New(Self)
> oFrm:ShowModal()
>
> ::oMemdataSet1:lUpLinked := .T.
>
>
> en tMiFormulario pueden añadir/modificar elementos del tMemdataset. Pero
> no consigo que _no_ se actualicen en el dbBrowse.
>
> Saludos,
> José Luis Capel
>
> "José Luis Capel" <jose.luis@iaicom.com> wrote in
> news:[email=Xns97B9A9065935Dasalesiaicomcom@82.144.6.50]Xns97B9A9065935Dasalesiaicomcom@82.144.6.50[/email]:
>
>> Hola,
>>
>> No consigo hacer lo siguiente: Tengo un MemDataset enlazado con un
>> dbbrowse en un formulario. Desde ese formulario abro otro formulario
>> de forma modal y ahí se puede modificar elementos del memdataset. El
>> caso es que al hacer cambios en el formulario se reflejan
>> automáticamente en el dbbrowse, incluso con oMemDataSet:lUpLinked :=
>> .F.
>>
>> Os dejo un ejemplo a ver si alguien me puede decir donde me he dejado
>> algo por hacer.
>>
>> Saludos y gracias,
>> José Luis Capel
>>
>> begin 644 MemdataSet.zip
>> Attachment decoded: MemdataSet.zip
>> `
>> end
>>
>>
>
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
tMemDataSet y lUpdLinked - 1 attachment
Ignacio,
> Me temo que no es posible. lUpdLinked cuando está a verdadero
> actualiza los valores de los DataControls y FUERZA el repintado pero
> no quiere decir que cuando este a falso los DataControls no terminen
> reflejando los cambios. El DBBrowse sobre TmemDataSet siempre se apoya
> directametne en una matriz, por lo tanto, si se modifica cualquier
> elemento de la matriz, en cuanto el DBBrowse se repinte mostrará los
> cambios.
Gracias por tu respuesta.
Te dejo un ejemplo que resume lo que estoy haciendo.
Parto de un tMemdataset con 5000 elementos. Ese tMemDataset lo muestro en
un dbBrowse. No obstante, el tMemdataset está filtrado por uno de sus
campos, con lo que en realidad está mostrando (por ejemplo) 4500 elementos.
Llamo al segundo formulario (de forma modal) con lUpLinked := .F.
Ese segundo formulario tiene datacontrols que, en el oncreate de cada uno,
se asigna el dataset al memdataset del formulario padre. Además, en el
onInitialize de este segundo formulario quito el filtro al MemDataSet
¿Que me encuentro? Pues que si muevo el segundo formulario (que es modal)
el dbBrowse se refresca; sin embargo, lo más curioso es que (en mis
pruebas) los datacontrols del segundo formulario cambian!!
Te dejo un ejemplo.
Saludos y gracias por tu tiempo.
José Luis Capel
Attached files MemdataSet.zip (3.2 KB)Â
> Me temo que no es posible. lUpdLinked cuando está a verdadero
> actualiza los valores de los DataControls y FUERZA el repintado pero
> no quiere decir que cuando este a falso los DataControls no terminen
> reflejando los cambios. El DBBrowse sobre TmemDataSet siempre se apoya
> directametne en una matriz, por lo tanto, si se modifica cualquier
> elemento de la matriz, en cuanto el DBBrowse se repinte mostrará los
> cambios.
Gracias por tu respuesta.
Te dejo un ejemplo que resume lo que estoy haciendo.
Parto de un tMemdataset con 5000 elementos. Ese tMemDataset lo muestro en
un dbBrowse. No obstante, el tMemdataset está filtrado por uno de sus
campos, con lo que en realidad está mostrando (por ejemplo) 4500 elementos.
Llamo al segundo formulario (de forma modal) con lUpLinked := .F.
Ese segundo formulario tiene datacontrols que, en el oncreate de cada uno,
se asigna el dataset al memdataset del formulario padre. Además, en el
onInitialize de este segundo formulario quito el filtro al MemDataSet
¿Que me encuentro? Pues que si muevo el segundo formulario (que es modal)
el dbBrowse se refresca; sin embargo, lo más curioso es que (en mis
pruebas) los datacontrols del segundo formulario cambian!!
Te dejo un ejemplo.
Saludos y gracias por tu tiempo.
José Luis Capel
Attached files MemdataSet.zip (3.2 KB)Â
- ignacio
- Site Admin
- Mensajes: 9449
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
tMemDataSet y lUpdLinked - 1 attachment
José Luis,
¿Y por que quitas el filtro al arrancar el segundo formulario? No tiene
mucho sentido, a mi modo de ver. Haciendo un simil con DBF estás haciendo lo
siguiente:
1) Muestro un browse con una DBF filtrada
2) Entro en edición de un registro de la DBF, pero justo después de
inicializar los controles con el valor de registro quito el filtro y me voy
al primer registro de la DBF
No tiene más sentido dejar el Browse en ese mismo registro que estás
editando. No consigo entenderlo.
En cualquier caso, se te está refrescando el Browse inicialmente cuando
haces el CLEARFILTER. Deberás indicar que no quieres que se actualizen los
controles e igualmente que no se posicione en el primer registro:
::oParent:oMemDataSet1:ClearFilter( .F., .F.)
El primer parametro indica que no vaya al primer registro y el segundo que
no actualice los DataControls. Veo que la documentación esta incompleta,
pero puedes fijarte en TMemDataSet:Filter que utiliza los mismos parametros.
Ahora lo corrigo en la documentación.
Después cuando grabas eres tu mismo el que hace una llamada a
DataSet:UpdateControls() y logicamente el Browse se actualiza.
Saludos,
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97B9C0CB2A01Dasalesiaicomcom@82.144.6.50...]Xns97B9C0CB2A01Dasalesiaicomcom@82.144.6.50...[/email]
> Ignacio,
>
>> Me temo que no es posible. lUpdLinked cuando está a verdadero
>> actualiza los valores de los DataControls y FUERZA el repintado pero
>> no quiere decir que cuando este a falso los DataControls no terminen
>> reflejando los cambios. El DBBrowse sobre TmemDataSet siempre se apoya
>> directametne en una matriz, por lo tanto, si se modifica cualquier
>> elemento de la matriz, en cuanto el DBBrowse se repinte mostrará los
>> cambios.
>
> Gracias por tu respuesta.
>
> Te dejo un ejemplo que resume lo que estoy haciendo.
>
> Parto de un tMemdataset con 5000 elementos. Ese tMemDataset lo muestro en
> un dbBrowse. No obstante, el tMemdataset está filtrado por uno de sus
> campos, con lo que en realidad está mostrando (por ejemplo) 4500
> elementos.
>
> Llamo al segundo formulario (de forma modal) con lUpLinked := .F.
> Ese segundo formulario tiene datacontrols que, en el oncreate de cada uno,
> se asigna el dataset al memdataset del formulario padre. Además, en el
> onInitialize de este segundo formulario quito el filtro al MemDataSet
>
> ¿Que me encuentro? Pues que si muevo el segundo formulario (que es modal)
> el dbBrowse se refresca; sin embargo, lo más curioso es que (en mis
> pruebas) los datacontrols del segundo formulario cambian!!
>
> Te dejo un ejemplo.
>
> Saludos y gracias por tu tiempo.
> José Luis Capel
>
>
¿Y por que quitas el filtro al arrancar el segundo formulario? No tiene
mucho sentido, a mi modo de ver. Haciendo un simil con DBF estás haciendo lo
siguiente:
1) Muestro un browse con una DBF filtrada
2) Entro en edición de un registro de la DBF, pero justo después de
inicializar los controles con el valor de registro quito el filtro y me voy
al primer registro de la DBF
No tiene más sentido dejar el Browse en ese mismo registro que estás
editando. No consigo entenderlo.
En cualquier caso, se te está refrescando el Browse inicialmente cuando
haces el CLEARFILTER. Deberás indicar que no quieres que se actualizen los
controles e igualmente que no se posicione en el primer registro:
::oParent:oMemDataSet1:ClearFilter( .F., .F.)
El primer parametro indica que no vaya al primer registro y el segundo que
no actualice los DataControls. Veo que la documentación esta incompleta,
pero puedes fijarte en TMemDataSet:Filter que utiliza los mismos parametros.
Ahora lo corrigo en la documentación.
Después cuando grabas eres tu mismo el que hace una llamada a
DataSet:UpdateControls() y logicamente el Browse se actualiza.
Saludos,
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97B9C0CB2A01Dasalesiaicomcom@82.144.6.50...]Xns97B9C0CB2A01Dasalesiaicomcom@82.144.6.50...[/email]
> Ignacio,
>
>> Me temo que no es posible. lUpdLinked cuando está a verdadero
>> actualiza los valores de los DataControls y FUERZA el repintado pero
>> no quiere decir que cuando este a falso los DataControls no terminen
>> reflejando los cambios. El DBBrowse sobre TmemDataSet siempre se apoya
>> directametne en una matriz, por lo tanto, si se modifica cualquier
>> elemento de la matriz, en cuanto el DBBrowse se repinte mostrará los
>> cambios.
>
> Gracias por tu respuesta.
>
> Te dejo un ejemplo que resume lo que estoy haciendo.
>
> Parto de un tMemdataset con 5000 elementos. Ese tMemDataset lo muestro en
> un dbBrowse. No obstante, el tMemdataset está filtrado por uno de sus
> campos, con lo que en realidad está mostrando (por ejemplo) 4500
> elementos.
>
> Llamo al segundo formulario (de forma modal) con lUpLinked := .F.
> Ese segundo formulario tiene datacontrols que, en el oncreate de cada uno,
> se asigna el dataset al memdataset del formulario padre. Además, en el
> onInitialize de este segundo formulario quito el filtro al MemDataSet
>
> ¿Que me encuentro? Pues que si muevo el segundo formulario (que es modal)
> el dbBrowse se refresca; sin embargo, lo más curioso es que (en mis
> pruebas) los datacontrols del segundo formulario cambian!!
>
> Te dejo un ejemplo.
>
> Saludos y gracias por tu tiempo.
> José Luis Capel
>
>
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
tMemDataSet y lUpdLinked - 1 attachment
Ignacio,
Gracias por tu respuesta.
> ¿Y por que quitas el filtro al arrancar el segundo formulario? No
> tiene mucho sentido, a mi modo de ver. Haciendo un simil con DBF estás
> haciendo lo siguiente:
> 1) Muestro un browse con una DBF filtrada
> 2) Entro en edición de un registro de la DBF, pero justo después de
> inicializar los controles con el valor de registro quito el filtro y
> me voy al primer registro de la DBF
>
> No tiene más sentido dejar el Browse en ese mismo registro que estás
> editando. No consigo entenderlo.
Es para simular una situación de mi aplicación. En mi caso, tengo 7
columnas numéricas que representan cada día de la semana. Cada fila
representa un cliente, y si ese cliente es visitado el lunes y martes, la
columna numérica del lunes y martes tiene un valor numérico distinto de
cero.
Entonces, si quiero mostrar solo los clientes que se visitan el lunes hago
un filtro tipo "ndia1 > 0.00". Sin embargo, si entro en edición, no me
interesa tener filtrado el memdataset dado que hago búsquedas por todo la
matriz. Es es la explicación.
> En cualquier caso, se te está refrescando el Browse inicialmente
> cuando haces el CLEARFILTER. Deberás indicar que no quieres que se
> actualizen los controles e igualmente que no se posicione en el primer
> registro:
>
>::oParent:oMemDataSet1:ClearFilter( .F., .F.)
>
> El primer parametro indica que no vaya al primer registro y el segundo
> que no actualice los DataControls. Veo que la documentación esta
> incompleta, pero puedes fijarte en TMemDataSet:Filter que utiliza los
> mismos parametros. Ahora lo corrigo en la documentación.
>
> Después cuando grabas eres tu mismo el que hace una llamada a
> DataSet:UpdateControls() y logicamente el Browse se actualiza.
>
Voy a seguir tus consejos.
Muchas gracias por tus explicaciones y aclaraciones.
Saludos,
José Luis Capel
Gracias por tu respuesta.
> ¿Y por que quitas el filtro al arrancar el segundo formulario? No
> tiene mucho sentido, a mi modo de ver. Haciendo un simil con DBF estás
> haciendo lo siguiente:
> 1) Muestro un browse con una DBF filtrada
> 2) Entro en edición de un registro de la DBF, pero justo después de
> inicializar los controles con el valor de registro quito el filtro y
> me voy al primer registro de la DBF
>
> No tiene más sentido dejar el Browse en ese mismo registro que estás
> editando. No consigo entenderlo.
Es para simular una situación de mi aplicación. En mi caso, tengo 7
columnas numéricas que representan cada día de la semana. Cada fila
representa un cliente, y si ese cliente es visitado el lunes y martes, la
columna numérica del lunes y martes tiene un valor numérico distinto de
cero.
Entonces, si quiero mostrar solo los clientes que se visitan el lunes hago
un filtro tipo "ndia1 > 0.00". Sin embargo, si entro en edición, no me
interesa tener filtrado el memdataset dado que hago búsquedas por todo la
matriz. Es es la explicación.
> En cualquier caso, se te está refrescando el Browse inicialmente
> cuando haces el CLEARFILTER. Deberás indicar que no quieres que se
> actualizen los controles e igualmente que no se posicione en el primer
> registro:
>
>::oParent:oMemDataSet1:ClearFilter( .F., .F.)
>
> El primer parametro indica que no vaya al primer registro y el segundo
> que no actualice los DataControls. Veo que la documentación esta
> incompleta, pero puedes fijarte en TMemDataSet:Filter que utiliza los
> mismos parametros. Ahora lo corrigo en la documentación.
>
> Después cuando grabas eres tu mismo el que hace una llamada a
> DataSet:UpdateControls() y logicamente el Browse se actualiza.
>
Voy a seguir tus consejos.
Muchas gracias por tus explicaciones y aclaraciones.
Saludos,
José Luis Capel