Запрос TClientDataSet с использованием TADOQuery - PullRequest
2 голосов
/ 07 декабря 2009

Мой вопрос очень прост. У меня есть TClientDataSet, который связан с TADOQuery через TDataSetProvider. Я могу поместить данные в TClientDataSet из TADOQuery, но как мне получить данные из TClientDataSet обратно в TADOQuery?

Данные автоматически переносятся из TADOQuery в TClientDataSet, когда я запускаю запрос, а затем для свойства Active в TClientDataSet устанавливается значение True, но если я деактивирую TADOQuery и затем снова активирую его, как я могу получить данные обратно из TClientDataSet

Я выполняю один и тот же запрос в нескольких базах данных и использую TClientDataSet для объединения результатов. Это работает нормально. Теперь моя проблема заключается в том, что мне нужно получить объединенный результирующий набор обратно из TClientDataSet в TADOQuery, чтобы я мог использовать процедуру SaveToFile в TADOQuery (по соображениям совместимости). Как я могу это сделать?

Ответы [ 3 ]

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

Вы всегда можете записать набор данных обратно во временную таблицу и затем запросить ее. Ой !!

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

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

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

Я не делаю TADOQuery, поскольку использую dbExpress, но я думаю, что нужно использовать ту же технику. После того, как вы опубликовали свои изменения в TClientDataSet, вызовите ApplyUpdates (0), чтобы передать данные из набора данных клиента его поставщику.

...