Pergunta

Eu escrevi um aplicativo que permite que um usuário para definir uma consulta, executá-lo usando um componente TADOQuery, e salvar o relatório em seu PC como um documento XML (SaveAsFile passando em pfXML como o parâmetro Format) para visualização offline. Esta multa funciona.

O que eu agora precisa fazer é concatenar os resultados. O que quero dizer com isto é que eu preciso para obter, pelo menos, dois relatórios (com campos idênticos como eles estão usando a mesma consulta) e juntá-las para fazer um relatório. Por exemplo: Digamos que eu tenha uma consulta que recupera uma lista de usuários. I executar essa consulta em "Sistema A" e "Sistema B", onde Sistema A e Sistema B são dois sistemas separados. Assim que eu tiver executar a consulta em ambos os sistemas, eu tenho dois arquivos de relatório separado, o que eu posso carregar de volta para um componente TADOQuery e depois ver na tela. O que eu preciso fazer, porém, é se juntar aos relatórios em conjunto, então ao invés de ter que alternar entre os dois relatórios, eu posso ver todos os resultados na tela ao mesmo tempo.

Foi-me dito que eu posso fazer isso usando um TClientDataSet mas eu sou relativamente novo para programação de banco de dados e não tem idéia por onde começar com isso. Eu verifiquei os artigos em http://delphi.about.com/ od / usedbvcl / a / tclientdataset.htm mas eu ainda estou no escuro como nada parece fazer exatamente o que eu preciso fazer.

Por isso, tenho duas perguntas: 1. O uso de um TClientDataSet a melhor maneira de levar dois conjuntos de resultados separados e concatenar-los? Se há uma maneira melhor de fazer isso, o que é? 2. Se estiver usando um TClientDataSet é a melhor maneira de fazer isso, exatamente como eu iria fazer isso? Como você transferir dados de um TADOQuery em um TClientDataSet e depois voltar? O fluxo básico das necessidades de processamento para ir algo como isto:

Relatório 1 (LoadFromFile) -> TADOQuery \

                                  ClientDataSet -> TADOQuery -> SaveToFile

Report 2 (LoadFromFile) -> TADOQuery /

Toda a ajuda seria apreciada sobre este assunto. Eu realmente não sei por onde começar!

Foi útil?

Solução

Eu prestes a terminar olhando para isso. Meu aplicativo permite ao usuário gerar relatórios consultando suas bases de dados. Eu posso chegar a este trabalho e é muito eficiente para pequenos conjuntos de resultados - no entanto, como este é um aplicativo de relatório, e é inteiramente possível que centenas de milhares de registros pode ser retornado, usando um ClientDataSet dá problemas de desempenho maciças. Depois de conseguir acima de cerca de 50.000 registros (razoáveis, dada a base de clientes), o processamento começa a aumentar exponencialmente, por isso esta é agora basicamente discutível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top