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.

TDataSet:AddUserVar

Foro de Xailer profesional en español
Responder
Claudio C
Mensajes: 60
Registrado: Dom Sep 20, 2015 8:13 pm
Ubicación: Buenos Aires

TDataSet:AddUserVar

Mensaje por Claudio C »

Estimados:
Muestro una tabla SLQ en un TDBBrowse. Este browse utiliza como dataset un objeto TSQLtable().
Necesito agregar una columna de usuario en el browse. Esta columna NO se corresponde con ningun campo de la tabla ni es un campo 'calculado' en base a otros campos existentes en la tabla.
Esta columna que necesito es un dato adicional, una marca para filas del browse ( por ejemplo como si fuese un checkbox de seleccion arbitraria )

Al intentar implementar esto veo que existe un método en el dataset: AddUserVar. Agrego este 'campo' y lo llamo marca:

::oSQLTable1:AddUserVar( 'MARCA','no')

Luego agrego un botón que cambie el valor del campo marca:
::oSQLTable1:MARCA:='si'
marca_01.png
marca_01.png (154.92 KiB) Visto 1951 veces
Al correr el programa y pulsar el boton obtengo la imagen adjunta:
marca.jpg
marca.jpg (24.94 KiB) Visto 1951 veces
Por la imagen deduzco que AddUserVar agrega una unica variable asociada al dataset y no una columna con lo cual solo puedo guardar un valor asociado al dataset. (Lo que necesito es guardar un valor por cada fila de la columna).
Presentado el caso mis preguntas son:
1) ¿Es correcta mi interpretacion del funcionamiento de AddUserVar ?
2) ¿Existe alguna forma de implementar una columna virtual (no calculada) de manera que sea editable y sopirte información al momento de mostrar el browse ?
3) Si no existe ... lo unico que quedaría sería crear una estructura auxiliar ( una array, hash etc) que 'soporte' esta informacion fuera del dataset. ¿Sería lo correcto?
Aguardo vuestras sugerenicas.
Gracias por su tiempo y atención.
Claudio
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TDataSet:AddUserVar

Mensaje por ignacio »

Buenos días,

Efectivamente AddUserVar añade una única variable para todo el dataset, no una variable por cada fila del mismo.

Si está utilizando motores SQL tiene la posibilidad de crear una columna virtual, por ejemplo:

SELECT *, "" AS MiVariable AS Clientes

De esta forma tiene un campo MiVariable en el cual puede poner lo que desee. Obviamente el campo 'MiVariable' no existe en la tabla por lo tanto sólo debe utilizar esta técnica con TMemdataset. Si después necesita actualizar datos utilizando la información de dicho dataset en memoria, deberá realizar un proceso de actualización de sólo las filas modificadas, que es muy sencillo.

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Claudio C
Mensajes: 60
Registrado: Dom Sep 20, 2015 8:13 pm
Ubicación: Buenos Aires

Re: TDataSet:AddUserVar (resuelto)

Mensaje por Claudio C »

Excelente
En particular estoy trayendo datos de una vista con maria db. Agregué en la vista esta columna 'virtual' que la acepto sin problemas.
También cargue los datos en TMEMDataset como fue tu sugerencia y funcionó perfecto.

Gracias, una vez mas.
Claudio.
Responder