Page 1 of 1

oDataSet:AddUserVar() uso por registro?

Posted: Thu Sep 03, 2020 5:00 pm
by Israel Solis
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 !!

Re: oDataSet:AddUserVar() uso por registro?

Posted: Thu Sep 03, 2020 5:13 pm
by ignacio
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

Re: oDataSet:AddUserVar() uso por registro?

Posted: Thu Sep 03, 2020 9:24 pm
by Israel Solis
Ignacio:

Muchas gracias por la aclaración y el TIP, lo probare de esa manera