Pregunta

He escrito una aplicación que permite a un usuario definir una consulta, se ejecuta utilizando un componente TADOQuery, y guardar el informe en su PC como un documento XML (SaveAsFile que pasa en pfXML como el parámetro Format) para verlas sin conexión. Esto funciona bien.

Lo que hay que hacer ahora es concatenar los resultados. Lo que quiero decir con esto es que necesito para obtener al menos dos informes (con campos idénticos, ya que están utilizando la misma consulta) y unirlas para hacer un informe. Por ejemplo: Decir que tengo una consulta que recupera una lista de usuarios. Corro esta consulta en el "Sistema A" y "Sistema B", donde el sistema A y el sistema B son dos sistemas separados. Una vez que he ejecutar la consulta en ambos sistemas, tengo dos archivos de informes separados, que puedo cargar de nuevo en un componente TADOQuery y luego ver en la pantalla. Lo que tengo que hacer sin embargo es unirse a los informes juntos, así que en vez de tener que cambiar entre los dos informes, que se puede ver todos los resultados en pantalla al mismo tiempo.

Me han dicho que puedo hacer esto usando un TClientDataSet pero soy relativamente nuevo en la programación de base de datos y no tienen idea de por dónde empezar con esto. He comprobado los artículos en http://delphi.about.com/ OD / usedbvcl / a / tclientdataset.htm pero todavía estoy en la oscuridad, ya que nada parece hacer exactamente lo que necesito que haga.

Por lo tanto, tengo dos preguntas: 1. utiliza una TClientDataSet la mejor manera de tomar dos conjuntos de resultados separadas y concatenar? Si hay una mejor manera de hacer esto, ¿qué es? 2. Si se utiliza un TClientDataSet es la mejor manera de hacer esto, ¿cómo es exactamente hago para hacer esto? ¿Cómo se pueden transferir datos desde un TADOQuery en un TClientDataSet y luego de vuelta otra vez? El flujo básico del proceso que debe ser algo como esto:

Informe 1 (LoadFromFile) -> TADOQuery \

                                  ClientDataSet -> TADOQuery -> SaveToFile

Informe 2 (LoadFromFile) -> TADOQuery /

Todo tipo de ayuda sería apreciada en esto. Realmente no sé por dónde empezar!

¿Fue útil?

Solución

He a punto de terminar mirando en esto. Mi aplicación permite al usuario generar informes de consulta de sus bases de datos. Puedo conseguir que esto funcione y es muy eficiente para pequeños conjuntos de resultados - sin embargo, como se trata de una aplicación de informes, y es muy posible que cientos de miles de registros pueden ser devueltos, utilizando un ClientDataSet da problemas de rendimiento masivo. Una vez que llegue por encima de alrededor de 50.000 registros (razonable, teniendo en cuenta la base de clientes), el procesamiento comienza a aumentar de forma exponencial, por lo que esta ahora es básicamente irrelevante.

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