На этом шаге мы закончим изложение алгоритма создания приложения.
Создаем новую форму для обслуживания справочника фирм и назовем ее Form3. В свойство Caption пишем Справочник - фирмы. Сохраняем модуль под именем Unit4.
Помещаем компоненты TDBGrid, TDBNavigator, два компонента TButton, TIBQuery, TDataSource. Для компонента TDBNavigator свойство VisibleButtons установите как на рисунке 3 22 шага.
Свойство DataSet компонента TDataSource устанавливаем в IBQuery1. Свойство DataSource компонентов TDBGrid и TDBNavigator устанавливаем в DataSource1.
Подключим модкль первой формы. Для этого выбираем пункт меню File | Use Unit, в появившемся окне выбираем модуль Выбираем Unit1 и нажимаем кнопку ОК. Это нужно для того, чтобы мы смогли подключить компонент IBQuery1 к компоненту TIBDatabase.
В свойстве Database компонента IBQuery1 помещаем значение DM.IBDatabase1.
Теперь заходим в свойство SQL этого же компонента. В окне Command Text Editor создаем следующий запрос:
Select * from Firm Order By Name;
Щелкаем два раза по компонету IBQuery1. Щелкаем правой кнопкой мыши по появившемуся окошку и выбираем Add all fields, то есть добавляем все поля.
После этого настроим отображение полей:
Делаем активной форму Form1 и для пункта меню Справочники | Фирмы пишем код. Но предварительно нам надо подключить модуль Unit4; это делается с помощью пункта меню File | Use Unit.
Обработчик выбора пункта меню Справочники | Фирмы имеет следующий вид:
Form3:=TForm3.Create(self); Form3. IBQuery1.Open; Form3.ShowModal;
Обработку событий OnClick для кнопок TButton ''+'' и ''-'', используемых для добавления и удаления фирм, реализуем аналогично описанному в 23 шаге.
Форма Справочник - фирмы может выглядеть аналогично приведенной на рисунке 1.
Рис.1. Форма Справочник - фирмы
Переходим на главную форму Form1 и помещаем компоненты TDBGrid, TIBQuery, TDataSource, три компонента TButton (рисунок 2).
Рис.2. Расположение компонентов на главной форме
В свойство Database компонента IBQuery1 помещаем значение DM.IBDatabase1.
Теперь заходим в свойство SQL этого же компонента и пишем в окне Command Text Editor следующий запрос:
Select * From Sale,Tovar,Firm Where Sale.FIRMKOD=FIRM.FIRMID and Sale.TOVARKOD=Tovar.TOVARID;
Свойство DataSet компонента TDataSource устанавливаем в IBQuery1. А свойство DataSource компонента TDBGrid устанавливаем в DataSource1.
Щелкаем два раза по кнопке "Открыть базу" и напишем простую процедуру аутентификации.
procedure TForm1.ButtonlClick(Sender: TObject); var s: string; begin //Спрашиваем пароль входа s:=InputВох('Аутентификация','Введите пароль:',"); //Если пароль правильный, то... ifs='nadi' then begin //Открываем базу продаж IBQuery1.Open; //Кнопку "Открыть базу" делаем недоступной Button1.Enabled:=false; end else //Если пароль неправильный... ShowMessage('Henpaвильный пароль!'); end;
Для кнопки Продать пишем:
Form4:=TForm4.Create(self); Form4. ShowModal;
Теперь создадим форму для реализации продаж. Назовем ее Form4, сохраняем под именем Unit5. Расположим на ней компоненты, как показано на рисунке 3.
Рис.3. Форма Продажи
Выполняем пункт меню Project | Option и отменяем автоматическое создание формы.
Для кнопки с тремя точками, расположенной напротив слова "Фирма", пишем:
Form3:=TForm3.Create(self);
Form3.IBQuery1.Open;
//Делаем доступной кнопку "Выбрать"
Form3.Button1.Enabled:=True;
Form3.ShowModal;
Выбираем форму Form3 и для кнопки Выбрать пишем:
procedure TForm3.ButtonlClick(Sender: TObject); begin //Запоминаем название организации и его код, код пишем в свойство Tag Form4.Editl.Text:=IBQuery1NAME.Value; Form4.Editl.Tag:=IBQuery1FIRMID.Value; Form3.Close; end;
Выбираем форму Fоrm4. Для кнопки с тремя точками, расположенной напротив слова "Товар", пишем:
Form2:=TForm2.Create(self);
Form2.IBQueryl.Open;
//Делаем доступной кнопку "Выбрать "
Form2.Button1.Enabled:=True;
Form2.ShowModal;
Выбираем форму Form3 и для кнопки Выбрать пишем:
procedure TForm2.Button2Click(Sender: TObject); begin //Запоминаем название товара и его код, кодпишем в свойство Tag Form4.Edit2.Text:=IBQuery1NAME.Value; Form4.Edit2.Tag:=IBQuery1TOVARID.Value; Form2.Close; end;
Идем на форму Form4, для кнопки Продать пишем:
procedure TForm4.Button3Click(Sender: TObject); begin //Передаем в параметры данные по продаже Form1.IBQuery2.Params.ParamByName('FIRMKOD').Value:=Edit1.Tag; Form1.IBQuery2.Params.ParamByName('TOVARKOD').Value:=Edit2.Tag; Form1.IBQuery2.Params.ParamByName('REM').Value:=Edit3.Text; //Пытаемся выполнить запрос try Form1.IBQuery2.ExecSQL; //Если не удалось, то сообщаем об ошибке except ShowMessage('Продать товар не получилось! Повторите попытку!'); //Откатываем транзакцию DM.IBTransaction1.RollbackRetaining; exit; end; //Если запрос выполнился, то потверждаем транзакцию DM.IBTransaction1.CommitRetaining; //Обновляем таблицу продаж, если она открыта if Form1.IBQuery1.Active then begin Form1.IBQuery1.Close; Form1.IBQuery1.Open; end; Form4.Close; end;
Еще несколько элементарных процедур (таких как, Закрыть и т.п.) и приложение готово.