Разработка и эксплуатация Удаленных Баз Данных (4к) — КиберПедия 

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Разработка и эксплуатация Удаленных Баз Данных (4к)

2022-12-30 51
Разработка и эксплуатация Удаленных Баз Данных (4к) 0.00 из 5.00 0 оценок
Заказать работу

Разработка и эксплуатация Удаленных Баз Данных (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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.617 с.