Объединение результатов Delphi ADOQuery с использованием ClientDataSet

StackOverflow https://stackoverflow.com/questions/1848064

  •  13-09-2019
  •  | 
  •  

Вопрос

Я написал приложение, которое позволяет пользователю определить запрос, запустить его с помощью компонента 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/

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top