Начинаем работать в Borland C++ Builder

           

Форма приложения для переноса данных на сервер



23. Форма приложения для переноса данных на сервер

Для переноса данных с одной платформы на другую обычно используется компонент TBatchMove. Этот компонент обеспечивает копирование данных из одной таблицы в другую. Основные свойства этого компонента следующие: Source – таблица (или запрос), откуда копируются данные, Destination – таблица, куда копируются данные, Mapping – определяет соответствие между колонками исходной и результирующей таблиц (для идентичных таблиц это свойство определять не обязательно), Mode – тип перемещения (batAppend – добавляет новые строки в результирующую таблицу, batUpdate – заменяет строки в результирующей таблице на соответствующие строки оригинала, batCopy – копирует строки в результирующую таблицу, переписывая ее, batDelete – удаляет записи в результирующей таблице, соответствующие записям оригинала), KeyViolTableName и ProblemTableName – имена дополнительных таблиц для помещения записей, чье копирование запрещено правилами ссылочной целостности или по каким-либо причинам невозможно (например, из-за несоответствия типов данных), ChangedTableName – имя таблицы для помещения измененных записей. Копирование данных происходит при выполнении метода Execute(). Отметим, что этот метод может быть вызван непосредственно из среды разработки с помощью контекстного меню компонента TBatchMove.

Установим следующие значения свойств используемых компонентов:



Компонент Свойство Значение
Table1 DatabaseName Oracle7
Exclusive true
TableName CLIENTS
Active true
Table2 DatabaseName BCDEMOS
TableName ClLIENTS.DBF
Active true
DataSource1 DataSet Table1
DataSource2 DataSet Table2
DBGrid1 DataSource DataSource1
DBGrid2 DataSource DataSource2
DBNavigator1 DataSource DataSource1
DBNavigator2 DataSource DataSource2
BatchMove1 Source Table2
Destination Table1
Mode batAppend
Button1 Caption CLIENTS
Button2 Caption HOLDINGS
Button3 Caption Добавить
Button4 Caption Очистить
Button5 Caption Выход
Создадим также обработчики событий для кнопок: //--------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "upsize1.h"
//--------------------------------------------------------
#pragma link "Grids"
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
}
//--------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Table1->Close();
Table2->Close();
Table1->TableName="CLIENTS";
Table2->TableName="CLIENTS.DBF";
Table1->Open();
Table2->Open();
}
//--------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Table1->Close();
Table2->Close();
Table1->TableName="HOLDINGS";
Table2->TableName="HOLDINGS.DBF";
Table1->Open();
Table2->Open();
}
//--------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Table1->EmptyTable();
}
//--------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
BatchMove1->Execute();
}
//--------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Close();
}
//-------------------------------------------------------- Скомпилируем и запустим приложение. Кнопки CLIENTS и HOLDINGS осуществляют выбор между той или иной парой таблиц. При нажатии кнопки Добавить происходит перенос данных из активной в данный момент таблицы dBase (CLIENTS или HOLDINGS) в соответствующую таблицу Oracle. Отметим, что наличие поддержки ссылочной целостности можно проверить, попытавшись перенести данные из таблицы HOLDINGS до того, как перенесены данные из таблицы CLIENTS. При этом перенос осуществлен не будет, и в процессе выполнения приложения появится диагностическое сообщение примерно следующего вида (рис.24):

Содержание раздела