Delphi ADO Query - объединение наборов результатов - PullRequest
1 голос
/ 22 сентября 2009

Я пишу приложение, которое позволяет пользователю отправлять запрос в несколько систем. Затем я сохраняю каждый отчет из каждой системы, используя SaveToFile, который сохраняет его в виде XML-документа.

Затем пользователь может проверить каждый отчет, выбрав его в меню, и отчет отобразится, загрузив отчет обратно в компонент запроса ADO (используя LoadFromFile), а затем связав его с представлением списка.

Теперь моя проблема в том, что пользователь должен иметь возможность выбрать любой или все отчеты и объединить их вместе, чтобы создать один большой отчет. Например:

Пользователь может определить запрос как SELECT * FROM (таблица), а затем он может выполнить этот запрос в Системе A, Системе B и Системе C. Вместо просмотра трех отдельных отчетов ему необходимо иметь возможность присоединиться отчеты вместе из трех систем, так что он может просто посмотреть на один большой отчет, охватывающий все три системы.

Возможно ли это сделать с помощью компонентов запроса ADO? Если нет, так как файл сохраняется как документ XML, можно ли объединить отчеты вместе, используя вместо этого документы XML?

Я понятия не имею, с чего начать, поэтому любые указатели будут оценены.

РЕДАКТИРОВАТЬ: Важная информация, которую мне как-то удалось забыть сначала включить:

  1. Пользователь должен иметь возможность доступа к данным в автономном режиме - то есть он должен иметь возможность выполнять запросы в различных системах, а затем работать с отчетами позднее. Поэтому существует необходимость сохранять отчеты на диск, а затем повторно загружать их позднее, когда они не подключены ни к одной из систем, на которых выполнялись запросы. Пользователь может захотеть объединить отчеты в это время.

  2. Все отчеты, которые должны быть объединены, будут иметь одинаковый тип - т.е. все они будут созданы по одному и тому же запросу, поэтому будут иметь одинаковое количество / тип полей и т. Д.

Ответы [ 2 ]

2 голосов
/ 22 сентября 2009

Вместо сохранения этих файлов в виде отдельных файлов XML, вы можете создать ClientDataSet и добавить результаты из всех источников в один набор данных. Это позволит вам просматривать все результаты одновременно или только для одного источника за раз. Содержимое ClientDataSet может быть сохранено как один файл, что должно быть проще, чем работа с несколькими файлами.

Конечно, это предполагает, что вы получаете одинаковые данные (одинаковые столбцы) из всех своих источников.

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

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

...