2009-12-04 4 views
0

Я написал приложение, которое позволяет пользователю определять запрос, запускать его с использованием компонента TADOQuery и сохранять отчет на свой ПК в виде XML-документа (SaveAsFile, передаваемый в pfXML в качестве параметра Format) для автономного просмотра. Это прекрасно работает.Конкатенация результата Delphi ADOQuery с использованием ClientDataSet

Что мне теперь нужно сделать, это конкатенация результатов. Я имею в виду, что мне нужно получить как минимум два отчета (с одинаковыми полями, поскольку они используют один и тот же запрос) и объединить их вместе для создания одного отчета. Например: Скажите, что у меня есть запрос, который извлекает список пользователей. Я запускаю этот запрос на «System A» и «System B», где System A и System B являются двумя отдельными системами. Как только я запустил запрос в обеих системах, у меня есть два отдельных файла отчета, которые я могу загрузить обратно в компонент TADOQuery, а затем просмотреть на экране. Что мне нужно сделать, это объединить отчеты вместе, поэтому вместо того, чтобы переключаться между двумя отчетами, я могу одновременно видеть все результаты на экране.

Мне сказали, что я могу сделать это с помощью TClientDataSet, но я относительно новичок в программировании базы данных и понятия не имею, с чего начать. Я проверил статьи по адресу http://delphi.about.com/od/usedbvcl/a/tclientdataset.htm, но я все еще в темноте, поскольку ничто, кажется, не делает именно то, что мне нужно для этого.

У меня поэтому есть два вопроса: 1. Использует ли TClientDataSet лучший способ взять два отдельных набора результатов и объединить их? Если есть лучший способ сделать это, что это? 2. Если использование TClientDataSet - лучший способ сделать это, как именно я буду заниматься этим? Как вы передаете данные из TADOQuery в TClientDataSet, а затем снова? Основной поток обработки должен идти что-то вроде этого:

Report 1 (LoadFromFile) -> TADOQuery \

        ClientDataSet -> TADOQuery -> SaveToFile 

Сообщить 2 (LoadFromFile) -> TADOQuery/

Вся помощь будет оценил это. Я действительно не знаю, с чего начать!

ответ

0

Я только что закончил изучать это. Мое приложение позволяет пользователю создавать отчеты, запрашивая их базы данных. Я могу заставить это работать, и он очень эффективен для небольших наборов результатов, однако, поскольку это приложение для отчетов, и вполне возможно, что сотни тысяч записей могут быть возвращены, использование ClientDataSet приводит к серьезным проблемам с производительностью. После того, как вы получите выше около 50000 записей (разумных, учитывая клиентскую базу), обработка начинает экспоненциально возрастать, так что это сейчас в основном спорно.

Смежные вопросы