|
Последние методы, которые мы рассмотрим в данной статье, — BatchRecordToQuery и BatchAllRecordsToQuery компонента TpFIBDataSet. Они похожи на метод BatchToQuery. Метод BatchRecordToQuery позволяет передать указанному запросу текущую запись для помещения в таблицу, BatchAllRecordsToQuery выполняет метод BatchRecordToQuery для всех записей набора данных.
В предыдущем проекте BatchQuery5 напишем простой обработчик события щелчка по кнопке DSBatchAllToQuery.
Delphi
procedure TFormBatch.BDSBatchAllToQueryClick(Sender: TObject);
begin
pFIBDataSet1.BatchAllRecordsToQuery(QueryToAnotherBase);
pFIBTransaction2.CommitRetaining;
pFIBDataSet2.FullRefresh;
end;
C++
void __fastcall TFormBatch::BDSBatchAllToQueryClick(TObject *Sender)
{
pFIBDataSet1->BatchAllRecordsToQuery(QueryToAnotherBase);
pFIBTransaction2->CommitRetaining();
pFIBDataSet2->FullRefresh();
}
В заключение следует сделать два замечания.
1. Рассмотренные методы экспорта/импорта (BatchOutput, BatchInput — TpFIBQuery и TpFIBDataSet, — BatchOutputRawFile, BatchInputRawFile) не позволяют работать с полями Blob и массивами. Для таких целей больше подойдет формат XML. Ему мы посвятим одну из следующих статей.
2. Мы рассмотрели использование методов BatchToQuery, BatchRecordToQuery и BatchAllRecordsToQuery для копирования данных из одной базы данных в другую. На самом деле вариантов использования этих методов гораздо больше. Запрос в этих методах может содержать не только оператор INSERT, но и другие. Если в запрос поместить оператор SQL DELETE, то можно удалить из любой таблицы строки, значения полей в которых совпадают со значениями некоторых полей текущего набора данных (запроса). Если запрос будет содержать оператор UPDATE, то можно выполнять репликацию — проводить актуализацию данных одной базы данных на основании измененных данных другой базы.

В настоящее время FIBPlus используется мной в системе управления турнирами по спортивным бальным танцам. Дело серьёзное, официально аттестуемое. Программа работает в нескольких регионах РФ, и даже немного за рубежом. Учитывая, что такие турниры иногда собирают до 1000 танцевальных пар, и все результаты заносятся, обрабатываюся и выводятся в реальном времени на печать, в пресс-центр, судьям, на информационное табло, и т.д. очень важна устойчивость и стабильность.
Построив систему на Firebird/FIBPlus, я не прогадал. Более всего пользуюсь разделенными транзакциями, Conditions, FB Events, AutoUpdate SQL для AutoInc полей. Ну и конечно SQL Editor, куда ж без него... Много, много радости детишкам принесло... :)Удивляюсь каждый раз сообщениям об исправленных багах. Мне с ними за последние 5 лет так и не пришлось встретиться :-) Так держать.
>>