Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

English home work / ibase

.pdf
Скачиваний:
28
Добавлен:
12.02.2015
Размер:
653.01 Кб
Скачать

www.vr-online.ru

© Шкрыль Андрей

Выбирая в дереве, окна IBCONSOLE – справа GENERATOR можно посмотреть параметры созданного генератора. А созданный триггер можно посмотреть выбирая в окне IBCONSOLE - TABLE\TOVAR, щелкая два раза и выбирая закладки

DEPENDENCIES. Вы увидите окошко (рис.8.):

Рис.8.

Если выберите закладку METADATA, то увидите текст SQL, который описывает структуру вашей таблицы.

Нам осталось создать еще две таблицы – Организации и Продажи. Запускай

INTERACTIVE SQL, кнопка .

Для создания справочника организации, пишем запрос:

CREATE TABLE "FIRM"

(

"FIRMID" INTEGER NOT NULL,

"NAME" VARCHAR(100) CHARACTER SET WIN1251 NOT NULL,

PRIMARY KEY ("FIRMID") );

Выполняем запрос.

Если тебе что-то не понятно в запросе, то советую вернуться на начало и почитать еще разок.

Создаем генератор для таблицы – пишем в том же INTERACTIVE SQL

CREATE GENERATOR GEN_FIRM

Устанавливаем начальное значение для генератора

www.vr-online.ru

© Шкрыль Андрей

SET GENERATOR GEN_FIRM TO 1

Привязываем генератор к таблице FIRM:

SET TERM !! ;

CREATE TRIGGER "BEF_INS_FIRM" FOR "FIRM"

ACTIVE BEFORE INSERT

AS

BEGIN

NEW.FIRMID=GEN_ID(GEN_FIRM,1);

END!!

SET TERM ; !!

SET TERM ^ ;

Теперь создаем таблицу Продажи и соответственно генератор для нее:

CREATE TABLE "SALE"

(

"SALEID" INTEGER NOT NULL,

"FIRMKOD"

INTEGER NOT NULL,

"TOVARKOD"

INTEGER NOT NULL,

"REM"

VARCHAR(100) CHARACTER SET WIN1251,

PRIMARY KEY ("SALEID") );

Создаем генератор для таблицы

CREATE GENERATOR GEN_SALE

Устанавливаем начальное значение для генератора

SET GENERATOR GEN_SALE TO 1

Привязываем генератор к таблице SALE:

SET TERM !! ;

CREATE TRIGGER "BEF_INS_SALE" FOR "SALE"

ACTIVE BEFORE INSERT

AS

BEGIN

NEW.SALEID=GEN_ID(GEN_SALE,1);

END!!

SET TERM ; !!

SET TERM ^ ;

Все база создана, теперь можно смело закрывать INTERBASE.

www.vr-online.ru

© Шкрыль Андрей

Коддинг приложения Клиент Сервер

Запускаем Delphi. Создаем новое Приложение. Свойство Name формы меняем на MainForm. Жмем кнопку сохранить все! Выбираем нашу рабочую папку, у меня это

C:\WorkIB.

Модуль сохраняем под именем UMain. Приложение под именем WorkIB.

Выбираем пункт меню Project\Options, заходим на вкладку Application. В окно редактирования Title вводим Учет продаж.

Создаем новый DataModule, File\New\DataModule. Называем его DM. Жмем сохранить, и называем модуль UDM.

Кидаем на DataModule компоненты IBDatabase1 и IBTransaction1 с вкладки InterBase. (рис.9.).

IBDatabase1 – отвечает за связь с базой данных.

IBTransaction – отвечает за работу всех транзакций для связанной с ним базой данных.

Поэтому в DefaultDatabase, компонента IBTransaction устанавливаем IBDatabase1.

Напомню что транзакции предназначены для корректного изменения данных в базе. Транзакции можно начинать, потверждать и отменять (откатывать)

Рис.9.

Для компонента IBDatabase1 устанавливаем следующие свойства:

DatabaseName – устанавливаем файл нашей базы, у меня C:\WorkIB\WORKIB.GDB

В свойстве Params пишем:

USER_NAME=SYSDBA

PASSWORD=masterkey

Таким образом мы указывем, что мы хотим работать от имени админа. Свойство LoginPrompt ставим в False, что каждый раз при запуске программы не

появлялось окошко ввода имени юзера и пароля! Свойство Connect устанавливаем в True.

www.vr-online.ru

© Шкрыль Андрей

Кидаем на форму MainForm компонент MainMenu. Щелкаем по нему два раза и создаем пункты меню (рис.10.).

Справочники

Товар

Организации

Рис.10.

Создаем новую форму, называем ее FormTovar. В свойство Caption пишем - Справочник – товары. Сохраняем под именем UTovar

Кидаем компоненты DBGrid, DBNavigator, Button – 2 штуки, IBQuery, DataSource, (рис.11.).

