ADO - более новая технология чем ODBC, работает через интерфейс OLE DB

Общее описание программы

Для создания программы, иллюстрирующей работу теории массового обслуживания, была выбрана объектно-ориентированная среда разработки Delphi. Выбор в пользу Delphi был сделан, поскольку я хорошо знаком с Pascal-подобным языком, и предоставляемое количество инструментов очень большое.

Сделанная программа представляет собой инструмент для работы с клиентами по заказам. Она работает в связке с файлом .mdb, то есть с базой данных Microsoft Access.

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

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

1. Создан механизм ввода заявок для пользователей. А именно: есть поле «ФИО клиента», «Заказываемый товар», «Количество товара», «Дата заказа».

2.Создан механизм ввода прибывшего товара. А именно: есть поле «Наименование товара», «Количество товара», «Дата прибытия товара»

3. Создана следующая структура продажи товара: когда прибывает товар на склад, автоматически происходит оповещение продавца о том, что заказываемый товар (если он есть в таблице заказов) прибыл. Затем таблица заказчиков сортируется по дате и первый заказчик, которому была необходима покупка, получает товар. Если товара необходимо больше, чем прибыло (есть на складе), количество требуемого товара вычитается из поля «Количество товара». Затем записи (при полной удовлетворенности клиента и отсутствии данного товара на складе) удаляются.

 

Далее в третьей таблице оформляется проведенная заявка.

Также возможно сделать расчеты с помощью нажатия на кнопку «Рассчитать показатели…».

 

 

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

Создание базы данных

Для того, чтобы работать с базой данных в Delphi, нужна собственно база данных (хотя, рассматривается и создание БД непосредственно из Delphi). Создадим БД и назовем ее base_vikonda (работа программы непосредственно связана с моей работой в отделе бытовых товаров магазина «Виконда»).

Добавлять поля будем из конструктора таблиц и обязательно давать английские названия полям (потом будет легче работать с языком запросов SQL. Это несущественно, так как с помощью одного из компонентов мы сможем изменить названия полей непосредственно в программе, но лучше быть последовательным).

Все таблицы имеют разные названия ключевых полей (во избежание конфликта в программе): key_field, key_field1и т.д. Основные поля – FIO_client, Product_Name и Date (соответственно ФИО, Наименование товара и Дата). Все поля желательно сразу типизировать: присвоить им определенный тип. Например, FIO_client – текстовый, Date – Дата, а Query_value (количество заказов) – целочисленный.

Сохранять таблицы в Access лучше тоже с английскими именами. Таким образом, на выходе у нас три таблицы: product_query_name, client_query_nameиproduct_selling_name.

Об ADO в Delphi

ADO (Active Data Objects) - это высокоуровневый компонент технологии доступа к данным от Microsoft. (т.н. MDAC - Microsoft Data Access Components) Другие компоненты - это старый добрый ODBC и новый низкоуровневый интерфейс OLE DB.

Данными для ADO могут быть как привычные таблицы Access или серверные базы MS SQL или Oracle, так и несколько экзотичные Microsoft Active Directory Service, XML-файлы и т.п.

ADO - более новая технология чем ODBC, работает через интерфейс OLE DB.

Базовых объектов семь: Connection, Recordset, Command, Parameter, Field, Error и Property. Компоненты ADOв палитре компонентов Delphiпредставляют собой надстройки над базовыми объектами, экспонируя большинство их свойств, методов и событий в привычном для Delphi виде.

Базовые объекты обычно сопровождаются коллекциями связанных с ними объектов. Например, с Connection может быть связан один или несколько объектов Еrror, фиксирующих ошибки установления связи. С Recordset - набор объектов Field, каждый из которых определяет единственное поле результирующего набора данных. С Command - один или несколько объектов Parameter, конкретизирующих выполнение метода Execute этого объекта, и коллекция объектов Error и т.д. В связи с этим говорят об основных (Connection, Recordset, Command) и вспомогательных (Error, Field, Parameter, Property) объектах ADO.

Connection

Объект Connection предназначен для установления соединения с данными - это его главная задача. Кроме того, объект обеспечивает механизм транзакций. С объектом связан набор объектов Error, в котором фиксируются все ошибки, связанные с работой Connection. Кроме того, на него может ссылаться произвольное количество объектов Command и Recordset. В этом случае Connection управляет транзакциями этих объектов.

Recordset

Объект Recordset представляет собой текущий набор данных. Он может быть получен только после выполнения методаExecute какого-либо объекта Command. С объектом автоматически связывается набор объектов Field, в которых описываются все поля НД. Recordset способен хранить нужные записи, перемещаться по ним, добавлять, уничтожать и редактировать записи как в обычном режиме (при одновременном изменении физических ТБД), так и в пакетном режиме (т.е. при кэшировании данных). При создании объекта автоматически создается и связанный с ним курсор, обеспечивающий просмотр, редактирование и изменение записей.

Command

С помощью объекта Command пользователь может выполнить над данными любую SQL-команду. С ним может быть связан набор объектов Parameter, в котором описываются соответствующие параметры, необходимые для выполнения запроса. Характерной особенностью объекта является возможность асинхронного выполнения связанной с ним команды. При обнаружении ошибки с объектом связывается своя коллекция объектовError.

Объекту Commands соответствуют целых четыре компонента Delphi- TADOCommand, TADOQuery TADOTable и TADOStoredProc. Сделано это, судя по всему, в целях унификации с компонентами страницы Data Access, хотя даже в этом случае возможности TADOCommand нельзя считать уникальными по сравнению с возможностями TADOQuery и наоборот.

Parameter

Объект Parameter определяет единственный параметр, который будет использоваться при выполнении метода Executeобъекта Command- его тип, размер и использование (входной, выходной, входной и выходной или только для чтения). При необходимости с Command можно связать коллекцию объектов Parameter для указания множества параметров.

Error

Коллекция объектов Error хранит все ошибки, связанные с работой остальных объектов и, прежде всего, Connection, Commandи Recordset.

Field

Этот объект хранит всю необходимую информацию об одном поле НД. Поскольку обычно НД содержит несколько полей, с объектом Recordsetсвязана коллекция объектов Field. С любым полем Field можно связать произвольную коллекцию объектов Property, определяющих индивидуальные характеристики поля.

Property

Объект Property может быть связан с любым другим объектом ADO, кроме объектов Connection и Error. Он может хранить как статические, так и динамические свойства. Статических (т.е. заранее заданных) свойств у объекта всего четыре: Name, Type, Value, Attributes. Остальные свойства - динамически и создаются в ходе выполнения программы. В объекте Property задаются некоторые индивидуальные характеристики связанного с ним объекта ADO.