Pregunta

¿Es posible colocar los resultados de más de una consulta en más de una tabla en un TClientDataset?

algo así como

SELECT * from t1;
SELECT * from t2;
SELECT * from t3;

Parece que no puedo encontrar una manera de lograr que un proveedor de datos (SetProvider) obtenga resultados de más de una tabla a la vez.

¿Fue útil?

Solución

No hay forma de tener varios datos de tablas en el mismo TClientDataSet como al que hizo referencia.TClientDataSet contiene un único cursor para un único conjunto de datos.

Otros consejos

ClientDatasets puede contener campos que son en sí mismos otros conjuntos de datos.Entonces, si desea crear tres tablas en un solo conjunto de datos, cree tres ClientDatasets manteniendo los tres conjuntos de resultados que desea, y luego puede colocarlos en un solo ClientDataSet.

Este artículo:

http://dn.codegear.com/article/29001

le muestra cómo hacerlo tanto en tiempo de ejecución como en tiempo de diseño.Preste especial atención al apartado titulado:

"Creando un ClientDataSet's Estructura en tiempo de ejecución usando TFields"

La única manera sería unirse a las mesas.Pero luego debe proporcionar los criterios de unión mediante claves externas unidas.

select * from t1, t2, t3 where t1.key = t2.key and t2.key = t3.key;

Ahora supongamos que se le ocurrió una clave (como LineNr) que permitiría dicha unión.Luego podría usar una combinación externa completa para incluir todos los registros (importante si no todas las tablas tienen el mismo número de filas).Pero esto de alguna manera sería un truco.Asegúrese de no utilizar auto_number como clave, ya que no reutiliza claves y, por lo tanto, tiende a dejar huecos en la numeración, lo que da como resultado muchas líneas que solo se llenan parcialmente con valores.

Si desea completar un conjunto de datos de cliente a partir de varias tablas que tienen el mismo conjunto de campos, puede utilizar el operador UNION para hacerlo.Esto simplemente usará las mismas columnas y combinará todas las filas en una tabla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top