Объединение результатов в Delphi ADOQuery с использованием ClientDataSet - PullRequest
0 голосов
/ 04 декабря 2009

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

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

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

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

Отчет 1 (LoadFromFile) -> TADOQuery \

                                  ClientDataSet -> TADOQuery -> SaveToFile

Отчет 2 (LoadFromFile) -> TADOQuery /

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

1 Ответ

0 голосов
/ 07 декабря 2009

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

...