На этом шаге мы продолжим создавать приложение.
Помещаем на форму Form2 еще один компонет IBQuery и установим его свойство DatabaseName в DM.IBDataBase1. В свойство SQL IBQuery2 поместим следуюший запрос:
Insert into Tovar (Name, Price) Values (:NAME,:PRICE);
Это означает: поместить в поля Name, Price таблицы Tovar значения, содержащиеся в параметрах :Name и :Price. Отметим, что параметры отличаются от имен полей двоеточием, стоящим перед их именем.
Параметрам нужно задать значения. Для этого щелкаем по свойству Params, компонента IBQuery2, появляется окошко (рисунок 1).
Рис.1. Окно с именами параметров SQL-запроса
Выделяем параметр Name и в Инспекторе объектов устанавливаем свойство DataType в ftString, в свойство Value помещаем строку "ААА". DataType - тип параметра, в данном случае текстовый, Value - значение по умолчанию; если параметру не присвоено никакого значения, то ему будет присвоено значение "ААА".
Выделяем параметр Price и в Инспекторе объектов в свойство DataType помещаем значение ftInteger (значение параметра целое число), в свойстве Value задаем значение по умолчанию (0).
Помещаем на форму еще одну кнопку TButton, у которой свойство Caption имеет значение "+". Эта кнопка будет использоваться для добавления товара. Обработчик события OnClick этой кнопки имеет значение:
procedure TForm2.Button3Click(Sender: TObject); var s: string; с: integer; begin s:=InputВох('Введите данные' , 'Введите название товара',"); c:=StrToInt(InputBox('Bведитe данные', 'Введите цену товара',")); //Передаем в параметр Name введенное название товара IBQuery2.Params.ParamByName('Name').Value:=s; //Передаем в параметр Price введенную цену товара IBQuery2.Params.ParamByName('Price').Value:=c; //Пытаемся выполнить запрос на вставку записи try IBQuery2.ExecSQL; //Если не удалось, то сообщить пользователю except ShowMessage('Oшибкa при добавлении данных!, Попробуйте еще раз!'); //Откатываем изменение DM.IBTransactionl.RollbackRetaining; exit; end; //Если запрос выполнился, то подтверждаем транзакцию DM.IBTransactionl.CommitRetaining; //Обновляем набор данных IBQuery1.Close; IBQuery1.Open; end;
Помещаем на форму еще один компонент TIBQuery, который будет отвечать за удаление записи из таблицы Tovar. Установим его свойство DatabaseName в DM.IBDataBase1. В свойстве SQL компонента IBQuery3 запишем SQL-запрос:
Delete from Tovar Where TovarID=:Par1;
Это означает: удалить из таблицы товаров товар с кодом равным значению параметра. Щелкаем по свойству Params компонента IBQuery3, появляется окно со списком параметров.
Рис.2. Окно со списком параметров
Вьделяем параметр Par1 и в Инспекторе объектов свойство DataType этого параметра устанавливаем в ftInteger, в свойстве Value пишем значение по умолчанию (0).
Создадим кнопку TButton, которая будет использоваться для выполнения этого запроса. В свойство Caption этой кнопки поместим "-". Обработчик события OnClick имеет следующий вид:
procedure TForm2.Button4Click(Sender: TObject); begin //Спрашиваем хотите ли удалить запись if MessageDlg('Bы уверены, что хотите удалить запись', mtConfirmation, [mb Yes,mbNo] ,0)=mrYes then //Если да, то... begin //... запоминаем код выбранной записи, и помещаем это значение в // параметр Par1 IBQuery3.Params.ParamByName('Par1').Value:= IBQuery1TovarID.Value; //Пытаемся удалить запись try IBQuery3.ExecSQL; //Еесли не получилось, то сообщаем об этом except ShowMessage('Удаление не прошло не прошло! Запись заблокированa!'); //Откатывем транзакцию DM.IBTransaction1.RollbackRetaining; exit; end; //Если все без ошибок, то потверждаем транзакцию DM.IBTransaction1.CommitRetaining; //Обновляем набор данных IBQuery1.Close; IBQuery1.Open; end; end;
Окончательный вид формы Справочник - товары приведен на рисунке 3.
Рис.3. Окончательный вид формы Справочник - товары
На следующем шаге мы закончим создание приложения.