Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Изучаем компонент TBatchMove

Этот компонент обеспечивает копирование данных из одной таблицы в другую. Таблица-источник указывается в свойстве Source. Таблица, в которую копируются данные, указывается в свойстве Destination. Свойство Mode определяет тип перемещения данных:

- Значение batAppend указывает, что новые строки просто добавляются в результирующую таблицу.

- Значение batUpdate заставляет метод заменить строки таблицы-преемника соответствующими строками таблицы-источника. Соответствие строк определяется по индексному полю.

- Использование значения batAppendUpdate приводит к тому, что метод заменяет строки преемника соответствующими строками таблицы-источника. Соответствие строк определяется по индексному полю. Если соответствующие строки не обнаружены, то происходит их добавление в таблицу,

- Значение batCopy указывает, что создается таблица с той же структурой, что и исходная. Если таблица существует, то метод удаляет ее и создает новую.

- Значение batDelete заставляет метод удалять строки преемника, соответствующие строкам исходной таблицы. Соответствие строк определяется по индексному полю.

 

Свойство Mappings определяет соответствие нолей исходной таблицы полям принимающей таблицы. Для таблиц формата Paradox можно использовать свойство KeyViolTableName.

В этом свойстве хранится название таблицы, в которую помещаются записи, которые не удалось скопировать из-за ограничений ссылочной целостности или нарушений ключа, а в свойстве ProblemTableName хранится таблица Paradox, в которую помещаются записи, не скопированные по причине несоответствия типов полей или по иной причине.

Для начала копирования данных следует вызвать метод Execute. Свойства AbortQnKeyViol и AbortOnProblem в случае установки их значении в True прервут операцию копирования при возникновении ошибки.

В листинге 3.4 приведен пример использования компонента.

 

Листинг 3.4.
Пример использования компонента TBatchMove

procedure TForml.ButtonlClick(Sender: TObject);
begin
if Queryl.Active = False then
Exit;
if SaveDialogl.Execute then
begin
Tablel.TableName : - SaveDialogl.Fi1eName;
with BatchMovel do
begin
Source := Query1;
Destination := Tablel;
Mode := batCopy;
Execute;
ShowMessage(IntToStr(MovedCount) + 'records copied');
end;
end;
end;

 

Пример связи с Excel через BDE

В данном разделе будет рассмотрен интересный пример — связь с таблицей Excel, получение из нее данных и изменение их.

Для начала необходимо подготовить файл Excel и настроить доступ к нему через драйвер ODBC. В табл. 3,4. приведено содержимое электронной таблицы в формате Excel, которая будет использоваться в рассматриваемом примере.

Таблица 3.4.
Таблица «Метеоусловия»

 

Затем нужно выделить диапазон ячеек (рис. 3.15) и задать ему имя, например TestTable.

 

Рис. 3.15. Именованный диапазон ячеек

Созданный файл надо сохранить с именем Test.xls. Далее необходимо разрешить многопользовательский доступ к файлу.
Для этого достаточно выполнить команду меню Сервис -> Доступ к книге. В открывшемся диалоговом окне нужно взвести флажок «Разрешить совместный доступ», а затем снова сохранить файл.

На этой стадии уже можно создать ODBC-соединение с рабочей книгой. Для этого следует запустить утилиту ODBC Administrator.
В системе Windows XP она называется Data Sources и находится в разделе Administrative Tools.

В основном окне утилиты нужно нажать кнопку Add и в появившемся диалоговом окне выбрать значение Driver do Microsoft Excel. После этого - нажать кнопку Finish. В появившемся окне потребуется дать имя TestExcelDS источнику данных в поле Data Source Name.
Нажмите кнопку SeLect WorkBook и в диалоговом окне выбора укажите ранее созданный файл. А затем нужно при помощи кнопки Options открыть диалоговое окно настроек пенять флажок Read Only. Созданное соединение появится в списке источников данных ODBC и автоматически появится в списке доступных псевдонимов баз данных BDE.

Теперь можно перейти к разработке соответствующего приложения. На форме следует разместить компоненты TTable, TDataSpurce, TDBGrid и две кнопки. В свойстве DatabaseName компонента TTable надо выбрать из списка псевдоним TestExcelDS. В свойстве TableName указать значение TestTable, которое определяет заданный ранее диапазон ячеек.

Необходимо связать компоненты ТTable и TDataSource, а потом TDataSource и TDBGrid. В кнопках, расположенных на форме, потребуется описать вызовы методов Post и ApplyUpdates из предыдущего примера.

После этого можно скомпилировать приложение, закрыть Delphi и запустить скомпилированный модуль автономно.

На рис. 3.16 показано окно программы. Она позволяет изменять данные и вводить новые. При вводе новых данных границы именованной области ячеек будут увеличиваться.

 

Рис. 3.16. Пример работы с Excel через BDE

 