www.vr-online.ru

© Шкрыль Андрей

Рис.11.

Свойство Enabled кнопки «Выбрать», установи в False.

Для компонента DBNavigator, свойство VisibleButtons сделай следующим (рис.12):

Рис.12.

Это мы сделали, чтобы шаловливые ручонки пользователя, не делали того чего не нужно!

ВCвойство DataSet, компонента DataSource устанавливаем IBQuery1.

ВСвойство DataSource компонентов DBGrid и DBNavigator ставим DataSource1.

www.vr-online.ru

© Шкрыль Андрей

Выбираем пункт меню File\USE Unit (рис.13.)

Рис.13.

Выбираем UDM и жмем ОК. Это нужно чтоб мы смогли подключить компонент

IBQuery1 к компоненту IBDatabase.

В свойстве Database компонента IBQuery1 ставим:

Теперь заходим в свойство SQL этого же компонента

И пишем в окне Command Text Editor следующий запрос (рис.14.):

www.vr-online.ru

© Шкрыль Андрей

Рис.14.

Если перевести на русский язык, то это будет означать:

Выбрать все данные из таблицы Товар, и отсортировать по названию товара!

Щелкаем два раза по компонету IBQuery1. Щелкаем правой кнопкой мыши по появившемуся окошку и выбираем AddAllFields (рис.15.).

(Рис.15.)

После этого действия окошко примет следующий вид (Рис.16.):

www.vr-online.ru

© Шкрыль Андрей

Рис.16.

Выбираем TOVARID и в инспекторе объектов, свойство Visible ставим в False. Теперь это поле не будет отображаться на экране в сетке DBGrid, во время работы с программой.

Для Name в свойство DisplayLabel пишем “Название товара”. Заметил изменения в

DBGRid?

В свойство DisplayWidth ставим 30 – это свойство отвечает за ширину поля в DBGRid.

Выбираем PRICE, свойство DisplayLabel пишем “Цена”!

Щелкаем два раза на кнопке Закрыть и пишем код: FormTovar.Close. – это означает закрыть форму.

Выбираем пункт меню Project\Option, вкладку Forms. И помощью стрелочек переносим FormTovar в правую половину окна, таким образом мы говорим Delphi, что во время работы программы, мы будет сами следить за созданием этой формы и ее удалением (рис.17).

www.vr-online.ru

© Шкрыль Андрей

Рис.17.

Жмем оК!

Делаем активной MainForm и для пункта меню Справочники\Товар пишем код! Но предварительно нам надо подключить модуль FormTovar, это делается с помощью пункта меню File\USE UNIT.

FormTovar:=TFormTovar.Create(self); {Создаем форму}

FormTovar.IBQuery1.Open; {Открываем набор данных}

FormTovar.ShowModal; {Отображаем форму на экране}

Идем на форму FormTovar в событии OnClose пишем: FormTovar.IBQuery1.Close; {Закрыть набор данных, если закрывают справочник}

Кидаем на форму FormTovar еще один компонет IBQuery, свойство

DATABASENAME - DM.IBDATABASE1.

В свойстве SQL IBQuery2 пишем:

insert into TOVAR (Name, PRICE) VALUES (:NAME,:PRICE);

www.vr-online.ru

© Шкрыль Андрей

Это означает - вставить в поля Name, Price таблицы TOVAR, значения, содержащиеся в параметрах :Name и :Price, параметры отличаются двоеточием, стоящим перед их именем.

Щелкаем по свойству Params, компонента IBQuery2, появляется окошко

Выделяем запись Name и в инспекторе объектов правим свойство DataType на ftString, в свойстве Value пишем «ААА». DataType – тип параметра, в данном случае текстовый, Value – значение по умолчанию, если параметру не присвоено программистом никакого значения, то ему будет присвоено «ААА».

Выделяем запись Price и в инспекторе объектов правим свойство DataType на ftInteger

– значение параметра целое число, в свойстве Value пишем значение по умолчанию 0.

Кидаем на форму еще одну кнопку, в Caption пишем “+”.В событие OnClick, пишем:

procedure TFormTovar.Button3Click(Sender: TObject); var

s:string;

c:integer; begin

s:=InputBox('Введите данные','Введите название товара',''); c:=StrToInt(InputBox('Введите данные','Введите цену товара',''));

{Передаем в параметр Name введеное название товара}

IBQuery2.Params.ParamByName('Name').Value:=s; {Передаем в параметр Price введеную цену товара} IBQuery2.Params.ParamByName('Price').Value:=c;

{Пытаемся выполнить запрос на вставку записи} try

IBQuery2.ExecSQL;

{Если не удалось, то сообщить пользователю} except

ShowMessage('Ошибка при добавлении данных!,'+#13+ 'Попробуйте еще раз!');

{откатываем изменение}

Соседние файлы в папке English home work