Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2022-12-30 | 51 |
5.00
из
|
Заказать работу |
|
|
Разработка и эксплуатация Удаленных Баз Данных (4к)
Фрезин Ирина Георгиевна
Прилуков С.
Предприятие «Молочный завод» изготавливает из сырья товар, после чего продает готовые изделия оптовым покупателям. Построить АИС, позволяющий вести складовый учет.
Поставщик *код поставки Название Адрес Контактное лицо Телефон |
Поставка *Код поставки Кол-во Дата поставки Сумма Код поставки Код сырья |
Сырье *код сырья Наименование Цена начальная Цена оплаты |
Изготовление *Код изг. Код сырья Код товара |
Товар *Код товара Наименование Цена Код сорта 2 |
Продажа *код продажи Код товара Код покупателя Кол-во Сумма Дата |
Покупатель Код покупателя Название Адрес Контактное лицо Телефон |
сорт сырья код сырья коэффициент |
сорт сырья код изг. коэффициент |
Методология объектно-ориентированного программирования
При переходе от процедурного программирования к объектно-ориентированному программированию необходимо знать следующую схему: данные – процедура – данные заменяется на схему: запрос – объект – данные. Основными понятиями ООП является объект (экземпляр класса), класс, метод и сообщение.
Переменная тип процедура вызов процедуры - Паскаль
Объект класс метод сообщение - ООП
К основным концепциям ООП относятся: инкапсуляция, наследование, полиморфизм.
Под инкапсуляцией понимается сокрытие данных и операций типов данных от внешних программ, использующих их. Инкапсуляция поддерживает абстрагирование тем, что объект можно использовать, не зная как он реализован внутри.
|
Наследование – это процесс порождения новых объектов-потомков от существующих объектов-родителей. При этом потомок наследует от родителя все его поля, свойства и методы.
Сущность полиморфизма заключается в том, что методы различных классов могут иметь одинаковые имена, но различные содержание.
Класс представляет собой тип записи, имеющий в своем составе поля, свойства и методы.
Поле класса представляет собой данные, содержащиеся в классе. Поле описывается как переменная, и может принадлежать к любому типу.
Свойство реализует механизм доступа к полям и содержит описательные свойства.
Метод представляет собой подпрограмму, процедуру или функцию, являющейся элементом класса.
Файлы, генерируемые системой
Расширение | Тип файлов и описание | Время создания | Нужен ли для компиляции? |
.CFG | Файл конфигурации с настройками проекта. Аналогичен файлу DOF | Разработка | Нужен только при использовании специальных настроек компилятора |
.DCU | Delphi Compiled Unit(откомпилированный модуль), результат компиляции файла Pascal | Компиляция | Только если исходный код недоступен Файл DCU – промежуточный шаг, они ускоряют компиляцию |
.DFM | Файл формы Delphi двоичный файл с описанием свойств формы (или модуля данных) и ее компонентов | Разработка | Да. Каждая форма хранится как в файле PAS, так и в DFM |
.DOF | Delphi Option File текстовый файл с опциями текущего проекта | Разработка | Нужен только при использовании опций, отличных от установленных по умолчанию |
.DPR | Delphi Project File (файл проекта Delphi) этот файл на самом деле содержит исходный код Pascal | Разработка | Да |
.EXE | Исполняемый файл, созданное вами приложение Windows | Компиляция, компоновка | Нет. Это файл, который вы будите распространять. Он включает все модули, формы и ресурсы. |
.PAS | Файл Pascal. Исходный код модуля Pascal, или связанного с формой, или отдельно | Разработка | Да |
.RES | Resource file (файл ресурсов). Двоичный файл, связанный с проектом и обычно содержащий его значок. Вы можете добавлять в проект другие файлы данного типа. Также можно использовать текстовое описание ресурсов (файлы RC) | Разработка. Страница Application окна диалога Project Options | Да. Главный ресурсный файл приложения может быть построен Delphi заново на основе информации, находящейся на странице Application окна диалога Project Options. |
|
Корректность ввода данных
Типы данных
Простые типы Процедурные типы Объектные типы Структурированные типы Ссылочные типы
Вещественные Порядковые Массивы Указатели
Строки
Целочисленные Множества
Логические Записи
Символьные Файлы
Перечисленные
Интегральные
Тип | Диапазон | Формат |
Короткое целое Shortint | -128…127 | 8 бит со знаком |
Целое integer | -32768…32767 | 16 бит со знаком |
Длинное целое longint | -2147483648…2147483647 | 32 бита со знаком |
Длиной в байт byte | 0…255 | 8 бит без знака |
Длиной в слово word | 0…65535 | 16 бит без знака |
Тип | Диапазон | Точность |
Real (вещественное) | -2.9*1039…1.7*1038 | 11-12 знаков |
Single (с одинарной точностью) | -1.5*1015…3.4*1038 | 7-8 знаков |
Double (с двойной точностью) | -5.0*10324…1.7*10308 | 15-16 знаков |
Extended (с повышенной точностью) | -3.4*104932…1.1*104932 | 19-20 знаков |
Comp (сложное) | -9.2*1018…9.2*1018 | 19-20 знаков |
Обращение | Тип Результата | Функция |
Length (S) | Integer | Определение строки S N:=length (S); |
IntToStr(n:integer); | String | Преобразование целого числа в строку |
StrToInt(s:string); | Integer | Преобразование строки в целое число |
FloatToStr(n:real); | String | Преобразование действительного числа в строку |
StrToFloat(s:string); | Real | Преобразование строки в действительное число |
DateToStr(d:Tdatetime); | String | Преобразование даты в строку |
TimeToStr(t:TDateTime); | String | Преобразование времени в строку |
StrToDate(s:string); | TDateTime | Преобразование строки в дату |
StrToTime(s:string); | TDateTime | Преобразование строки во время |
Обращение | Тип Аргумента | Тип Результата | Функция |
Abs (x) | I, R | I, R | Модуль аргумента |
Arctan (x) | I, R | R | Арктангенс (радианы) |
Cos (x) | I, R | R | Косинус (радианы) |
Sin (x) | I, R | R | Синус (радианы) |
Exp (x) | I, R | R | Экспонента |
Frac (x) | I, R | R | Дробная часть Х |
Int (x) | I, R | R | Целая часть Х |
Ln (x) | I, R | R | Натуральный логарифм |
Random | R | Псевдослучайное число в интервале (0; 1) | |
Random (x) | I | I | Псевдослучайное число в интервале (0; х) |
Round (x) | R | I | |
Sqr (x) | I, R | I, R | Квадрат Х |
Sqrt (x) | I, R | R | Корень квадратный из Х |
A div b | I | I | Получение частного при целочисленном делении a на b |
A mod b | I | I | Получение остатка при целочисленном делении a на b |
Trunk (x) | I | I | Ближайшее целое, не превышающее х по модулю, то есть вычисляет целую часть аргумента |
Pi | =3.14159 | ||
Dec (x[,i]) | I | I | Уменьшает значение x на i, при отсутствии i на единицу |
Inc (x[,i]) | I | II | Увеличивает значение x на i, при отсутствии i на единицу |
Odd (i) | I | boolean | Возвращает true, если I – нечетное число, false – если четное |
|
Разработка главной формы
1) ЗапуститьDelphi 7
2) Сохранить проект в папке: Unit - UnitMain, Project - ProjectKombinat
3) Свойствоcaption «molochnyizavod»
4) Свойствоname – MainForm
5) Свойство formstyle – MDIForm – только для этой формы, так как она родительская
6) Свойство Windowsstate – maximized
Для главной формы создать меню. Для этого расположить не визуальный компонент на вкладке Standart – mainmenu. Дважды щелкнуть, и в редакторе прописать команды меню: caption – справочники.
Установка связи с БД
Для установления связи с существующей БД Project добавляется элемент file->new->datemodule. Сохранить его под именем UnitBD.
Свойствоname – DateBD
На DateBD расположить ADOconection с вкладки ADO. name – kombinat
Далее свойство connectionstring нажать«…»и в появившемся окне Biuk выбираем Microsoftjet 4.0 OLEBDprovider. Далее обзор ->выбираем файл и удаляем путь кроме имени БД. Проверить подключение – ок – ок-ок.
СвойствоloginPrompt - false
Свойствоconnect – true
Saveall
Сортировка записей таблицы
Для сортировки записей используют index, field name - строковое значение имена поля, которое можно изменить программно.
Пример:
Создать в справочнике клиентов (поставщиков) две кнопки, которые будут производить сортировку по фамилии и по адресу. Для этого располагаем на форме
Label сортировка записей
Buttom1 по фамилии
|
Buttom2 по адресу
Обработка кнопок
datebd.adopostavhik.indexfieldnames:=’fam’;
datebd.adopostavhik.indexfieldnames:=’address’;
Создание вычисляемых полей
в редакторе полей имеется возможность создания новых полей, которые формируют свои значения на основе значений реально существующих вычисляемых полей. Значения данных полей могут сохранятся в БД, но также могут просто отображаться на форме или отчете.
Пример:
Создать вычисляемое поле, выводящее в одной строке фамилию, имя, отчество.
1. Для этого откроем редактор полей
DateBD -> ADOPostavhik
Вызвать контекстное меню (правой кнопкой) -
2. В окне новое поле заполнить две рамки:
Name - kod name
Size - 50
Type - string
Field type – calculated
Ok
3. Для организации работы вычисляемого поля необходимо создать обработчик компонента adoPostavhik (метод) - onCaleField. Для этого выделить компонент adopostavhik и на вкладке events 2щелкнуть по onCaleField.
begin
Adopostavchikodname.value:=adopostavchikfam.value+’ ’+ adopostavchikname.value+’ ’+ adopostavchikotch.value;
4. Для отображения вычисляемого поля добавить на форму label
В обработке кнопки вывод дописать команду:
Label5.caption:=datebd.adopostavchikkodname.value;
Поиск данных по содержимому
Для поиска данных в таблице БД в простейшем случае используется метод фильтрации записи.
Пример:
В форму справочник поставщиков добавить в поле ввода критерий поиска и кнопку
Панель (поиск)
Text box
Label поиск
Edit1
Buttom1 по фамилии
Buttom2 по адресу
Buttom3 сброс
Обрабатываем кнопки:
Кнопка по фамилии:
begin
If length(edit1.text)>0 then
Datebd.adopostavchik.filtered:=true
Else datebd.adopostavchik.filtered:=false;
Datebd.adopostavchik.filter:=’fam=’’’+edit1.text+’’’’;
End;
Кнопка по адресу:
Begin
If length(edit1.text)>0 then
Datebd.adopostavchik.filtered:=true
Else dateb.adopostavchik.filtered:=false;
Datebd.adopostavchik.filter:=’address=’’’+edit1.text+’’’’;
End;
Кнопка Сброс:
datebd.adopostavhik.filtered:=false;
edt1.text:='';
edt2.text:='';
edt3.text:='';
Примечание:
На практике для поиска записей при помощи фильтрации создается отдельная форма поиска, которая вызывается из формы, где производится поиск.
Сохранить
Unitpostpoisk
Form style - mdi child
Caption - поиск
Name - formpostpoisk
Position - top center
Project – option вправо
Cafree;
В справочник поставщиков добавляем кнопку поиск
Application.createform(TFormpostpoisk, formpostpoisk))
Use unit
Label по фамилии
Label по имени
Label по адресу
Label по отчеству
Добавляем 4 Edit и 6 Buttom (3*поиск, сброс, закрыть)
Textbox edit
Сложные формы
В БД «комбинат» таблица «товар» является дочерней по отношению к таблице «вид товара»
Поэтому при создании формы «справочник товаров» необходимо учитывать данное условие. То есть при заполнении таблицы «Товар» будет происходить только при наличии заполненной связи kod (id_vid). Такое заполнение можно организовать при помощи раскрывающегося списка dblookupcombobox
Пример: создать сложную форму справочника товаров.
|
1) Создаем новую форму.
Save as unittovar.
Caption – справочник товаров
Name FormTovar
FormStyle MDIChild
Position DefaultPosOnly
Project -> option перевести вправо
Use unit -> unit bd
Events -> OnClose -> FormClose -> action:=caFree;
Вызвать данный справочник из пункта главного меню
Заходим в главную форму, меню, справочник товаров.
2) В модуль DateBD располагаем компоненты связи с таблицами Товар и вид товара
Для таблицы товар:
ADOTable свойства:
Name ADOTovar
Connection ADOCombinat
Tablename – Tovar
Active – true
DateSource свойства:
Name DateTovar
DataSet ADOTovar
Для таблицы Вид товара:
ADOTable свойства:
Name ADOVidTovar
Connection ADOCombinat
Tablename – Vid_Tovar
Active – true
DateSource свойства:
Name DateVidTovar
DataSet ADOVidTovar
3) Отредактировать поля вывода в компоненте ADOTovar -> щелкнуть два раза -> добаляем все поля. Все ключевые поля – невидимы (visible –false).
Поле name:
DisplayLabel – наименование
DisplayWhit - 15
Поле EdIzm:
DisplayLabel – единица измерения
DisplayWhit – 15
Поле PriceStat:
DisplayLabel – начальная цена
DisplayWhit - 19
Carrency – true
Поле Priceitog:
DisplayLabel – итоговая цена
DisplayWhit - 19
Carrency – true
Поле Nal (логическое):
DisplayLabel – наличие
DisplayValues – да;нет
4) Добавить в таблицу Товар поле Наличие
5) Создаем интерфейс справочнику товаров
Вид товара: [dblookupcombobox]
DBGrid
Кнопки: Добавить, Сохранить, Удалить, Поиск, Закрыть.
BDGrid DataSource -> DateTovar
6) Dblookupcombobox свойства:
ListSource – DateBD.DateVidTovar (таблица из которой берут сведения)
ListField – name (поле из таблицы, которое отобразится в списке)
KeyField – id
DataSource – DateBD.DateTovar (таблица, куда заносят товар)
DataField - id_vid (заполняемое поле)
DropDownRod – количество строк в открывающемся списке
7) Если поле таблицы базы данных имеет ограниченное количество значений, для их ввода и отображения удобно использовать раскрывающейся список.
В таблице товаров есть ограниченный список – единицы измерения. Для создания списка раскрывающегося списка в таблице DBGrid надо:
Вызвать контекстное меню таблицы DBGrid (правая кнопка мыши) и выбрать первую команду (редактор столбцов).
Вызвать контекстное меню редактора и добавить все поля (add all).
Ключевые поля переопределить в невидимые.
Выделить поле Единицы измерения и в свойстве PickList прописать строки раскрывающегося списка. OK
8) Кнопка добавить должна вызвать дополнительную форму «Новые записи»
Выполняем стандартный набор действий, свойств
UnitTovarDob
FormTovarDob
9) label наименование DBEdit1
label единица измерения DBComboBox
label цена начальная DBEdit2
label цена итоговая DBedit3
DBCheckBox
· DBEdit1 DataSource – DateTovar
DataField – name
· DBComboBox DataSource – DateTovar
DateField – ed_izm
Items – 2 щелчка – вписать вручную
Style – DropDownList
· DBEdit2 DataSource – DateTovar
DataField – price_start
· DBCheckBox свойства:
DataSource – DataTovar
DataField – nal
Alignvent – можно выбрать
Caption – Наличие
Вкладка additional – bitbtn
Kind – bkclose
10) Доработать кнопку добавить на форме Справочник товаров
DataBD.ADOTovar.Append;
application.CreateForm(TFormTovarDob, FormTovarDob);
DBGrid.SetFocus;
11) Кнопка сохранить
DateBD.ADOTovar.Post;
12) Кнопка удалить
If Application.messagebox(Pchar (‘вы действительно…?’), ‘внимание!!!’,MB_OkCancel)=id_ok then datebd.adOTovar.delete;
13) Обработка кнопки поиск
Кнопка поиск вызывает дополнительное окно «поиск записей»
Справочник сырья
Создать форму «Справочник сырья», которая в верхней части содержит поля ввода, кнопки добавить, сохранить, удалить; в средней части содержит таблицу DBGrid, и в нижней части окна панель поиска.
1. Так как форма будет отображать сведения из двух таблиц, то в модуль DateBD добавить две пары компонентов связи ADOTable и DateSource.
Для таблицы сырье:
ADOTable свойства:
Name ADOSirye
Connection ADOCombinat
Tablename – Sirye
Active – true
DateSource свойства:
Name DateSirye
DataSet ADOSirye
Для таблицы вид сырья:
ADOTable свойства:
Name ADOVidSirye
Connection ADOCombinat
Tablename – VidSirye
Active – true
DateSource свойства:
Name DateVidSirye
DataSet ADOVidSirye
2. Отредактировать поля вывода в компоненте ADOSirye -> щелкнуть два раза -> добаляем все поля. Все ключевые поля – невидимы (visible –false).
3. Создаем форму «Справочник сырья», выполнив набор стандартных действий.
UnitSirye
FormSirye
4. Вызвать данный справочник из пункта главного меню
Заходим в главную форму, меню, справочник сырья.
5. Создаем интерфейс формы
Label вид сырья DBLlookUpComboBox (свойства см. выше)
Label наименование DBEdit1
Label цена начальная DBEdit2
Label цена итоговая DBEdit3
Label единица измерения DBComboBox
Button: Добавить Сохранить Удалить
DBGrid (свойства)
6. Обработка кнопки добавить
DateDB.ADOSirye.append;
DBEdit1.text:=’’;
DBEdit2.text:=’’;
DBEdit3.text:=’’;
7. Обработка кнопки сохранить
DBGrid.SetFocus;
If DateDB.ADOSirye.Modified then DateBD.ADOSirye.post;
8. Кнопка удалить
If Application.messagebox(Pchar (‘вы действительно…?’), ‘внимание!!!’,MB_OkCancel)=id_ok then datebd.adOTovar.delete;
9. Создать в нижней части формы поиск записей
Создание кнопки «Пересчет»
В форме «Справочник товаров» необходимо создать кнопку «Пересчет», которая будет производить пересчет итоговой цены товара, в зависимости от установления сорта товара.
Создаем кнопку «Пересчет».
Обработка кнопки:
var cena, kof, cena_itog:real;
begin
If dblookupcombobox.keyValue=1 then
Begin
cena:=dateBD.ADOTovarprice_start.Value;
kof:=dateBD.ADOTovarVidstavka.value;
cena_itog:=cena*kof;
End;
If dblookupcombobox.keyValue=2 then
Begin
cena:=dateBD.ADOTovarprice_start.Value;
kof:=dateBD.ADOTovarVidstavka.value;
cena_itog:=cena*kof;
End;
If dblookupcombobox.keyValue=3 then
Begin
cena:=dateBD.ADOTovarprice_start.Value;
kof:=dateBD.ADOTovarVidstavka.value;
cena_itog:=cena*kof;
End;
DateBD.ADOTovar.Edit;
dateBD.ADOTovarprice_itog.Value:=cena_itog;
dateBD.ADOTovar.Post;
end;
// В БД «вид товара» и «вид сырья» там, где находятся действительные числа, берем «одинарные с плавающей точкой»
Сделать такую же кнопку для «справочника сырья»
С оздание журнала «изготовление товара и сырья»
В разрабатываемой форме будут отображаться сведения из пяти таблиц базы данных: изготовление, сырье, вид сырья, товар, вид товара. Поэтому в модуль DateBD добавляем 5 пар компонентов связи.
Для таблицы Вид сырья:
ADOTable свойства:
Name ADOSiryeVid_1
Connection ADOCombinat
Tablename – Vid_Sir
Active – true
DateSource свойства:
Name DateSiryeVid_1
DataSet ADOSiryeVid_1
Для таблицы Сырье:
ADOTable свойства:
Name ADOSirye_1
Connection ADOCombinat
Tablename – Sirye
Active – true
DateSource свойства:
Name DateSirye_1
DataSet ADOSirye_1
Для таблицы Изготовления:
ADOTable свойства:
Name ADOIzgotovlenie
Connection ADOCombinat
Tablename – Izgotoblenie
Active – true
DateSource свойства:
Name DateIzgotovlenie
DataSet ADOIzgotovlenie
Для таблицы Товара:
ADOTable свойства:
Name ADOTovar_1
Connection ADOCombinat
Tablename – Tovar
Active – true
DateSource свойства:
Name DateTovar_1
DataSet ADOTovar_1
Для таблицы Вид Товара:
ADOTable свойства:
Name ADOVidTovar_1
Connection ADOCombinat
Tablename – Vid_Tovar
Active – true
DateSource свойства:
Name DateVidTovar_1
DataSet ADOVidTovar_1
В компоненте ADOIzgotoblenie отредактировать вывод полей в таблице DBGrid. Открываем ADOIzgotovlenie, добавляем все поля. Делаем системные поля невидимыми.
Создаем форму
Save as UnitIzgotovlenie
Caption – Журнал изготовления
FormStyle – MDIChild
Name – FormIzgotovlenie
Position – PosOnly
Events – OnClose – FormClose – action:=caFree;
Project – option – вправо
Use unit
Переходим в главную форму, рядом со справочниками создаем метку «Журналы», и ниже пишем «Изготовление».
Label изготовление
DBGrid
Label сырье label товар
Dblookupcombobox Dblookupcombobox
DBRadioGroup1 DBRadioGroup2
Label начальная цена товара DBEdit1 {price_start}
Label конечная цена товара DbEdit2 {price_...}
Button добавить button сохранить button закрыть
Для видов сырья и товаров используем элемент DBRadioGroup.
Свойство DBRadioGroup1:
DataSource – DataSiryeVid_1
DataField – name
Caption – Сорт сырья
Items – первый сорт, второй сорт, третий сорт
Values – 1, 2, 3
Свойство DBRadioGroup2:
DataSource – DataTovarVid_1
DataField – name
Caption – Вид Товара
Items – первый сорт, второй сорт, третий сорт
Values – 1, 2, 3
Кнопка добавить:
dateBD.ADOIzgotovlenie.Append;
DBGrid1.SetFocus;
Кнопка сохранить:
var prs, prt, sum, kol,kof1,kof2: real;
begin
// перерасчет цены сырья в зависимости от выбора вида сырья
If dbradiogroup1.ItemIndex=0 then
Begin
Kof1:=datebd.adosiryevid_1stavka.value;
Prs:=datebd.adosiryeprice_rasch.value*kof1;
End;
If dbradiogroup1.ItemIndex=1 then
Begin
Kof1:=datebd.adosiryevid_1stavka.value;
Prs:=datebd.adosiryeprice_rasch.value*kof1;
End;
If dbradiogroup1.ItemIndex=2 then
Begin
Kof1:=datebd.adosiryevid_1stavka.value;
Prs:=datebd.adosiryeprice_rasch.value*kof1;
End;
Datebd.adosirye_1.edit;
Datebd.adosirye_1price_rasch.value:=prs;
Datebd.adosirye_1.post;
// вычисление суммы изготовления в зависимости от цены товара (цена итоговая от вида товара)
Kol:=datebd.adoizgotovleniekolvo.value:
If dbradiogroup2.itemIndex=0 then
Begin
Kof2:=databd.adotovarVid_1stavka.value:
Prt:=databd.adotovar_1price_start.value*kof2;
End;
If dbradiogroup2.itemIndex=1 then
Begin
Kof2:=databd.adotovarVid_1stavka.value:
Prt:=databd.adotovar_1price_start.value*kof2;
End;
If dbradiogroup2.itemIndex=2 then
Begin
Kof2:=databd.adotovarVid_1stavka.value:
Prt:=databd.adotovar_1price_start.value*kof2;
End;
// проверка условия, что стоимость товара должна быть больше стоимости сырья
If prt<prs then
Begin
Prt:=prs*1,3;
Sum:=prt*kol;
End;
Datebd.adotovar_1.edit;
Datebd.adotovar_1price_itog.value:=prt;
Datebd.adotovar_1.post;
Dbedit2.text:=floattostrF(prt,ffgeneral,6,2);
Datebd.adoizgotovlenie.edit;
Datebd.adoizgotovleniesumma_izgot.value:=sum;
Datebd.adoizgotovlenie.post;
End;
Создание журнала продаж
Для базы данных комбинат создать журнал продажи товара, отражающий сведения о продаже товара определенному клиенту.
В компоненте datebd создать 4 пары компонентов связи
Для таблицы товара:
Adotable:
Name – adotovar_2
Conection – kombinat
Tablename - tovar
Active – true
Datasource:
Name – datatovar_2
Dataset – adotovar_2
Для таблицы вид товара:
Adotable:
Name – adovidtovar_2
Conection – kombinat
Tablename – vid_tovar
Active – true
Datasource:
Name – datavidtovar_2
Dataset – adovidtovar_2
Для таблицы продажи:
Adotable:
Name – adoprodaja
Conection – kombinat
Tablename - prodaja
Active – true
Datasource:
Name – dataprodaja
Dataset – adoprodaja
Для таблицы клиентов:
Adotable:
Name – adoclient_2
Conection – kombinat
Tablename - client
Active – true
Datasource:
Name – dataclient_2
Dataset – adoclient_2
Во всех компонентах ADOTable добавить поля в редакторе полей.
В компоненте ADOProdaja отредактировать вывод полей
Ключевые поля – невидимы, displaylabel,displaywidth, editmask.
Создать форму
Unitprodaja
Name - formProdaja
Caption – журнал продаж
Formstyle – MDIChild
Position – posonly
Events – onclose – action:=cafree;
Project – option – вправо
Useunit – unitbd
Добавить форму в главное меню
Создаем интерфейс:
Label вид товара dblookupcombobox1
Label товар dblookupcombobox2
Label клиент dblookupcombobox3
Dbgrid1
Buttoms добавить сохранить удалить закрыть
Dblookupcombobox1:
Listsource – adovidtovar_2
List field - name
Keyfield – id_vid_tovar
Dblookupcombobox2:
Listsource – adovtovar_2
List field - name
Keyfield – id_tovar
Data source – dataProdaja
Data field – id_tov
Dblookupcombobox3:
Listsource – adoclient_2
List field - name
Keyfield – id_client
Data source- dataProdaja
Data field – id_client
Сохранить:
Var pr, kol, sum:real;
Begin
Kol:=datebd.adoprodajakolvo.value;
Pr:=datebd.adotovar_2price_itog.value;
Sum:=kol*pr;
Datebd.adoprodaja.edit;
Datebd.adoprodajasumma_izgot.value:=sum;
Dateb.adoprodaja.post;
Удалить: самому прописать.
SQL-запросы
Большинство систем управления БД позволяют произвести выборку нужной информации путем выполнения запросов. Для выполнения операции над данными с помощью оператора языка SQL предназначен компонент ADOQuery. Данный компонент позволяет получить в виде набора записей данные из нескольких таблиц. Данные, отображаемые через ADOQuery, нельзя редактировать.
Основные свойства ADOQuery:
· Active
· Params – другой параметр
· SQL – текст простейшего запроса
· RequestLive – создание «живого» запроса
Основные методы ADOQuery:
· Open – открытие
· Close - закрытие
· Refresh – обновление данных
· ExecSQL
В общем виде запрос на выборку из таблиц данных выглядит так:
Select список полей
From таблица (таблицы)
Where (критерий)
Order by список полей
Пример: Создать форму, содержащую таблицу DBGrid, которая содержит сведения о поставщиках, его поставках сырья. Поиск производится по введенной фамилии.
1) Создать форму
Unit OtborPostavki
Formstyle
Caption
Name
Onclose
Position
Project – option
2) Добавляем в главное меню
Правее журналов – Поиск
да
3) Для организации запроса в модуль DateBD добавить компонент ADOQuery, для общей видимости запроса.
Установить свойства:
Name - ADOQueryPostavka
Connection – kombinat
Data source – adopostavchik
Sql - … - select*from postavchik – ok
Active – true
DataSource:
Name – adoquerypostavka
Dataset – adoquerypostavka
4) Интерфейс
DBGrid1
Datasource – ADOQueryPostavka
Edit1
Buttom «Поиск по фамилии» «Сброс» «Закрыть»
5) Для правильной организации SQL-запроса необходимо ориентироваться на схему Базы Данных.
6) Обработка кнопки «Поиск по фамилии»:
DateBD.ADOQueryPostavka.Active:=false;
DateBD.ADOQueryPostavka.SQL.Clear;
DateBD.ADOQueryPostavka.SQL.Add (‘select postavchik.fam, postavchik.name, surie.name, postavka.data_post, postavka.kolvo’);
dateBD.ADOQueryPostavka.SQL.Add (‘from postavchik, sirye, postavka’);
DateBD.ADOQueryPostavka.SQL.Add (‘where postavchik.id_post=postavka.id_post and postavka.id_sur=sirye.id_sur and postavchik.fam like ‘’’+edit1.text+’’’’);
dateBD.ADOQueryPostavka.Active:=true;
7) Кнопка сброса:
Копируем кнопку поиска и удаляем в скобках все, кроме первого слова, и строчку where удалить from postavchik
DateBD.ADOQueryPostavka.Active:=false;
DateBD.ADOQueryPostavka.SQL.Clear;
DateBD.ADOQueryPostavka.SQL.Add (‘select’);
dateBD.ADOQueryPostavka.SQL.Add (‘from postavchik’);
dateBD.ADOQueryPostavka.Active:=true;
Сложные запросы
Создать форму, содержащую списки поиска, позволяющие по выбранному наименованию сырья найти необходимую информацию о изготовлении из сырья товаров и продажи товара клиенту.
Создаем форму:
Unit – unitotbormain
Caption – сложные запросы
Name – formotbormain
Formstyle, position, onclose, project, use unit.
Добавляем форму в меню к запросам, «Сложные запросы».
Интерфейс:
Label поиск по товару dblookupcombobox1 buttom поиск buttom сброс
Label поиск по чырью dblookupcombobox2 buttom поиск buttom закрыть
-- -- -- -- -- -- -- -- -- -- --
DBGrid
Dblookupcombobox1 свойства: dblooupcombobox2 свойства:
List source – datatovar_2 list source – datasyrie_1
List field – name list field - name
Key fiekd – id_tov key field – id_sur
Data source – prodaga data source - izgotovlenie
Data field – id_tov data field – id_sur
Возвращаемся в меню, устанавливаем программным путем восстановление размеров формы при запуске. Для этого после строчки application…. Прописываем:
Formotbormain.height:=число;
Formotbormain.width:=число;
На форму добавить компоненты создания запросов.
AdOQuery:
Name – adoquerymain
Connection – kombinat
Datesource – prodaga
Sql – select*from prodaga
Active - true;
Date source:
Name – datequerymain
Data set – adoquerymain
Обработка кнопки «Поиск1»:
Formotbormain.height:=новоечисло;
Formotbormain.width:=новоечисло;
ADOQuerymain.Active:=falce;
ADOQuerymain.SQL.Clear;
ADOQuerymain.SQL.Add (‘select tovar.name, prodaga.data_prod, prodaga.kolvo, klient.fam’);
ADOQuerymain.SQL.Add (‘from Tovar, prodaga, klient’);
ADOQuerymain.SQL.Add (‘where Tovar.id_tov=prodaga.id_tov and klien.id_klient=prodaga.id_klient Tovar.name like ‘’’+dblookupcombobox1.text+’’’’);
ADOQuerymain.Active:=true;
Вывод запроса производим в dbgrid, раскрывающейся внизу
Dbrid data source – datequerymain
Обработка копки «Сброс»:
Formotbormain.height:=староечисло;
Formotbormain.width:=староечисло;
ADOQuerymain.Active:=falce;
ADOQuerymain.SQL.Clear;
ADOQuerymain.SQL.Add (‘select’);
ADOQuerymain.SQL.Add (‘from Tovar’);
ADOQuerymain.Active:=true;
Обработка кнопки «Поиск2»:
Formotbormain.height:=новоечисло;
Formotbormain.width:=новоечисло;
ADOQuerymain.Active:=falce;
ADOQuerymain.SQL.Clear;
ADOQuerymain.SQL.Add (‘select sirye.name, izgotovlenie.data_izg, izgotovlenie.kolvo, Tovar.name’);
ADOQuerymain.SQL.Add (‘from Tovar, sirye, izgotovlenie’);
ADOQuerymain.SQL.Add (‘where Tovar.id_tov=izgotovlenie.id_tov and sirye.id_sur=izgotovlenie.id_sur and sirye.name like ‘’’+dblookupcombobox2.text+’’’’);
ADOQuerymain.Active:=true;
Разработка и эксплуатация Удаленных Баз Данных (4к)
Фрезин Ирина Георгиевна
Прилуков С.
Предприятие «Молочный завод» изготавливает из сырья товар, после чего продает готовые изделия оптовым покупателям. Построить АИС, позволяющий вести складовый учет.
Поставщик *код поставки Название Адрес Контактное лицо Телефон |
Поставка *Код поставки Кол-во Дата поставки Сумма Код поставки Код сырья |
Сырье *код сырья Наименование Цена начальная Цена оплаты |
Изготовление *Код изг. Код сырья Код товара |
Товар *Код товара Наименование Цена Код сорта 2 |
Продажа *код продажи Код товара Код покупателя Кол-во Сумма Дата |
Покупатель Код покупателя Название Адрес Контактное лицо Телефон |
сорт сырья код сырья коэффициент |
сорт сырья код изг. коэффициент |
|
|
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!