Пример связи с Access через BDE

Точно так же можно при помощи BDE осуществлять доступ к таблицам в формате Access. Работа с Access через BDE может производиться только за счет использования драйверов ODBC. Поэтому снова нужно связать драйвер ODBC с источником данных.

Как и прежде, нужно запустить утилиту ODBC Administrator. В список нужно добавить драйвер Driver do Microsoft Access. Созданную связь с источником данных надо назвать TestAccessDS. Затем нужно нажать кнопку Select и в диалоговом окне выбора базы данных указать имя файла dbdemos.mdb. Эта тестовая база данных поставляется с BDE и обычно расположена в каталоге X:\Prog-ram Files\Common Files\Borland Shared\Data.
После нажатия кнопки OK в BDE автоматически появится псевдоним TestAccessDS, настроенный на соединение с базой данных.

Теперь нужно создать новое приложение и добавить в него модуль данных. Модуль данных надо сохранить с именем AccessDM, На форме потребуется разместить компоненты TDataSource, TDatabase и ТTable. Компонент TDatabase нужно связать с базой данных при помощи псевдонима TestAccessDS. Свойство LoginPrompt должен получить значение False, а свойство Connected — значение True.

 

Теперь свойству Database нужно присвоить значение AccessDB. Для компонента TTable — задать имя EmplоуееТbl. В качестве источника данных для нее можно использовать таблицу employee. Свойство CachedUpdates должно получить значение True.

На этой стадии можно активировать набор данных. Компонент TDataSource должен получить имя EmployeeDS. а затем потребуется связать его с таблицей EmplоуееТbl. Модуль данных нужно подключить к главной форме командой uses AccessDH. На форме нужно также разместить компонент TDBGrid и три кнопки. Компонент TDBGrid потребуется связать с TDataSource. А в обработчиках нажатия кнопок нужно указать код, приведенный в листинге 3.5.

 

Листинг 3.5.
Код методов-обработчиков

procedure TForml.PostBtnClick(Sender: TObject);
begin
with AccessDataModule.EmployeeTbl do begin
if state In [dslnsert, dsEdit] then
Post;
end;
end;
procedure TForml.DeleteBtnClick(Sender: TObject);
begin
with AccessDataModule.EmployeeTbl do begin
if state = dsbrowse then
Delete;
end;
end;
procedure TForml.SaveBtnClick(Sender: TObject);
begin
AccessDataModule, EmplоуееТbl.ApplyUpdates;
end;

Форма приложения показана на рис. 3.17.
 

Рис. 3.17. Работа с Access через BDE

 

Так как таблица связана с дочерней таблицей, то в силу ограничений ссылочной целостности данные из таблицы нельзя удалить. Можно заносить и удалять свои данные. Приложение можно расширить, добавив в модуль данных остальные таблицы базы и определив для них отношения ссылочной целостности.

 

Пример связи с InterBase через BDE

Как уже говорилось ранее, Borland поставляет с BDE набор драйверов SQL Links с настроенным псевдонимом IBLocaL для доступа к базе данных EMPLOYEE.GDB.

В этом разделе будет создано простое приложение, которое будет обращаться к базе, читать из нее информацию и вносить изменения. На форме потребуется разместить компоненты TDatabase, TQuery, TUpdateSQL, TDataSource. TDBGrid, два компонента TDBEdit и три кнопки.
В свойстве AliasName компонента TDatabase надо выбрать псевдоним IBLocal. В свойстве DatabaseName — установить имя IbaseDemo. Свойство LoginPrompt должно получить значение False, а для свойства Params следует использовать значения из табл. 3.3.

Компонент нужно связать с базой данных, присвоив значение True свойству Connected. Также необходимо установить связь между компонентами TQuery и TDatabase. В свойстве SQL компонента TQuery потребуется указать текст SQL-запроса, который получает все строки таблицы:
SELECT * FROM Country

Теперь необходимо настроить компонент TUpdateSQL и связать его с компонентом TQuery. Затем связать TQuery с таблицей TDBGrid. Компоненты TDBEdit должны быть связаны с источником данных через свойство DataSource. А в свойствах DataField для каждого поля ввода надо указать соответствующие поля таблицы. Далее в обработчиках кнопок останется прописать код для методов Insert, Delete и ApplyUpdates. Вид основного окна приложения показан на рис. 3.18.

 

Рис. 3.18. Работа с Interbase через BDE
 
Для демонстрации была взята довольно маленькая таблица. Пример можно расширить, если добавить в него остальные таблицы базы и настроить между ними отношения ссылочной целостности.

В конце этого раздела следует отметить, что Borland перестала развивать технологию BDE с 2002 года. Разрабатывать проекты с этой технологией все еще можно, но уже не рекомендуется. В данном разделе примеры работы с этой технологией были приведены, чтобы продемонстрировать легкость работы с базами данных на Delphi.



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru