1. Теоретические основы организации бд. Реляционная модель данных. 5




Название1. Теоретические основы организации бд. Реляционная модель данных. 5
страница26/28
Дата18.04.2013
Размер2.56 Mb.
ТипДокументы
1   ...   20   21   22   23   24   25   26   27   28

4.4.Реализация доступа к базам данных с использованием Borland Delphi

4.4.1.Механизмы доступа к БД


VCL-библиотека классов среды проектирования Delphi предоставляет ряд классов, позволяющих быстро и эффективно разрабатывать различные приложения баз данных.

Эти классы представлены следующими группами:
компоненты для доступа к данным, реализующие:

  • доступ через машину баз данных BDE (Borland Database Engine), предоставляющую доступ через ODBC-драйверы или через внутренние драйверы машины баз данных BDE (компоненты страницы BDE-палитры инструментов);

  • доступ через ADO-объекты (ActiveX Data Objects), в основе которого лежит применение технологии OLE DB (компоненты страницы ADO);

  • доступ к локальному или удаленному SQL-серверу InterBase (компоненты страницы InterBase);

  • доступ посредством легковесных драйверов dbExpress;

  • доступ к БД при многозвенной архитектуре (компоненты страницы DataSnap);
визуальные компоненты, реализующие интерфейс пользователя;

  • компоненты для связи источников данных с визуальными компонентами, предоставляющими интерфейс пользователя;

  • компоненты для визуального проектирования отчетов.


Основными механизмами доступа к данным, поддерживаемым в Delphi, являются:

  • ODBC - доступ через ODBC-драйверы БД или BDE-драйверы;

  • OLE DB - доступ с использованием провайдеров данных (OLE DB - это метод доступа к любым данным через стандартный COM-интерфейс);

  • средства dbExpress, использующие легковесные драйверы БД;

  • средства доступа к распределенным наборам данных в многозвенной архитектуре.

Самый простой механизм управления данными, использующий ODBC-драйверы, может быть реализован по следующей схеме:

  • В модуль данных (или в форму) добавляется компонент набора данных (объект класса TDataSet) и устанавливается связь с источником данных, определяемая свойством DatabaseName. Связь может быть указана одним из трех способов: по имени базы данных, каталогу или псевдониму (способ указания связи может быть ограничен типом источника данных). Список всех псевдонимов доступен на этапе проектирования.

  • В модуль данных (или в форму) добавляется компонент источника данных (TDataSourse), являющийся центральным связующим звеном между набором данных и элементами управления, отображающими эти данные. Свойство DataSet компонента типа TDataSourse указывает набор данных, формируемый компонентами таких классов как TTable или TQuery. Если компоненты набора данных и источника данных расположены в модуле данных, то их следует добавить в проект (команда меню File | Use unit).

  • В форму добавляются элементы управления для работы с данными, такие как TDBGrid, TDBEdit, TDBCheckbox. Они связываются с компонентом источником данных, который указывается свойством DataSource. Имя поля набора данных определяется свойством DataField.

Графически схему работы с базами данных для двухзвенных архитектур в среде Delphi можно представить следующим образом:



Рис. 76. Cхема работы с базами данных для двухзвенных архитектур в среде Delphi

4.4.2.Наборы данных


Предком всех классов наборов данных является класс TDataSet. Он определяет основу структуры всех наборов данных - массив компонентов типа TField (каждый элемент массива соответствует столбцу таблицы).

Набор данных - это упорядоченная последовательность строк, извлеченных из источника данных. Каждая строка набора данных состоит из полей, указываемых в свойствах класса.

В зависимости от механизма доступа, используемого приложением, базовыми классами набора данных могут быть:

  • TTable, TQuery, TStoredProc - для однозвенных или двухзвенных приложений, использующих машину баз данных BDE. Класс TQuery дополнительно позволяет выполнять параметрические запросы;

  • TClientDataSet - для реализации клиентского набора данных и для многозвенной архитектуры, использующей распределенный доступ;

  • TADODataSet - для приложений, использующих ADO-объекты;

  • TSQLDataSet - для доступа к базе данных посредством dbExpress. Этот класс реализует направленный набор данных, функционирующий по принципу курсора. Для такого набора данных не создается кэш памяти на клиенте, и среди методов доступа возможны только методы Next и First. Редактирование записей в направленном наборе данных возможно только явным выполнением SQL-оператора UPDATE или при установке соединения с клиентским набором данных через провайдера;

  • TSQLTable и TSQLQuery - для доступа к базе данных посредством dbExpress.

На следующей схеме приведена иерархия классов наборов данных библиотеки VCL:



Рис. 77. Иерархия классов наборов данных библиотеки VCL

Для определения набора данных необходимо задать следующие свойства:

  • для класса TTable - значения свойств DatabaseName и TableName;

  • для класса TQuery - значение свойства SQL и, возможно, свойства DatabaseName.

Для того чтобы читать данные из таблиц или записывать их в таблицы, набор данных предварительно должен быть открыт.

Открыть набор данных можно одним из следующих способов:

  • установить значение свойства Active набора данных равным True во время выполнения приложения (например, Table1.Active:= True;) или в режиме проектирования в инспекторе объектов;

  • вызвать метод Open (например, Table1.Open;).

Аналогично, закрыть набор данных можно вызовом метода Close или установив значение свойства Active равным False. Для компонента типа TQuery метод Open может быть выполнен только для закрытого набора данных: попытка открыть уже открытый набор данных инициирует ошибку.

Открытие набора данных влечет за собой:

  • инициацию событий BeforeOpen и AfterOpen;

  • установку состояния набора данных в dsBrowse;

  • открытие курсора для набора данных.

Если в момент открытия набора данных произошла ошибка, то состояние набора данных устанавливается в dsInactive, а курсор закрывается.

При работе с компонентами наборов данных можно обойтись без явного использования компонентов, реализующих соединение с базой данных. Однако некоторые возможности, такие как управление транзакциями или кэшированные обновления, невозможны без компонентов типа TDatabase или TADOConnection. Компонент "база данных" TDatabase применяется для соединения с источником данных через драйверы BDE или внешние ODBC-драйверы. Компонент TADOConnection используется для создания объекта "соединение" при доступе через OLE DB, который инкапсулируется посредством ADO-объектов VCL-библиотеки.

По умолчанию при переходе от одной записи набора данных к другой происходит запись всех сделанных изменений в базу данных. Для того чтобы можно было отменять сделанные изменения или выполнять обновление нескольких записей, применяют кэшированные обновления. Они позволяют значительно снизить сетевой трафик за счет того, что все сделанные изменения хранятся во внутреннем кэше и при переходе от одной записи к другой информация в базу данных не передается. Чтобы включить режим кэшированного обновления, следует установить значение свойства CachedUpdates равным True для компонента набора данных. Для присвоения кэшированного обновления вызывается метод ApplyUpdates, а для отмены - CancelUpdates.

4.4.3.Классы библиотеки VCL

Класс TDATASET

Класс TDataSet является базовым для всех классов наборов данных, наследующих общие свойства и методы этого класса, включая следующие:

  • Active - свойство, определяющее, открыт ли набор данных;

  • CurrentRecord - свойство, определяющее номер текущей записи набора данных;

  • DataSource - свойство, указывающее родительскую таблицу (для таблиц, связанных отношением родительская - дочерняя);

  • Bof - свойство, определяющее, находится ли курсор на первой записи набора данных;

  • Eof - свойство, определяющее, достигнут ли конец набора данных;

  • Bookmark - свойство, указывающее текущую закладку в наборе данных. Закладка отмечает позицию в наборе данных. Используя методы TDataSet.GetBookmark и TDataSet.GotoBookmark, приложение может запоминать и быстро переходить на нужную позицию в наборе данных;

  • FieldCount - свойство, указывающее количество полей в наборе данных;

  • Fields - свойство, представляющее собой массив полей набора данных и используемое для доступа к этим полям.

Например:

Table1.Edit; // Включение режима редактирования

Table1.Fields.Fields[6].AsString := Edit1.Text;

Table1.Post; // Присвоение изменений


Свойство Fields позволяет:

  • получить имя поля в текущей структуре записи.

Например:

var S: String;

begin

S := Fields[0].FieldName; // Имя первого поля

S := Fields[1].FieldName; // Имя второго поля

...

end;

  • записать в переменную значение поля.

Например:

var s: String; i: Integer; d: TDateTime;

s := Fields[0].AsString;

i := Fields[0].AsInteger;

d := Fields[0].AsDate;

Вместо Fields[n] можно использовать функцию FieldsByName('имя_поля').

Например:

s := Fields[0].AsString;

s := FieldsByName('F1').AsString;

  • FieldByName - метод, определяющий поле набора данных по его имени;

Например:

Table1.FieldByName('F1').AsInteger:=StrToInt(Edit1.Text);

  • Filter - свойство, в которое заносится строка, определяющая фильтр для набора данных. Фильтр определяет условие, которому должны удовлетворять доступные записи.

Определение фильтра должно удовлетворять следующим правилам:

    • фильтр состоит из условий для полей набора данных, объединенных логическими операциями AND и OR. Например: F2 > 10 AND F2 <50;

    • если имя поля содержит пробелы, то оно должно быть заключено в квадратные скобки или двойные кавычки. Например: [Field Name1] > 50;

  • Filtered - свойство, указывающее, используется ли фильтр, заданный свойством Filter;

  • Found - свойство, определяющее, успешно ли выполнен поиск методами FindFirst, FindLast, FindNext или FindPrior;

  • Modified - свойство, определяющее, была ли изменена активная запись;

  • RecordCount - свойство, содержащее общее число записей в наборе данных;

  • State - свойство, указывающее текущее состояние набора данных. Это свойство может принимать следующие значения:

    • dsInactive - набор данных закрыт;

    • dsBrowse - данные доступны только для просмотра;

    • dsEdi - можно изменять активную запись;

    • dsInsert - активной записью является новая запись, пока не сохраненная;

    • dsSetKey - просмотр ограниченного множества записей (SetRange) или поиск записи;

    • dsCalcFields - выполняется обработчик события OnCalcFields;

    • dsFilter - выполняется обработчик события OnFilterRecord;

    • dsOpening - набор данных находится в процессе открытия.

  • Append - метод, добавляющий в конец набора данных новую запись;

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

  • Edit - метод, переводящий текущую запись в режим редактирования;

  • Cancel - метод, отменяющий изменения, сделанные в текущей записи;

  • Post - метод, выполняющий внесение изменений в базу данных;

  • Refresh - метод, выполняющий обновление результирующего набора путем повторного извлечения данных из БД;

  • Insert - метод, вставляющий в набор данных новую запись;

  • InsertRecord - метод, вставляющий в набор данных новую запись со значениями, которые указаны параметрами метода;

  • Close - метод, закрывающий набор данных;

  • Open - метод, открывающий набор данных;

  • First - метод, устанавливающий курсор на первую запись набора данных и делающий эту запись активной;

  • Last - метод, устанавливающий курсор на последнюю запись набора данных и делающий эту запись активной;

  • Next - метод, перемещающий курсор на следующую запись набора данных и делающий эту запись активной;

  • Prior - метод, перемещающий курсор на предыдущую запись набора данных и делающий эту запись активной.
Класс TDATASOURCE

Класс TDataSource реализует связь между компонентами - наборами данных и элементами управления, используемыми для отображения данных.

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

Класс TDataSource содержит набор свойств и методов, используемых для доступа к набору данных, включая следующие:

  • AutoEdit - свойство, определяющее, будет ли автоматически вызываться метод Edit набора данных при получении фокуса элементом управления, ассоциированным с источником данных;

DataSet - свойство, указывающее используемый набор данных.

Изменяя значение свойства DataSet во время выполнения, можно эффективно переключаться на работу с различными наборами данных, отображая разные наборы данных в одних и тех же элементах управления.

Например:

DataSource.DataSet := Table1;.

  • Enabled - свойство, определяющее, будет ли элемент управления отображать ассоциированные с ним данные, или будет отображаться пустым;

  • State - свойство, позволяющее определить состояние используемого набора данных.

Например:

if DataSource1.Dataset <> nil then

//Кнопка доступна только в том случае, если набор

//данных находится в состоянии редактирования

//или вставки новой записи

BtnPost1.Enabled := DataSource1.State in [dsEdit, dsInsert];
Класс TTABLE

Компонент типа TTable используется для доступа к базам данных посредством определения источника данных DSN и имени таблицы базы данных. При этом допускается выбор всех полей таблицы или только части полей, а также задание фильтра, определяющего, какие строки таблицы будут доступны.

Компоненты типа TTable могут использовать все свойства и методы, наследуемые от класса TDataSet, а также свойства и методы класса TTable для набора данных, включая следующие:

  • DatabaseName - свойство, определяющее имя источника данных DSN;

  • CanModify - свойство, определяющее, может ли приложение выполнять вставку, редактирование и удаление записей в таблице;

  • DefaultIndex - свойство, определяющее, должны ли данные в таблице быть упорядочены при ее открытии. Если значение свойства равно True (по умолчанию), то выполняется упорядочивание по первичному ключу или уникальному индексу;

  • IndexName - свойство, позволяющее определить вторичный индекс, используемый для сортировки открываемого набора данных;

  • Exclusive - свойство, позволяющее установить исключительный режим доступа к таблице (значение свойства должно быть определено до открытия таблицы);

  • MasterSource - свойство, определяющее имя компонента "источник данных" родительской таблицы для установления отношения между таблицами "родительская-дочерняя";

  • MasterFields - свойство, определяющее одно или несколько полей из родительской таблицы, служащих для связи с соответствующими полями данной дочерней таблицы (Это задает отношение между родительской и дочерней таблицами. Поля в списке разделяются точкой с запятой);

  • ReadOnly - свойство, позволяющее установить для таблицы режим доступа "только для чтения";

  • TableName - свойство, указывающее используемую таблицу базы данных;

  • RecNo - свойство, указывающее номер текущей записи набора данных;

  • FindKey - метод, выполняющий поиск значения или значений, перечисленных в списке, для ключевого поля;

  • FindNearest - метод, перемещающий курсор на запись, содержащую значение, наиболее близкое к указанному значению ключевого поля (поиск может выполняться как по одному значению, так и по нескольким, если используется составной индекс).

Например:

{Изменение значения в компоненте Edit1 автоматически перемещает позицию курсора

в наборе данных Table1}

procedure TForm1.FormActivate(Sender: TObject);

begin

Table1.DatabaseName := 'DBDemos';

Table1.TableName := 'Customer.db';

Table1.Active := True;

Table1.IndexName := 'ByCompany'; {Ключевое поле}

end;

{Обработчик события OnChange (изменение значения) для компонента Edit1}

procedure TForm1.Edit1Change(Sender: TObject);

begin

Table1.FindNearest([Edit1.Text]); {Выполнение поиска}

end;

  • Locate - метод, используемый для поиска первого вхождения значения указанного поля или набора полей (если запись найдена, то она становится текущей).

Например:

with Table1 do

Locate('F1;F2',

VarArrayOf(['ABC', 123]),

[loPartialKey]);
Класс TQUERY

Компонент типа TQuery позволяет выполнять любой SQL-оператор, допустимый по синтаксису ODBC-драйвером. Если в качестве выполнимого оператора используется SQL-оператор SELECT, то компонент возвращает набор данных (результирующий набор).

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

Для определения набора данных TQuery следует установить значение свойства SQL и, возможно, свойства DatabaseName (свойство DatabaseName определяет имя источника данных, но для некоторых баз данных можно задать полное имя таблицы, включающее месторасположение файла, в тексте SQL-оператора, - в этом случае свойство DatabaseName не используется). Наиболее правильным подходом все же следует считать тот, при котором имя DSN источника данных указывается свойством DatabaseName, а в SQL-операторе определяется только имя таблицы без определения ее местоположения.

По умолчанию, набор данных, формируемый компонентом типа TQuery, не является редактируемым.

Для того чтобы значения в созданном наборе данных можно было редактировать, необходимо выполнить одно из следующих действий:

  • связать компонент TQuery с компонентом типа TUpdateSQL (например: Query1. Query1.UpdateObject:= UpdateSQL1;) и определить для последнего значение свойства ModifySQL (например: update TBL1 set F1 = :F1, F2 = :F2 where F3 = :OLD_F3);

  • установить значение свойства RequestLive равным True (поддержка этой возможности зависит от используемой базы данных).

Класс TQuery содержит свойства и методы, используемые для работы с набором данных, включая следующие:

  • DataSource - свойство, позволяющее указать родительский набор данных (для отношения "родительский-дочерний").

  • Например, если свойство SQL содержит значение 'SELECT * FROM Tbl1 t WHERE (t.FNo = :FNo)', то значение переменной связи :FNo будет определяться из источника данных, указанного свойством DataSource.

  • Params - свойство, содержащее список параметров для SQL-оператора.

Например:

Query3.SQL.Clear; // Очищаем значение свойств

// Динамически формируем код SQL-оператора INSERT

Query3.SQL.Add('INSERT INTO ADDRESS (F1, F2)');

// Имена параметров указываются после символа :

Query3.SQL.Add('VALUES (:F1, :F2)');

// Устанавливаем значение параметров

Query3.Params[0].AsString := 'Abc';

Query3.Params[1].AsInteger := 123;

Query3.ExecSQL; // Выполнение SQL-оператора

  • RequestLive - свойство, определяющее, будет ли создаваемый набор данных редактируемым (возможность получения модифицируемого результирующего набора зависит от используемого SQL-сервера);

  • SQL - свойство, содержащее текст SQL-оператора (для автоматического формирования SQL-оператора можно вызвать из контекстного меню компонента TQuery диалог SQL Builder);

  • DatabaseName - свойство, определяющее имя подключаемого источника данных (имя DSN источника данных или имя, введенное классом типа TDatabase);

  • ExecSQL - метод, выполняющий SQL-оператор, указанный свойством SQL (для SQL-оператора, создающего набор данных, вместо ExecSQL используется метод Open).

ExecSQL можно вызывать для таких SQL-операторов как INSERT, UPDATE, DELETE, CREATE TABLE и т. п. Если перед вызовом ExecSQL не был вызван метод Prepare, то SQL-оператор будет одновременно и откомпилирован, и выполнен.

  • Prepare - метод, выполняющий компиляцию SQL-оператора.

Вызов этого метода перед ExecSQL увеличивает скорость выполнения запроса при многократном повторении вызовов ExecSQL для одного и того же оператора (например, параметризированного запроса). Это позволяет откомпилировать SQL-оператор только один раз, а затем многократно его выполнять.
Класс TSQLTABLE

Класс TSQLTable представляет таблицу базы данных, доступную для клиента как направленный набор данных. Такой набор содержит все записи для полей, определенных в классе TSQLTable. Объект типа TSQLTable должен быть связан с объектом типа TSQLConnection, определяющим соединение с источником данных. Для отображения такого набора данных нельзя использовать таблицу, так как у клиента отсутствует кэш памяти для набора данных. Значение полей таблицы можно отображать компонентами типа TDBText или TDBEdit. Для перемещений по набору записей доступны только методы First и Next.

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

          1. Установить значение свойства SQLConnection компонента TSQLTable, выбрав добавленный ранее компонент типа TSQLConnection из предлагаемого списка.

          2. Определить имя таблицы базы данных, используемой для построения набора данных, определив свойство TableName компонента TSQLTable.
Класс TUPDATESQL

Объект типа TUpdateSQL позволяет для наборов данных, созданных с доступом "только для чтения", поддерживать возможность их обновления посредством выполнения SQL-оператора.

Класс TUpdateSQL реализует следующие свойства и методы:

  • DeleteSQL - свойство, определяющее SQL-оператор DELETE.

  • InsertSQL - свойство, определяющее SQL-оператор INSERT.

  • ModifySQL - свойство, определяющее SQL-оператор UPDATE.

  • ExecSQL - метод, выполняющий один из заданных SQL-операторов (в зависимости от значения параметра, указываемого следующими константами: ukDelete, ukInsert,ukModify).
Класс TDATABASE

Класс TDatabase реализует работу с объектом "база данных" и предоставляет средства контроля над соединением с базой данных.

Компонент типа TDatabase позволяет управлять транзакциями, использовать настраиваемое подключение к серверу, определять в приложении свои псевдонимы для базы данных.

Для работы с компонентом TDatabase необходимо установить значение свойств AliasName и DatabaseName.

Если значением свойства AliasName указан DSN существующего источника данных, то разработчик может сам определить любой внутренний (для приложения) псевдоним базы данных и задать его в свойстве DatabaseName. В этом случае для любого набора данных в списке значений свойства DatabaseName будет отображаться наряду со всеми доступными DSN источниками данных и внутренний псевдоним, заданный свойством DatabaseName компонента TDatabase.

В том случае, если DSN не определен, то свойство DatabaseName должно содержать полное имя файла базы данных, а свойство DriverName - указывать используемый ODBC-драйвер.

Компонент типа TDatabase позволяет управлять режимами работы с наборами данных и транзакциями, используя следующие свойства и методы.

  • Exclusive - свойство, позволяющее приложению получить исключительный доступ к базе данных (если это поддерживается SQL-сервером);

  • InTransaction - свойство, указывающее, был ли выполнен для базы данных вызов метода StartTransaction.

  • ReadOnly - метод, указывающий, установлен ли для соединения с базой данных доступ "только чтение".

  • TransIsolation - метод, задающий уровень изоляции при управлении транзакциями. Уровень изоляции определяет, как данная транзакция будет взаимодействовать с другими транзакциями, работающими с одними и теми же таблицами. Свойство TransIsolation может быть указано одним из следующих значений:

  • tiDirtyRead - транзакция может читать данные, которые были изменены другой транзакцией, но для которых не был выполнен вызов Commit (фиксация изменений);

  • tiReadCommitted - позволяет в одной транзакции читать фиксированные изменения, сделанные в базе данных другой транзакцией;

  • tiRepeatableRead - истинность данных гарантируется на все время чтения, и транзакция не видит никаких изменений, сделанных другой транзакцией. Прочитанная запись остается постоянной, пока в ней не будут сделаны изменения внутри самой транзакции;

  • StartTransaction - метод, открывающий новую транзакцию;

  • StartTransaction - метод, открывающий новую транзакцию;

  • Commit - метод, выполняющий фиксацию текущей транзакции;

  • Rollback - метод, выполняющий откат текущей транзакции;

  • Execute - метод, который выполняет указанный параметром SQL-оператор, не возвращающий результирующего набора.
Класс TADOCONNECTION

Класс TADOConnection обеспечивает соединение с данными, доступ к которым реализуется через ADO-объекты.

ADO-объекты позволяют работать с различными хранилищами данных, которые могут и не быть SQL-операторами. Объекты типа TADOConnection используют для доступа к данным OLE DB провайдеры.

Компоненты TADOCommand и TADODataSet связываются с источником данных посредством объекта TADOConnection, указывая ссылку на него как значение свойства Connection.

Для идентификации соединения необходимо определить значение свойства ConnectionString (строка соединения) компонента TADOConnection, которое может основываться на указании:

  • datalink-файла;

  • строки соединения.

Если в качестве значения свойства ConnectionString указано имя UDL-файла, то настройку соединения можно выполнять автономно от приложения (например, указывая имя базы данных Microsoft SQL Server на текущем ПК).
Классы компонентов управления данными

Компоненты управления данными расположены на странице Data Controls палитры компонентов. Многие из этих компонентов аналогичны элементам управления страницы Standard, с тем лишь отличием, что связаны через источник данных (компонент типа TDataSource) с определенным полем (или полями) из набора данных (компонентов типа TTable или TQuery).

Библиотека VCL предоставляет следующие классы компонентов управления данными:

  • TDBGrid - класс, позволяющий отображать записи набора данных в виде таблицы и управлять этими записями.

  • TDBNavigator - класс, предоставляющий средства навигации по набору данных, а также возможности добавления новых записей, включения режима редактирования, присвоения и отмены сделанных изменений. Для того чтобы программно инициировать действие, выполняемое по щелчку на кнопке навигатора, следует вызвать метод BtnClick. Например:

DBNavigator1.BtnClick(nbPost); // Присвоение сделанных изменений.

Компонент TDBNavigator может отображать кнопки, указываемые следующими константами:

nbFirst - переход к первой записи;

nbPrior - переход к предыдущей записи;

nbNext - переход к следующей записи;

nbLast - переход к последней записи;

nbInsert - вставка перед текущей записью новой записи и переход на нее;

nbDelete - удаление текущей записи;

nbEdit - переход в режим редактирования текущей записи;

nbPost - внесение изменений текущей записи в базу данных;

nbCancel - отмена изменений, сделанных в текущей записи;

nbRefresh - повторное считывание значений полей из источника данных.

  • TDBText - класс, позволяющий в качестве надписи отображать значение поля текущей записи набора данных.

  • TDBEdit - класс, реализующий работу с однострочным полем редактирования.

  • TDBMemo - класс, реализующий многострочное поле редактирования, в котором можно отображать и изменять значение поля набора данных.

  • TDBImage - класс, реализующий объект "рисунок", в котором можно отображать и изменять значение поля набора данных формата BLOB.

  • TDBRadioGroup - класс, реализующий группу радиокнопок, которые связаны с полем базы данных. Применение такого объекта предоставляет пользователю удобную возможность устанавливать значение поля базы данных, выбирая его из предлагаемых опций.

  • TDBCheckBox - класс, реализующий компонент "флажок", который связан с полем базы данных.

  • TDBListBox - класс, реализующий компонент "список", который используется для отображения значений поля набора данных. Значения, отображаемые в списке, содержатся в свойстве Items.

  • TDBComboBox - класс, реализующий компонент "раскрывающийся список", который используется для отображения значений поля набора данных. Значения, отображаемые в списке, содержатся в свойстве Items.

  • TDBLookupListBox - класс, позволяющий выполнять просмотр списка, заполненного значениями полей из другого набора данных. Просматриваемый набор данных указывается свойством ListSource, просматриваемое поле (или поля) - свойством ListField. Свойство KeyField указывает поле просматриваемого набора данных, соответствующее полю текущего набора данных, указываемого свойствами DataField и DataSource. Данный класс позволяет выбирать значение поля текущего набора данных из другого просматриваемого набора данных;

  • TDBCtrlGrid - класс, реализующий особый вид таблицы, в которой каждая запись отображается на отдельной панели (количество панелей в компоненте указывается значением свойства RowCount).
События, инициируемые для наборов данных

При работе с наборами данных могут инициироваться следующие события:

  • AfterCancel и BeforeCancel - происходит после/до отмены в приложении всех изменений, сделанных для текущей записи.

  • AfterClose и BeforeClose - происходит после/до закрытия набора данных и перевода базы данных в состояние dsInactive.

  • AfterDelete и BeforeDelete - инициируется после/до удаления приложением текущей записи, перевода набора данных в состояние dsBrowse и перемещения позиции курсора на предыдущую запись.

  • AfterEdit и BeforeEdi - происходит после/до начала редактирования приложением текущей записи.

  • AfterInsert и BeforeInsert - происходит после/до того как приложение вставит новую запись.

  • AfterOpen и BeforeOpen - происходит после/до того как приложение откроет набор данных, но до того, как какие-либо доступные данные будут отображены.

  • AfterPost и BeforePost - происходит до завершения переноса значений активной записи в базу данных или внутренний кэш.

  • AfterRefresh и BeforeRefresh - происходит после/до обновления набора данных.

  • AfterScroll и BeforeScroll - происходит после/до перемещения позиции курсора на другую запись.

  • OnCalcFields - происходит при открытии набора данных, перевода его в состояние dsEdit, перемещении фокуса ввода от одного компонента к другому или от одного столбца к другому, при изменениях записи или при извлечении записи из базы данных, но только в том случае, если значение свойства AutoCalcFields равно True;

  • OnDeleteError - инициируется, если при попытке удаления строки произошла ошибка - было брошено исключение.

  • OnEditError - инициируется, если при попытке изменения или вставки записи произошла ошибка - было брошено исключение.

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

  • OnFilterRecord - происходит при изменении активной записи и только в том случае, если свойство State набора данных установлено равным dsFilter, а свойство Filtered равно True. Чтобы запись была включена в набор данных, для нее следует установить параметр Accept равным True.

  • OnNewRecord - происходит при вставке или добавлении новой записи.

4.4.4.Применение многозвенных архитектур


Применение многозвенной архитектуры позволяет вынести бизнес-логику работы с данными в приложение-сервер.

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

Применение трехзвенной архитектуры приведено на следующей схеме.

Рис. 78. Схема работы с базами данных для трехзвенных архитектур в среде Delphi

Такая архитектура позволяет реализовывать доступ к серверу БД из приложения-сервера, не имея на клиентских машинах никаких драйверов доступа к базе данных.

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

Приложение-сервер получает набор данных стандартным способом - через один из компонентов набора данных, таких как TTable или Tquery, и пересылает его с помощью компонента TDataSetProvider компоненту TClientDataSet в приложение-клиент. Приложение-сервер реализуется как удаленный модуль данных, представляющий из себя СОМ-объект. Доступ к такому компоненту может быть выполнен посредством DCOM с любого удаленного компьютера.
1   ...   20   21   22   23   24   25   26   27   28

Похожие:

1. Теоретические основы организации бд. Реляционная модель данных. 5 iconПрограмма междисциплинарного вступительного экзамена для поступающих в магистратуру по направлению 230700. 68 «прикладная информатика»
Назначение и основные компоненты системы баз данных. Инфологическое проектирование базы данных. Модели данных. Сетевая и иерархическая...
1. Теоретические основы организации бд. Реляционная модель данных. 5 iconСаратовский государственный технический университет кафедра информационные системы (в гуманитарной области)
Назначение и основные компоненты системы баз данных. Инфологическое проектирование базы данных. Модели данных. Сетевая и иерархическая...
1. Теоретические основы организации бд. Реляционная модель данных. 5 icon4 Реляционная модель данных
Проектирование реляционной базы данных на основе декомпозиции универсального отношения. 31
1. Теоретические основы организации бд. Реляционная модель данных. 5 icon4 Реляционная модель данных
Проектирование реляционной базы данных на основе декомпозиции универсального отношения. 31
1. Теоретические основы организации бд. Реляционная модель данных. 5 iconЛекция Реляционная алгебра и реляционное исчисление. Нормализация данных в реляционной модели. Постреляционная модель данных

1. Теоретические основы организации бд. Реляционная модель данных. 5 iconПодходы к разработке пп (1, 12)
Должен соблюдаться принцип: каждый элемент данных вводится один раз от первоисточника. На основе всех структур данных источников...
1. Теоретические основы организации бд. Реляционная модель данных. 5 iconАлтайский государственный университет учебная программа курса «Основы баз данных»
«Сущность-связь». В курсе рассматриваются вопросы теории нормализации реляционных баз данных. В качестве манипуляционной части в...
1. Теоретические основы организации бд. Реляционная модель данных. 5 iconРеферат Данные, база данных, экспорт, импорт
«soap клиент. Схема алгоритма», «Модель импорта данных. Схема взаимодействия модулей», «Модель экспорта данных. Схема взаимодействия...
1. Теоретические основы организации бд. Реляционная модель данных. 5 iconКурсовая работа по дисциплине «Бухгалтерский финансовый учет» на тему «Основы постановки и ведения бухгалтерского финансового учета в организации»
Теоретические основы бухгалтерского учета в организации
1. Теоретические основы организации бд. Реляционная модель данных. 5 iconПрограмма вступительного испытания
Типы моделей баз данных (иерархическая, сетевая, реляционная). Обеспечение целостности данных. Понятие нормализации. Описательные...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница