Создание справочника клиентов — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Создание справочника клиентов

2022-12-30 32
Создание справочника клиентов 0.00 из 5.00 0 оценок
Заказать работу

Выполнить file->new ->form. Saveas UnitClient

Установить свойство caption – справочник клиентов

Свойство name – FormClient

Form style – MDIchild

Position – defaultonly

Чтобы дочерняя форма не запускалась, необходимо project->option все дочерние формы справа, кроме DateBD.

Для вызова формы перейти в главную форму, дважды щелкнуть по конструктору меню. Поставщик. Прописать: «application.Createform(TFormClient,formclient);»

Для того, чтобы сработало необходимо подключить модуль вызываемой формы: file-UseUnit-post

Для того, чтобы справочник закрывался при нажатии на крестик, активировать его и открыть вкладку Events-OneClose-дважды щелкнуть и прописать: «caFree;»

Для создания визуальных компонентов на справочнике необходимо для новой формы создавать набор соответствующих компонентов в DateBD.

С вкладки ADOдобавить ADOtable. Установить свойства: name –AdoClient, connection-выбираем, tablename- выбираем, active – true

В модуль DateBD с вкладки DateAccess расположить DateSource. Свойства: name – client, `dataset – AdoClient

К модулю UnitClient нужно подключить модуль UnitBD: fileUseUnit

Расположить на справочнике компонент DBGrid с вклDateControls. Установить свойство:

Для отображения данных в сетке DBGridправильно, надо перейти компонент dateBD,дважды щелкнуть ADOClient. Правой кнопкой кликнуть addallfields. Установить свойство visible – true

Displaylabelимя отчество установить ширину widht

Добавить навигатор с DateControl

dataSource – Client

 

Поле DBEdit и кнопки управления

1) Создать справочник комбината, отображающий сведения о предприятии с возможностью внесения изменения данных в поля таблицы

2) File -> new -> form

Save as UnitKombinat

Caption: Справочник комбината

Name: FormKombinat

FormStyle: MDIChild

Position: PostOnly

3) Вызвать справочник из меню главной формы:

Caption: Kombinat

Application.CreateForm(TFormKombinat,formKombinat);

4) Справочник комбината

Events -> OnClose -> FormClose

5) Убрать автозапуск: project -> option

6) Begin

Action:=cafree;

End;

7) Создать интерфейс формы

С вкладки DataControls -> DBEdit

Перед расположением элементов необходимо в модуль UnitBD добавить компоненты связи с базой данных «DataBD»

ADO -> ADOtable

Name: ADOZavod

Connection -> ADOKombinat

Table name -> director

Active -> true

Data Access -> data source (перенос в «Data BD»)

Name -> DataZavod

 

«Справочник Комбинат»

File -> UseUnit -> UseBD

DBEdit свойства

Data source -> DataBD.DataZavod

Data Field -> name

Создать пять окон (name, adress, telephone, mail)

 

 

Кнопки (изменить, Сохранить, Закрыть)

1) DBEdit.SetFocus; - изменить

2) If DateBD.ADOZavod.Modified  then DateBD.ADOZavod.Post – сохранить

3) Close; - закрыть

Пример 2: в справочнике поставщиков создаем вместо навигатора кнопки управления (первая, последняя, следующая, предыдущая, добавить, отменить, удалить, сохранить)

1. DateBD.ADOPostavchik.FindFirst;

2. DateBD.ADOPostavchik.FindLast;

3. DateBD.ADOPostavchik.FindNext;

4. DateBD.ADOPostavchik.FindPrior;

5. DateBD.ADOPostavchik.Append; DBGrid1.SetFocus

6. DateBD.ADOPostavchik.Cancel;

7. If DateBD.ADOPostavchik.Eof then abort; if messagebox(0,’Вы хотите удалить данную запись? ‘,’Запрос на удаление’,33)=1 then DateBD.ADOPostavchik.Delete

8. DateBD.ADOPostavchik.Post

 

Сделать те же кнопки в справочнике клиентов

 

Создаем пиктограммы в главной форме

Переходим в главную форму и с вкладки WIN выбираем элемент Imagelist

Дважды щелкаем по Image и в левом углу добавляем иконки 12х12.

В каждом подпункте меню в графе свойств Image выбираем нужную иконку.

 

Сортировка записей таблицы

Для сортировки записей используют 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;

Удалить: самому прописать.

 


Поделиться с друзьями:

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.256 с.