- •Реляционные базы данных создание клиентских программ баз данных в среде delphi
- •2 Издание
- •Оглавление
- •2 Издание 0
- •Введение
- •Занятие 1. Разработка физической модели базы данных.
- •(Товар, Ед измерения) → Цена за ед (так как встречается один и тот же товар в различной упаковке)
- •Занятие 2. Создание базы данных в программе FlameRobin.
- •Занятие 3. Разработка форм «Товар» и «Покупатели».
- •Занятие 4. Разработка главной формы программы
- •Приложение 1. Дополнительные данные для ввода в бд:
Занятие 4. Разработка главной формы программы
Главная форма приложения, как правило, предназначается для выполнения основной задачи пользователя. В нашем случае это создание накладной и перечня продаваемых товаров для определенного покупателя, включая подсчет общей стоимости проданных товаров.
Для решения этой задачи разместим:
в модуле данных DM:
компонент TZTable ( Name = Nakladn; TableName = NAKL; MasterSource = DSPokup; MasterFields = IDPOKUP; LinkedFields = IDPOKUP ),
два компонента TDataSource с именами DSNakl и DSOtpusk;
компоненты TZQuery ( Name=Otpusk ) и TZUpdateSQL ( Name=OtpUpdSQL )
на форме следующие компоненты:
компонент TDBText ( DataSource=DM.DSPokup; dataField = POKUPNAME ).
компонент TDBNavigator ( DataSource=DM.DSPokup )
два компонента DBGrid и соответствующие им два TDBNavigator, задав им свойства DataSource = DM.DSNakl и DataSource = DM.DSOtpusk соответственно.
Таблицу Nakladn подключите как дочернюю к таблице Pokupatel.
В компоненте TZQuery свойство TableName отсутствует, зато есть два важных свойства – SQL и UpdateObject.
Раскройте выпадающий список свойства UpdateObject и выберите OtpUpdSQL.
В этом случае данные ZQuery можно будет редактировать. Если же свойство UpdateObject не определено ( UpdateObject := null ), то данные ZQuery можно будет только читать.
Значение свойства SQL типа TStrings задается в редакторе многострочного текста, как показано на рис. 18:
Рисунок 18. SQL – оператор выборки данных компонента ZQuery
Введите текст SQL – запроса, как показано на рис. 18
О
братите
внимание на фрагмент SQL – оператора:
where NAKLNOM = :NAKLNOM
Вводя в текст запроса :NAKLNOM мы создали параметр с именем NAKLNOM, свойства которого нужно отредактировать в Object Inspector (рис. 19).
Задайте свойства DataType=ftInteger, ParamType=ptInput, Size=4 параметра NAKLNOM так, как показано на рис.
Внимание: между двоеточием и именем параметра пробелов нет.
Если имя параметра (NAKLNOM) совпадает с именем поля в составе первичного ключа компонента родительской таблицы, то реализуется связь Master – Detail, такая же, как в случае компонент TZTable. Однако возможно создавать и другие, дополнительные параметры, значения которых задаются программно перед активизацией TZQuery.
Чтобы сделать TZQuery Otpusk редактируемым набором, нужно задать его свойства InsertSQL, ModifySQL, DeleteSQL и RefreshSQL. Если текст SQL – запроса в компоненте TZQuery Otpusk, то:
Выделите в модуле DM компонент TZUpdateSQL OtpUpdSQL и щелчком правой кнопки мыши вызовите контекстное меню, в котором выберите UpdateSQL Editor. Окно диалога приведено на рисунке:
Рисунок 20. Диалог построения DML – операторов компонента ZUpdateSQL
В таблице OTPUSK первичный ключ состоит из двух полей: IDTOV и NAKLNOM. Выделите их в списке Key Fields, а в Update Fields – все поля таблицы. Нажмите кнопку "Generate SQL". Конструктор генерирует соответствующие SQL – операторы для вставки, изменения и удаления данных, которые приведены на рис. 21:
Рисунок 21. Созданные в диалоге компонента ZUpdateSQL операторы вставки, изменения, удаления и обновления данных
Сохраните проект, а затем запустите на выполнение. Теперь Вы можете вводить новые, редактировать и удалять записи в таблицах NAKL и OTPUSK базы данных, как показано на рис. 22:
Рисунок 22. Создание новой накладной и отпуск товаров в окне приложения
