Chico, equipo Xailer..
duda sobre oDataSet:AddUserVar() sirve para "agregar" un campo Virtual y éste se comporta como un campo mas del Dataset? es decir, almacena valores por cada registro?
GRACIAS !!
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.
oDataSet:AddUserVar() uso por registro?
-
- Mensajes: 155
- Registrado: Mié Nov 03, 2004 12:42 pm
- Ubicación: Cancún, México
- Contactar:
oDataSet:AddUserVar() uso por registro?
Saludos
Israel
Israel
- ignacio
- Site Admin
- Mensajes: 9253
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: oDataSet:AddUserVar() uso por registro?
Buenos días,
oDataset:AddUserVar() añade un campo virtual a la tabla que simplemente ejecuta un code-block. Esto es todo. No incluye ninguna persistencia de ningún tipo que es lo que sugiere. Lo más sencillo es realizar una SELECT con un campo inventado. Algo así:
SELECT * , 0 as MiCampo FROM CLIENTES
oDataset:MiCampo siempre la va a devolver el valor 0. Obviamente MiCampo no es un campo real de la tabla y cualquier intento de asignarle un valor provocará un error. No obstante, la solución es sencilla utilice un TMemDataset que si podrá editar y de paso incluya un campo más para indicar que el registro ha sido modificado. Algo así:
SELECT * , 0 as MiCampo, 0 as MiEstado FROM CLIENTES
Cada vez que edite el registro ponga el campo MiEstado a 1, si lo borra a 2 y si añade 3. El resto del código es coser y cantar. Recorrease el TMemDataset y si MiEstado es distinto de cero haga las modificaciones pertinente. Échele un vistazo a los métodos oDataset:InitFrom() y oDataset:SaveFrom()
Un saludo
oDataset:AddUserVar() añade un campo virtual a la tabla que simplemente ejecuta un code-block. Esto es todo. No incluye ninguna persistencia de ningún tipo que es lo que sugiere. Lo más sencillo es realizar una SELECT con un campo inventado. Algo así:
SELECT * , 0 as MiCampo FROM CLIENTES
oDataset:MiCampo siempre la va a devolver el valor 0. Obviamente MiCampo no es un campo real de la tabla y cualquier intento de asignarle un valor provocará un error. No obstante, la solución es sencilla utilice un TMemDataset que si podrá editar y de paso incluya un campo más para indicar que el registro ha sido modificado. Algo así:
SELECT * , 0 as MiCampo, 0 as MiEstado FROM CLIENTES
Cada vez que edite el registro ponga el campo MiEstado a 1, si lo borra a 2 y si añade 3. El resto del código es coser y cantar. Recorrease el TMemDataset y si MiEstado es distinto de cero haga las modificaciones pertinente. Échele un vistazo a los métodos oDataset:InitFrom() y oDataset:SaveFrom()
Un saludo
-
- Mensajes: 155
- Registrado: Mié Nov 03, 2004 12:42 pm
- Ubicación: Cancún, México
- Contactar:
Re: oDataSet:AddUserVar() uso por registro?
Ignacio:
Muchas gracias por la aclaración y el TIP, lo probare de esa manera
Muchas gracias por la aclaración y el TIP, lo probare de esa manera
Saludos
Israel
Israel