Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом_Ювелирная мастерская.doc
Скачиваний:
131
Добавлен:
06.12.2018
Размер:
3.17 Mб
Скачать
    1. Контрольный пример реализации проекта и его описание

Рассмотрим более детально работу с главной формой проекта при регистрации нового заказа клиента на изготовление ювелирного изделия.

При активации главной формы проекта (Приложение Е Рис.Е.1) автоматически выставляется период на текущую неделю. Для того чтобы выставить необходимый период за который должны отображаться заказы, необходимо выбрать на календаре (Рис. 2.19) нужную дату начала периода и нажать на кнопку «С» панели ПЕРИД, затем выбрать дату окончания периода и нажать кнопку «ПО» панели ПЕРИОД.

Рис. 2.19 – Выбор периода отображения данных либо формирования отчетности и документации

Регистрация нового заказа на изготовление ювелирных изделий происходит в форме диалога пользователя с системой.

Для добавления нового заказа, необходимо нажать на кнопку +ЗАКАЗ панели СОЗДАТЬ НОВЫЙ ЗАКАЗ (Рис. 2.20).

Рис. 2.20 – Панель СОЗДАТЬ НОВЫЙ ЗАКАЗ

При этом открывается форма КЛИЕНТЫ. После чего система предлагает пользователю выбрать необходимого клиента, на имя которого будет оформлен заказ (Рис. 2.21).

Рис. 2.21 – Предложение выбрать клиента

После выбора необходимого клиента и нажатия на кнопку ЗАКАЗ (добавить), система закрывает форму КЛИЕНТЫ и возвращается к главной форме проекта. При этом система предлагает пользователю добавить модель к заказу, выбрав её из каталога моделей. (Рис. 2.22).

Рис. 2.22 – Предложение добавить модель к заказу

После нажатия на кнопку +МОДЕЛЬ (Рис. 2.20) открывается форма МОДЕЛИ. Пользователь выбирает необходимую модель и нажимает на кнопку ДОБАВИТЬ МОДЕЛЬ К ЗАКАЗУ, расположенную в нижней правой части формы МОДЕЛИ. После выбора необходимой модели нажатия на кнопку ДОБАВИТЬ МОДЕЛЬ К ЗАКАЗУ, система закрывает форму МОДЕЛИ и возвращается к главной форме проекта. При этом система предлагает пользователю ввести дополнительную информацию об изделии (количество, описание и цену за грамм работы). (Рис. 2.23).

Рис. 2.23 – Предложение ввести дополнительную информацию о заказанном изделии

Если модель предусматривает наличие драгоценных камней, в таблице камней модели появляется дополнительное поле ОСТАТКИ (Рис. 2.24) с кнопкой для резервирования камней.

Рис. 2.24 – Кнопка для резервирования драгоценных камней

При нажатии на эту кнопку система проверяет наличие драгоценных камней на складе мастерской. Если камней не достаточно для изготовления выбранной модели, система предупреждает о необходимости новых поставок данного вида камней (Рис. 2.25) и предлагает выбрать другую модель (Рис. 2.26).

Рис. 2.25 – Предупреждение о недостатке драгоценных камней

Рис. 2.26 – Предложение выбрать другую модель

Если камней достаточно для изготовления изделия, регистрацию заказа можно закончить нажатием на кнопку СОХРАНИТЬ навигатора изделий.

После сохранения добавленного изделия, можно зарегистрировать сдаваемый клиентом металл для изготовления данного изделия. И при необходимости добавить металл мастерской, нажав на кнопку +МЕТАЛЛ (Рис. 2.20).

Для того чтобы аннулировать заказ, необходимо нажать на кнопку АННУЛИРОВАТЬ (Рис. 2.27). Если заказ уже выдан клиенту, аннулирование невозможно, о чем предупреждает соответствующее сообщение (Рис. 2.28).

Рис. 2.27 – Изменить статус заказа

Рис. 2.28 – Предупреждение «Аннулирование невозможно»

Для того чтобы отметить выполнение заказа, необходимо нажать на кнопку ВЫПОЛНИТЬ (Рис. 2.27). Если заказ аннулирован, его невозможно отметить, как выполнен, аналогично отмечается выдача заказа клиенту.

III ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ ПРОЕКТА

    1. Выбор и обоснование методики расчета экономической эффективности

    2. Расчет показателей экономической эффективности проекта

ЗАКЛЮЧЕНИЕ

В рамках дипломного проекта была разработана информационная система, предназначенная для автоматизации работы приёмщика ювелирной мастерской. Информационная система автоматизирует весь спектр задач приёмщика связанных с приёмом и выдачей заказов на изготовление ювелирных изделий, скупкой драгоценных металлов у населения, и регистрации поставок драгоценных камней.

Система позволяет решать следующие задачи:

  • Учет клиентов ювелирной мастерской

  • Поиск клиентов по базе (автозаполнение по первым буквам)

  • Учет заказов клиентов

  • Анализ данных о заказах

  • Аннулирование заказа

  • Поиск заказа по разным критериям

  • Расчет суммы заказа

  • Расчет потерь от переработки металла

  • Расчет лигатуры и припоя сплава

  • Оперативное планирование производственного процесса

  • Обновление номенклатуры камней

  • Обновление номенклатуры изделий

  • Автоматизация списания из остатков вставок (камней) при создании заказа на изделия с ними

  • Предупреждение о нехватке металла для выполнения заказа

  • Регистрация актов закупа драгметалла

  • Учет и подготовка внешней и внутренней отчетности

  • Учет работы ювелирной мастерской

Преимущества:

  • Возможность анализа работы ювелирной мастерской;

  • Развитые возможности фильтрации, сортировки и поиска информации;

  • Автоматизированный расчет необходимых параметров.

При проектировании базы данных использовалось такое мощное CASE-средство как ERwin 4.0, поскольку от того, насколько хорошо спроектирована база данных, зависит удобство ее дальнейшего использования и администрирования. Также использовалась система управления реляционными базами данных Microsoft Access, которая предоставляет пользователям функциональные возможности, позволяющие осуществлять доступ к важным данным, и производить их глубокий анализ, а также является серьезной средой разработки приложений. Для реализации пользовательского интерфейса была проведена разработка Windows-приложения с учетом принципов создания дружественных интерфейсов и программная реализация проекта с помощью визуальной среды проектирования Borland Delphi 2007, на объектно-ориентированном языке программирования Object Pascal. Для доступа к данным хранящимся в таблицах MS Access используется наиболее передовая технология доступа к данным – технология Microsoft ADO.

В процессе выполнения дипломной работы были достигнуты следующие результаты: спроектирована концептуальная модель базы данных, спроектирована логическая модель с учетом нормализации и ссылочной целостности данных, осуществлена выборка СУБД и построена физическая модель с определением полей и типов данных, выбран комплекс технических средств, реализованы основные программные модули системы, проведен анализ экологических и учет эргономических требований при проектировании пользовательского интерфейса.

Выбрана методика и проведен расчет показателей экономической эффективности проекта. НЕОБХОДИМО ДОПОЛНИТЬ ПОСЛЕ ВЫПОЛНЕНИЯ ТРЕТЬЕЙ ГЛАВЫ ДИПЛОМА!!!!

Таким образом, можно сделать вывод о целесообразности разработки данной системы.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Вендров А.М. Проектирование программного обеспечения экономических информационных систем, Финансы и статистика, М, 2002 г.

  2. Гэри Хансен, Джеймс Хансен. Базы данных. Разработка и управление, Бином, М, 2001 г.

  3. Джен Л. Харрингтон. Проектирование реляционных баз данных Лори, 2006 г.

  4. Джеффри Д. Ульман, Дженнифер Уидом. Основы реляционных баз данных, Лори, М, 2006 г.

  5. Информационные системы в экономике: учебник для студентов вузов / Под ред. Г. А. Титоренко. – 2-е изд., перераб. и доп. – М.: ЮНИТИ-ДАНА, 2008. – 463 с.

  6. Кен Хендерсон. Профессиональное руководство по SQL Server. Структура и реализация (+ CD-ROM), Вильямс, М, 2006 г.

  7. Маклаков С.В. BPwin и ERwin. CASE-средства разработки информационных систем. — М.: Диалог-МИФИ, 2000. — 256 с.

  8. Питер Роб, Карлос Коронел. Системы баз данных: проектирование, реализация и управление, БХВ-Петербург, Сп-б, 2004 г.

  9. Попов Ф.А., Ануфриева Н.Ю. Интеллектуализация пользовательских интерфейсов информационных систем // Вестник Томского государственного университета. - 2007.- №300(1).- с.130-133.

  10. Сибилёв В.Д. Проектирование баз данных: Учеб. пособие. — Томск: Томский межвузовский центр дистанционного образования, 2007. — 201 с.

  11. Скрипкин К.Г. Экономическая эффективность информационных систем. М.: ДМК Пресс, 2002.

  12. Сорокин А.В. Разработка баз данных, Питер, Сп-б, 2005 г.

  13. Томас Коннолли, Каролин Бегг, Анна Страчан. Базы данных. Проектирование, реализация и сопровождение. Теория и практика, Вильямс, М, 2001 г.

  14. Фаронов В. В. Программирование баз данных в Delphi 7. Учебный курс. – СПб.: Питер, 2006. – 459 с.: ил

  15. Элисон Балтер. Профессиональное программирование в Microsoft Office Access 2003 (+CD-ROM), Вильямс, М, 2006 г..

  16. Информационная модель данных: http://www.intuit.ru/department/database/rdbdev/2/rdbdev_2.html

  17. Классификаторы и системы кодирования: http://business-process.ru/is/theory/theory_classificator.html

  18. Повышение эффективности бизнеса предприятий средствами информационных технологий www.topsbi.ru

  19. Прайс-лист CASE-средств: http://www.itshop.ru/dynacatalog.asp?price=short

  20. Фирма 1С: http://v8.1c.ru/solutions

ПРИЛОЖЕНИЕ А

Рис. А.1 – Схема информационных потоков ювелирной мастерской «Злато»

ПРИЛОЖЕНИЕ Б

Рис. Б.1 – Модель «AS-TO-BE» («Как должно быть») А-0 деятельности ювелирной мастерской «Злато»

ПРИЛОЖЕНИЕ В

Рис. В.1 – Декомпозиция модели «AS-TO-BE» А-0 (модель «AS-TO-BE» А0)

ПРИЛОЖЕНИЕ Г

Рис. Г.1 – IDEF1X-диаграмма KB-уровня

ПРИЛОЖЕНИЕ Д

Рис. Д.1 – Физическая модель данных

ПРИЛОЖЕНИЕ Е

Рис. Е.1 – Главная форма программы

ПРИЛОЖЕНИЕ Ж

Рис. Ж.1 – Форма МОДЕЛИ

ПРИЛОЖЕНИЕ З

Рис. З.1 – Наряд-заказ

ПРИЛОЖЕНИЕ И

Рис. И.1 – Отчет о ПРИБЫЛИ

ПРИЛОЖЕНИЕ К. Листинг программного кода

МОДУЛЬ ГЛАВНОЙ ФОРМЫ (Uvelir)

unit Uvelir;

implementation

uses DM, UnitKlient, UnitModel, UnitIzdel, UnitSkupkaMetall,

UnitKVITANCE, UnitKamni, Unit2DragKamni, UnitRezervMetall,

UnitLIGATURA, UnitPRIPOI, UnitOSTATKI, UnitMetall, UnitCHEK;

{$R *.dfm}

//Просмотр каталога клиентов

procedure TForm1.SpButKlientClick(Sender: TObject);

begin

FormKlient.Show;

UnitKlient.FormKlient.SpButAddModelZAKAZ.Visible:=True;

UnitKlient.FormKlient.SpButAddKlientZakaz.Visible:=False;

end;

//Просмотр каталога моделей

procedure TForm1.SpButModelClick(Sender: TObject);

begin

FormModel.Show;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

FormSkupkaMet.Show;

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

FormKamni.Show;

end;

//Активация формы

procedure TForm1.FormActivate(Sender: TObject);

var

i: Integer;

begin

If start=0 then

Begin

start:=1;

dn:=DayOfWeek(Date);

For i:=0 to 6 do

begin

If dn=2 Then

begin

EditDateS.Text:=DateToStr(Date-i);

break;

end;

If dn=1 Then

begin

EditDateS.Text:=DateToStr(Date-6);

break;

end;

If dn>2 Then

dn:=dn-1;

end;

EditDatePo.Text:=DateToStr(Date);

IF DBEditModel.Text<>'' Then

begin

DM.DataModuleUvelir.ADOQueryKAMNIizdel.Close; DM.DataModuleUvelir.ADOQueryKAMNIizdel.Parameters.ParamByName('ART').Value:=DBEditModel.Text;

DM.DataModuleUvelir.ADOQueryKAMNIizdel.Open;

end;

DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZAKAZI.Open;

DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZakazIzd.Open;

End;

end;

procedure TForm1.SpeedButton5Click(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryKam.Close;

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=''; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Open;

FormDragKamni.Show;

end;

//Добавляем клиента к новому заказу

procedure TForm1.SpButNewZakazClick(Sender: TObject);

begin

DBNavigatorZakaz.BtnClick(nbInsert);

DBEditDateZ.Text:=DateToStr(Date);

FormKlient.Show;

UnitKlient.FormKlient.SpButAddKlientZakaz.Visible:=True;

UnitKlient.FormKlient.SpButAddModelZakaz.Visible:=False;

ShowMessage('Выберите клиента и нажмите кнопку "ЗАКАЗ-ДОБАВИТЬ"!');

end;

//Добавляем модель к новому заказу

procedure TForm1.SpButAddModelZAKAZClick(Sender: TObject);

begin

DBNavigatorZakazIzd.BtnClick(nbInsert);

DBEditZakzzIzd.Text:=DBEditZakaz.Text;

FormModel.Show;

UnitModel.FormModel.SpButAddModelZakaz.Visible:=True;

ShowMessage('Выберите модель и нажмите кнопку "ЗАКАЗ-ДОБАВИТЬ"!');

end;

//Отображение изделий текущего заказа

procedure TForm1.DBEditZakazChange(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Close; DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Parameters.ParamByName('KOD').Value:=DBEditZakaz.Text;

DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Open;

If DBEditZakaz.Text<>'' Then

begin

DM.DataModuleUvelir.ADOQuerySUMzakaz.Close; DM.DataModuleUvelir.ADOQuerySUMzakaz.Parameters.ParamByName('Z').Value:=DBEditZakaz.Text;

DM.DataModuleUvelir.ADOQuerySUMzakaz.Open;

end;

end;

//Отображение камней текущей модели

procedure TForm1.DBEditModelChange(Sender: TObject);

var

k: single;

begin

DM.DataModuleUvelir.ADOQueryZAKAZIzdModel.Close; DM.DataModuleUvelir.ADOQueryZAKAZIzdModel.Parameters.ParamByName('ART').Value:=DBEditModel.Text;

DM.DataModuleUvelir.ADOQueryZAKAZIzdModel.Open;

If DBEditModel.Text<>'' Then

begin

DM.DataModuleUvelir.ADOQueryUGAR.Close; DM.DataModuleUvelir.ADOQueryUGAR.Parameters.ParamByName('ART').Value:=DBEditModel.Text;

DM.DataModuleUvelir.ADOQueryUGAR.Open;

DM.DataModuleUvelir.ADOQueryMETALL.Close; DM.DataModuleUvelir.ADOQueryMETALL.Parameters.ParamByName('M').Value:=DBEditMet.Text; DM.DataModuleUvelir.ADOQueryMETALL.Parameters.ParamByName('P').Value:=DBEditProba.Text;

DM.DataModuleUvelir.ADOQueryMETALL.Open;

end;

DM.DataModuleUvelir.ADOQueryZakazKamni.Close;

DM.DataModuleUvelir.ADOQueryZakazKamni.Parameters.ParamByName('ART').Value:=DBEditModel.Text;

DM.DataModuleUvelir.ADOQueryZakazKamni.Open;

DBGridZakazKamni.Columns[9].Color:=clWindow;

DBGridZakazKamni.Columns[9].Visible:=False;

IF DBEditModel.Text<>'' Then

begin

DM.DataModuleUvelir.ADOQueryKAMNIizdel.Close; DM.DataModuleUvelir.ADOQueryKAMNIizdel.Parameters.ParamByName('ART').Value:=DBEditModel.Text;

DM.DataModuleUvelir.ADOQueryKAMNIizdel.Open;

end;

IF (DBTextCenaKam.Caption<>'') and (DBEditKol.Text<>'') Then LabelITOGOkam.Caption:=FloatToStr(StrToInt(DBEditKol.Text)*StrToFloat(DBTextCenaKam.Caption));

IF DBTextCenaKam.Caption='' Then

LabelITOGOkam.Caption:='0';

end;

//Отображение имени, адреса и телефонов текущего клиента

procedure TForm1.DBEditKodKlientaChange(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryTelKlient.Close;

DM.DataModuleUvelir.ADOQueryTelKlient.Parameters.ParamByName('TEL').Value:=DBEditKodKlienta.Text;

DM.DataModuleUvelir.ADOQueryTelKlient.Open;

DM.DataModuleUvelir.ADOQueryFIOKlient.Close; DM.DataModuleUvelir.ADOQueryFIOKlient.Parameters.ParamByName('KOD').Value:=DBEditKodKlienta.Text;

DM.DataModuleUvelir.ADOQueryFIOKlient.Open;

end;

//Резервирование металла

procedure TForm1.SpButRezMetClick(Sender: TObject);

var

kl: integer;

begin

If DBEditVip.Text<>'' Then

begin

ShowMessage('Заказ уже выполнен!!!!');

exit;

end;

If DBEditCena.Text='' Then

begin

ShowMessage('Введите цену за грамм работы!');

exit;

end;

If SpButAddModelZAKAZ.Visible=False Then

begin

SpButAddModelZAKAZ.Visible:=True;

//DBNavigatorZakazIzd.BtnClick(nbPost);

end;

try

kl:=StrToInt(DBEditKol.Text);

except

on EConvertError do

begin

ShowMessage('Введите колличество изделий!');

DBEditKol.SetFocus;

exit;

end;

end;

FormRezervMet.Show;

end;

//Резервирование камней

procedure TForm1.DBGridZakazKamniEditButtonClick(Sender: TObject);

var

kl,kn,rez:integer;

begin

DM.DataModuleUvelir.ADOQueryKam.Close; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Камень']; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Форма']; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Цвет']; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Размер'];

DM.DataModuleUvelir.ADOQueryKam.Open;

DBNavigator1.BtnClick(nbEdit);

FormDragKamni.Show; DBGridZakazKamni.DataSource.DataSet.FieldValues['РЕЗЕРВ']:=Unit2DragKamni.FormDragKamni.EditOSTREZ.Text;

FormDragKamni.Close;

try rez:=StrToInt(DBGridZakazKamni.DataSource.DataSet.FieldValues['РЕЗЕРВ']);

except

on EConvertError do

begin

ShowMessage('В поле остатков ничего не введено!');

exit;

end;

end;

try

kl:=StrToInt(DBEditKol.Text);

except

on EConvertError do

begin

ShowMessage('Введите колличество изделий!');

DBEditKol.SetFocus;

exit;

end;

end;

DBGridZakazKamni.Columns[9].Width:=95;

DBGridZakazKamni.Columns[9].Visible:=True;

DBGridZakazKamni.DataSource.DataSet.FieldValues['НЕОБХОДИМО']:= IntToStr(StrToInt(DBEditKol.Text)*StrToInt(DBGridZakazKamni.DataSource.DataSet.FieldValues['Количество'])); kn:=StrToInt(DBGridZakazKamni.DataSource.DataSet.FieldValues['НЕОБХОДИМО']);

If (rez-kn)<0 then

begin

DBGridZakazKamni.Columns[9].Color:=$00ADAFFA;

ShowMessage('Для создания заказа необходимо '+DBGridZakazKamni.DataSource.DataSet.FieldValues['НЕОБХОДИМО']+

' камня '+DBGridZakazKamni.DataSource.DataSet.FieldValues['Камень']+

' Так как на остатках '+DBGridZakazKamni.DataSource.DataSet.FieldValues['РЕЗЕРВ']+' камней, то продолжение создания заказа НЕВОЗМОЖНО!!!');

DBNavigatorZakazIzd.BtnClick(nbCancel);

SpButRezMet.Visible:=False;

SpButAddModelZAKAZ.Visible:=True;

Form1.SpButNewZakaz.Visible:=True;

DBGridZakazKamni.Columns[8].Visible:=True;

end;

end;

//Калькулятор ЛИГАТУРА

procedure TForm1.SpButLigaturaClick(Sender: TObject);

begin

FormLIGATURA.Show;

end;

//Калькулятор ПРИПОЙ

procedure TForm1.SpButPRIPOIClick(Sender: TObject);

begin

FormPRIPOI.Show;

end;

//Выполнить заказ

procedure TForm1.SpButVIPClick(Sender: TObject);

begin

IF DBGridZakaz.DataSource.DataSet.FieldValues['Анулировать']=True Then

begin

ShowMessage('Заказ анулирован!');

exit;

end;

IF DBEditVip.Text<>'' Then

begin

ShowMessage('Заказ уже выполнен!');

exit;

end;

DBNavigatorZakaz.BtnClick(nbEdit);

DBEditVip.Text:=DateToStr(Date);

DBGridZakaz.DataSource.DataSet.FieldValues['Выполнен']:=1;

DBNavigatorZakaz.BtnClick(nbPost);

end;

//Выдать заказ

procedure TForm1.SpButVIDClick(Sender: TObject);

begin

IF DBGridZakaz.DataSource.DataSet.FieldValues['Анулировать']=True Then

begin

ShowMessage('Заказ анулирован!');

exit;

end;

IF DBEditVip.Text='' Then

begin

ShowMessage('Заказ еще не выполнен!');

exit;

end;

If DBEditVid.Text<>'' Then

begin

ShowMessage('Заказ уже выдан!');

exit;

end;

DBNavigatorZakaz.BtnClick(nbEdit);

DBGridZakaz.DataSource.DataSet.FieldValues['Выдан']:=1;

DBEditVid.Text:=DateToStr(Date);

DBNavigatorZakaz.BtnClick(nbPost);

end;

procedure TForm1.SpButRaschetClick(Sender: TObject);

var k: single;

begin

if DBEditCena.Text='' Then

begin

ShowMessage('Для рассчета цены изделия введите цену за грамм работы!');

DBEditCena.SetFocus;

exit;

end;

IF DBEditModel.Text<>'' Then

BEGIN

DM.DataModuleUvelir.ADOQueryVesMetMASTER.Close; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('N').Value:=DBEditZakzzIzd.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('ART').Value:=DBEditModel.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('R').Value:=DBEditRazmer.Text;

DM.DataModuleUvelir.ADOQueryVesMetMASTER.Open;

If DBEditVesmaster.Text='' Then

EditVesMaster.Text:='0'

Else

begin

k:=StrToFloat(DBEditVesmaster.Text);

EditVesMaster.Text:=Format('%f',[k]);

end;

DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('N').Value:=DBEditZakzzIzd.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('ART').Value:=DBEditModel.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('R').Value:=DBEditRazmer.Text;

DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Open;

If DBEditVesKlient.Text='' Then

EditVesKlientUgar.Text:='0'

Else

begin

k:=StrToFloat(DBEditVesKlient.Text)-StrToFloat(DBEditVesKlient.Text)*StrToInt(DBEditUGAR.Text)/100;

EditVesKlientUgar.Text:=Format('%f',[k]);

end; k:=(StrToFloat(EditVesKlientUgar.Text)+StrToFloat(EditVesMaster.Text))*StrToFloat(DBEditCena.Text);

EditCenaRab.Text:=Format('%f',[k]);

k:=StrToFloat(EditVesMaster.Text)*StrToFloat(DBEditCenaMET.Text);

EditCeneDobMET.Text:= Format('%f',[k]);

DBNavigatorZakazIzd.BtnClick(nbEdit); k:=StrToFloat(EditCenaRab.Text)+StrToFloat(EditCeneDobMET.Text)+StrToFloat(LabelITOGOkam.Caption);

DBTextCenaIZD.Caption:=Format('%f',[k]);

DBEditCenaIZD.Text:=DBTextCenaIZD.Caption;

DBNavigatorZakazIzd.BtnClick(nbPost);

END;

end;

//Каталог металлов

procedure TForm1.SpButMETALLClick(Sender: TObject);

begin

FormMetall.Show;

end;

//Напечатать чек

procedure TForm1.SpButCHEKClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Close;

DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Parameters.ParamByName('KOD').Value:=DBEditZakaz.Text;

DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Open;

DM.DataModuleUvelir.ADOQueryFIOKlient.Close;

DM.DataModuleUvelir.ADOQueryFIOKlient.Parameters.ParamByName('KOD').Value:=DBEditKodKlienta.Text;

DM.DataModuleUvelir.ADOQueryFIOKlient.Open;

DM.DataModuleUvelir.ADOQuerySUMzakaz.Close;

DM.DataModuleUvelir.ADOQuerySUMzakaz.Parameters.ParamByName('Z').Value:=DBEditZakaz.Text;

DM.DataModuleUvelir.ADOQuerySUMzakaz.Open;

UnitCHEK.FormCHEK.QuickRepCHEK.Preview;

end;

//Анулировать заказ

procedure TForm1.SpButAnulClick(Sender: TObject);

begin

if DBEditVid.Text<>'' Then

begin

ShowMessage('Заказ уже выдан!');

exit;

end;

DBNavigatorZakaz.BtnClick(nbEdit);

DBGridZakaz.DataSource.DataSet.FieldValues['Анулировать']:=1;

DBNavigatorZakaz.BtnClick(nbPost);

end;

//Вставить период С

procedure TForm1.BitBtnSClick(Sender: TObject);

begin

EditDateS.Text:=DateToStr(MonCal.Date);

DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZAKAZI.Open;

DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZakazIzd.Open;

end;

//Вставить период ПО

procedure TForm1.BitBtnPoClick(Sender: TObject);

begin

EditDatePo.Text:=DateToStr(MonCal.Date);

DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZAKAZI.Open;

DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZakazIzd.Open;

end;

//При выходе из программы обнуляем счетчик

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

start:=0;

end;

//Фильтр по заказам

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

If RadioGroup1.ItemIndex=0 Then

begin

DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZAKAZI.Open;

DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZakazIzd.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZAKAZI; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZakazIzd;

end;

If RadioGroup1.ItemIndex=1 Then

begin

DM.DataModuleUvelir.ADOQueryZO.Close; DM.DataModuleUvelir.ADOQueryZO.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZO.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZO.Open; DM.DataModuleUvelir.ADOQueryZIO.Close; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZIO.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZO;

DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIO;

end;

If RadioGroup1.ItemIndex=2 Then

begin

DM.DataModuleUvelir.ADOQueryZVIP.Close; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZVIP.Open;

DM.DataModuleUvelir.ADOQueryZIVIP.Close; DM.DataModuleUvelir.ADOQueryZIVIP.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIVIP.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZIVIP.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZVIP; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIVIP;

end;

If RadioGroup1.ItemIndex=3 Then

begin

DM.DataModuleUvelir.ADOQueryZVIPNVID.Close; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZVIPNVID.Open;

DM.DataModuleUvelir.ADOQueryZIVIPNVID.Close; DM.DataModuleUvelir.ADOQueryZIVIPNVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIVIPNVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZIVIPNVID.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZVIPNVID; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIVIPNVID;

end;

If RadioGroup1.ItemIndex=4 Then

begin

DM.DataModuleUvelir.ADOQueryZVIPVID.Close; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZVIPVID.Open;

DM.DataModuleUvelir.ADOQueryZIVIPVID.Close; DM.DataModuleUvelir.ADOQueryZIVIPVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIVIPVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZIVIPVID.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZVIPVID; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIVIPVID;

end;

If RadioGroup1.ItemIndex=5 Then

begin

DM.DataModuleUvelir.ADOQueryZA.Close; DM.DataModuleUvelir.ADOQueryZA.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZA.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZA.Open;

DM.DataModuleUvelir.ADOQueryZIA.Close; DM.DataModuleUvelir.ADOQueryZIA.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIA.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZIA.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZA;

DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIA;

end;

end;

//Отчет о прибыли

procedure TForm1.SpButOtchetClick(Sender: TObject);

var

FileName, FileNameSave, a, b: OleVariant;

T, TT: integer;

S: string;

SUM, SUM1: single;

begin

T:=1;

SUM1:=0;

DM.DataModuleUvelir.ADOQueryZVIP.Close; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZVIP.Open;

DM.DataModuleUvelir.ADOQueryZVIPVID.Close; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZVIPVID.Open;

DM.DataModuleUvelir.ADOQueryZVIPNVID.Close; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZVIPNVID.Open;

FileName:='C:\Ювелирная мастерская\ОТЧЕТЫ\ОТЧЕТ О ПРИБЫЛИ.doc';

FileNameSave:='C:\Ювелирная мастерская\ОТЧЕТЫ\ОТЧЕТ О ПРИБЫЛИ_от '+

DateToStr(Date)+'.doc';

DM.DataModuleUvelir.WordApplication1.Connect;

If DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['НомерЗаказа']=Null Then

begin

ShowMessage('За данный период не было выполненно ни одного заказа');

exit;

end

Else

begin

Try

DM.DataModuleUvelir.WordApplication1.Documents.Open(FileName,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);

DM.DataModuleUvelir.WordDocument1.SaveAs(FileNameSave);

a:=41; DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(EditDateS.Text);

a:=65;

DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(' '+EditDatePo.Text);

//Вывод всех выполненных заказов

With DM.DataModuleUvelir.ADOQueryZVIP do

begin

First;

while not EOF do

begin

S:=IntToStr(T); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,1).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,2).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['ФИОклиента']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,3).Range.InsertBefore(S);

DM.DataModuleUvelir.ADOQuerySUMZOT.Close; DM.DataModuleUvelir.ADOQuerySUMZOT.Parameters.ParamByName('Z').Value:=DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['НомерЗаказа'];

DM.DataModuleUvelir.ADOQuerySUMZOT.Open;

S:=DBEdit1.Text;

if DBEdit1.Text<>'' Then

begin

SUM:=StrToFloat(DBEdit1.Text);

SUM1:=SUM1+SUM;

end; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,4).Range.InsertBefore(S);

DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Rows.Add(EmptyParam);

inc(T);

Next;

end;

end;

DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,3).Select;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,3).Range.InsertBefore('ИТОГО НА СУММУ :');

DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,4).Select;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14;

S:=FloatToStr(SUM1); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,4).Range.InsertBefore(S);

T:=1;

SUM1:=0;

//Вывод всех выданных заказов

With DM.DataModuleUvelir.ADOQueryZVIPVID do

begin

First;

while not EOF do

begin

S:=IntToStr(T); DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,1).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZVIPVID.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,2).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZVIPVID.FieldValues['ФИОклиента']; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,3).Range.InsertBefore(S);

DM.DataModuleUvelir.ADOQuerySUMZOT.Close; DM.DataModuleUvelir.ADOQuerySUMZOT.Parameters.ParamByName('Z').Value:=DM.DataModuleUvelir.ADOQueryZVIPVID.FieldValues['НомерЗаказа'];

DM.DataModuleUvelir.ADOQuerySUMZOT.Open;

S:=DBEdit1.Text;

if DBEdit1.Text<>'' Then

begin

SUM:=StrToFloat(DBEdit1.Text);

SUM1:=SUM1+SUM;

end; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,4).Range.InsertBefore(S);

DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Rows.Add(EmptyParam);

inc(T);

Next;

end;

end;

DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,3).Select;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,3).Range.InsertBefore('ИТОГО НА СУММУ :');

DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,4).Select;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14;

S:=FloatToStr(SUM1); DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,4).Range.InsertBefore(S);

T:=1;

SUM1:=0;

//Вывод всех невыданных заказов

With DM.DataModuleUvelir.ADOQueryZVIPNVID do

begin

First;

while not EOF do

begin

S:=IntToStr(T); DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,1).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZVIPNVID.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,2).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZVIPNVID.FieldValues['ФИОклиента']; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,3).Range.InsertBefore(S);

DM.DataModuleUvelir.ADOQuerySUMZOT.Close; DM.DataModuleUvelir.ADOQuerySUMZOT.Parameters.ParamByName('Z').Value:=DM.DataModuleUvelir.ADOQueryZVIPNVID.FieldValues['НомерЗаказа'];

DM.DataModuleUvelir.ADOQuerySUMZOT.Open;

S:=DBEdit1.Text;

if DBEdit1.Text<>'' Then

begin

SUM:=StrToFloat(DBEdit1.Text);

SUM1:=SUM1+SUM;

end; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,4).Range.InsertBefore(S);

DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Rows.Add(EmptyParam);

inc(T);

Next;

end;

end;

DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,3).Select;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,3).Range.InsertBefore('ИТОГО НА СУММУ :');

DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,4).Select;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;

DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14;

S:=FloatToStr(SUM1); DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,4).Range.InsertBefore(S);

T:=1;

SUM1:=0;

Except

begin

ShowMessage('Документа с именем "ОТЧЕТ О ПРИБЫЛИ"'+

' на диске С в папке Ювелирная мастерская\ОТЧЕТЫ не существует! '+

' Либо у него другое расширение! Либо он удален! Создайте новый документ Word на диске С '+

' в папке Ювелирная мастерская\ОТЧЕТЫ с именем '+

'"ОТЧЕТ О ПРИБЫЛИ" и расширением .doc');

exit;

end; DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);

end;

End;

end;

//Печать наряд-заказа

procedure TForm1.SpButNARYDClick(Sender: TObject);

var

FileName, FileNameSave, a, b: OleVariant;

T, TT, N, i: integer;

S: string;

begin

T:=1;

N:=1;

DM.DataModuleUvelir.ADOQueryZIO.Close; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D2').Value:=EditDatePo.Text;

DM.DataModuleUvelir.ADOQueryZIO.Open;

FileName:='C:\Ювелирная мастерская\НАРЯД-ЗАКАЗ\НАРЯД.doc';

FileNameSave:='C:\Ювелирная мастерская\НАРЯД-ЗАКАЗ\НАРЯД_от '+

DateToStr(Date)+'.doc';

DM.DataModuleUvelir.WordApplication1.Connect;

If DM.DataModuleUvelir.ADOQueryZIO.FieldValues['НомерЗаказа']=Null Then

begin

ShowMessage('За данный период не было оформлено ни одного заказа');

exit;

end

Else

begin

Try

DM.DataModuleUvelir.WordApplication1.Documents.Open(FileName,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);

DM.DataModuleUvelir.WordDocument1.SaveAs(FileNameSave);

a:=30; DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(EditDateS.Text+' ');

a:=44;

DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(' '+EditDatePo.Text);

//Вывод всех заказанных изделий

With DM.DataModuleUvelir.ADOQueryZIO do

begin

First;

while not EOF do

begin

S:=IntToStr(N); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,1).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,2).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['АртикулМодели']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,3).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['Количество']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,4).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['РазмерДлина']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,5).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['ВесИзделия']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,6).Range.InsertBefore(S);

//Камни изделия

DM.DataModuleUvelir.ADOQueryKAMREPORT.Close; DM.DataModuleUvelir.ADOQueryKAMREPORT.Parameters.ParamByName('ART').Value:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['АртикулМодели'];

DM.DataModuleUvelir.ADOQueryKAMREPORT.Open;

TT:=0;

With DM.DataModuleUvelir.ADOQueryKAMREPORT do

begin

First;

while not EOF do

begin

S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Камень']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,7).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Форма']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,8).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Цвет']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,9).Range.InsertBefore(S);

S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Размер']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,10).Range.InsertBefore(S); S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Количество']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,11).Range.InsertBefore(S); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Rows.Add(EmptyParam);

inc(TT);

Next;

end;

end;

If DM.DataModuleUvelir.ADOQueryZIO.FieldValues['Пометки']<>Null Then

begin

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['Пометки']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,12).Range.InsertBefore(' '+S);

end;

If DM.DataModuleUvelir.ADOQueryZIO.FieldValues['ВесНаВыходе']<>Null Then

begin

S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['ВесНаВыходе']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,13).Range.InsertBefore(' '+S);

end;

//Объединием ячейки

IF TT>1 Then

begin DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,1).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,1)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,2).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,2)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,3).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,3)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,4).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,4)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,5).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,5)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,6).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,6)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,12).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,12)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,13).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,13));

end;

T:=T+TT;

IF TT=0 Then

begin DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Rows.Add(EmptyParam);

inc(T);

end;

inc(N);

Next;

end;

end;

Except

begin

ShowMessage('Документа с именем "НАРЯД"'+

' на диске С в папке Ювелирная мастерская\НАРЯД-ЗАКАЗ не существует! '+

' Либо у него другое расширение! Либо он удален! Создайте новый документ Word на диске С '+

' в папке Ювелирная мастерская\НАРЯД-ЗАКАЗ с именем '+

'"НАРЯД" и расширением .doc');

exit;

end; DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);

end;

End;

end;

//Поиск по номеру заказа

procedure TForm1.Edit1Change(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryZNomer.Close; DM.DataModuleUvelir.ADOQueryZNomer.Parameters.ParamByName('N').Value:=Edit1.Text;

DM.DataModuleUvelir.ADOQueryZNomer.Open;

DM.DataModuleUvelir.ADOQueryZizdNomer.Close; DM.DataModuleUvelir.ADOQueryZizdNomer.Parameters.ParamByName('N').Value:=Edit1.Text;

DM.DataModuleUvelir.ADOQueryZizdNomer.Open;

DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZNomer; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZizdNomer;

end;

end.

Модуль формы ДРАГОЦЕННЫЕ КАМНИ (Unit2DragKamni)

unit Unit2DragKamni;

implementation

uses Uvelir, DM, UnitKamni;

{$R *.dfm}

//Активация формы

procedure TFormDragKamni.FormActivate(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamPrihod.Open;

DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;

DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamRashod.Open;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Close;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;

If DBEditPrihod.Text='' Then

EditPrihod2.Text:='0'

Else

EditPrihod2.Text:=DBEditPrihod.Text;

If DBEditRashod.Text='' Then

EditRashod2.Text:='0'

Else

EditRashod2.Text:=DBEditRashod.Text;

If DBEditRezerv.Text='' Then

EditRezerv2.Text:='0'

Else

EditRezerv2.Text:=DBEditRezerv.Text;

EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));

EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));

SpButSavePoz.Visible:=False;

SpButDeletPozKam.Visible:=True;

SpButAddPoz.Visible:=True;

DBNavigatorOstKam.Enabled:=True;

DBEditKam.ReadOnly:=True;

DBEditKamForm.ReadOnly:=True;

DBEditKamCvet.ReadOnly:=True;

DBEditKamRazmer.ReadOnly:=True;

DBEditCena.ReadOnly:=False;

end;

//Передвижение по записям

procedure TFormDragKamni.DBNavigatorOstKamClick(Sender: TObject;

Button: TNavigateBtn);

begin

DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamPrihod.Open;

DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;

DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text;

DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamRashod.Open;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;

If DBEditPrihod.Text='' Then

EditPrihod2.Text:='0'

Else

EditPrihod2.Text:=DBEditPrihod.Text;

If DBEditRashod.Text='' Then

EditRashod2.Text:='0'

Else

EditRashod2.Text:=DBEditRashod.Text;

If DBEditRezerv.Text='' Then

EditRezerv2.Text:='0'

Else

EditRezerv2.Text:=DBEditRezerv.Text;

EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));

EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));

end;

//Обработка щелчка по строке таблицы

procedure TFormDragKamni.DBGridOstatokKamCellClick(Column: TColumn);

begin

DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamPrihod.Open;

DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;

DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamRashod.Open;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;

If DBEditPrihod.Text='' Then

EditPrihod2.Text:='0'

Else

EditPrihod2.Text:=DBEditPrihod.Text;

If DBEditRashod.Text='' Then

EditRashod2.Text:='0'

Else

EditRashod2.Text:=DBEditRashod.Text;

If DBEditRezerv.Text='' Then

EditRezerv2.Text:='0'

Else

EditRezerv2.Text:=DBEditRezerv.Text;

EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));

EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));

end;

//Фильтр по каталогу камней

procedure TFormDragKamni.DBLookupComBoxKamFClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryKam.Close; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=DBLookupComBoxKamF.Text; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Open;

DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text;

DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamPrihod.Open;

DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamRashod.Open;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);

DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;

If DBEditPrihod.Text='' Then

EditPrihod2.Text:='0'

Else

EditPrihod2.Text:=DBEditPrihod.Text;

If DBEditRashod.Text='' Then

EditRashod2.Text:='0'

Else

EditRashod2.Text:=DBEditRashod.Text;

If DBEditRezerv.Text='' Then

EditRezerv2.Text:='0'

Else

EditRezerv2.Text:=DBEditRezerv.Text;

EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));

EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));

SpButSbros.Visible:=True;

end;

//Отображение фактических остатков

procedure TFormDragKamni.EditOstatokChange(Sender: TObject);

begin

If StrToInt(EditOstatok.Text)=0 Then

begin

ShowMessage('Фактических остатков данного вида камней, не достаточно для резервирования заказов!.Нужны поставки данных драгоценных камней');

EditOstatok.Color:=clSkyBlue;

end;

If StrToInt(EditOstatok.Text)<0 Then

begin

ShowMessage('Фактических остатков не хватает!');

EditOstatok.Color:=clRed;

end;

If StrToInt(EditOstatok.Text)>0 Then

EditOstatok.Color:=clMoneyGreen;

end;

//Добавляем новый камень

procedure TFormDragKamni.SpButAddPozClick(Sender: TObject);

begin

SpButSavePoz.Visible:=True;

SpButDeletPozKam.Visible:=False;

SpButAddPoz.Visible:=False;

DBEditKam.ReadOnly:=False;

DBEditKamForm.ReadOnly:=False;

DBEditKamCvet.ReadOnly:=False;

DBEditKamRazmer.ReadOnly:=False;

DBEditCena.ReadOnly:=False;

DBGridOstatokKam.ReadOnly:=False;

ShowMessage('Введите данные о новом камне и сохраните!');

DBNavigatorOstKam.BtnClick(nbLast);

DBNavigatorOstKam.BtnClick(nbInsert);

DBEditKam.SetFocus;

end;

//Сохраняем новый камень

procedure TFormDragKamni.SpButSavePozClick(Sender: TObject);

begin

If DBEditKam.Text='' Then

begin

ShowMessage('Введите название камня!');

DBEditKam.SetFocus;

exit;

end;

If DBEditKamCvet.Text='' Then

begin

ShowMessage('Введите цвет камня!');

DBEditKamCvet.SetFocus;

exit;

end;

If DBEditKamForm.Text='' Then

begin

ShowMessage('Введите форму камня!');

DBEditKamForm.SetFocus;

exit;

end;

If DBEditKamRazmer.Text='' Then

begin

ShowMessage('Введите размеп камня!');

DBEditKamRazmer.SetFocus;

exit;

end;

If DBEditCena.Text='' Then

begin

ShowMessage('Введите цену камня!');

DBEditCena.SetFocus;

exit;

end;

try

PROVERKA:=StrToFloat(DBEditCena.Text); //Считываем введенную цену камня

except

on EConvertError do

begin

ShowMessage('В поле для цены одного камня введено не числовое значение!');

DBEditCena.Text := '';

exit;

end;

end;

try

PROVERKA:=StrToFloat(DBEditKamRazmer.Text); //Считываем введенный размер камня

except

on EConvertError do

begin

ShowMessage('В поле размер камня введено не числовое значение!');

DBEditKamRazmer.Text := '';

exit;

end;

end;

DBNavigatorOstKam.BtnClick(nbPost);

SpButSavePoz.Visible:=False;

SpButDeletPozKam.Visible:=True;

SpButAddPoz.Visible:=True;

DBNavigatorOstKam.Enabled:=True;

DBEditKam.ReadOnly:=True;

DBEditKamForm.ReadOnly:=True;

DBEditKamCvet.ReadOnly:=True;

DBEditKamRazmer.ReadOnly:=True;

DBGridOstatokKam.ReadOnly:=True;;

DBEditCena.ReadOnly:=True;

end;

//Изменение цены камней

procedure TFormDragKamni.SpButDeletPozKamClick(Sender: TObject);

begin

DBNavigatorOstKam.BtnClick(nbEdit);

SpButSavePoz.Visible:=True;

SpButDeletPozKam.Visible:=False;

SpButAddPoz.Visible:=False;

DBNavigatorOstKam.Enabled:=False;

DBEditKam.ReadOnly:=False;

DBEditKamForm.ReadOnly:=False;

DBEditKamCvet.ReadOnly:=False;

DBEditKamRazmer.ReadOnly:=False;

DBEditCena.ReadOnly:=True;

ShowMessage('Измените цену камня и сохраните изменения!');

DBEditCena.SetFocus;

end;

//Сброс параметров поиска

procedure TFormDragKamni.SpButSbrosClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryKam.Close;

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=''; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:='';

DM.DataModuleUvelir.ADOQueryKam.Open;

DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;

DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;

If DBEditKamRazmer.Text<>'' Then DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text)

Else DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=0;

DM.DataModuleUvelir.ADOQueryKamPrihod.Open;

DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;

If DBEditKamRazmer.Text<>'' Then DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text)

Else DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=0;

DM.DataModuleUvelir.ADOQueryKamRashod.Open;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;

If DBEditKamRazmer.Text<>'' Then DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text)

Else DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=0;

DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;

If DBEditPrihod.Text='' Then

EditPrihod2.Text:='0'

Else

EditPrihod2.Text:=DBEditPrihod.Text;

If DBEditRashod.Text='' Then

EditRashod2.Text:='0'

Else

EditRashod2.Text:=DBEditRashod.Text;

If DBEditRezerv.Text='' Then

EditRezerv2.Text:='0'

Else

EditRezerv2.Text:=DBEditRezerv.Text;

EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));

EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));

SpButSbros.Visible:=False;

end;

//Отображение остатков с учетом зарезервированных камней

procedure TFormDragKamni.EditOSTREZChange(Sender: TObject);

begin

If StrToInt(EditOSTREZ.Text)=0 Then

begin

ShowMessage('Остатков с учетом зарезервированных камней не достаточно для продолжения работы!.Нужны поставки данных драгоценных камней!');

EditOSTREZ.Color:=clSkyBlue;

end;

If StrToInt(EditOSTREZ.Text)<0 Then

begin

ShowMessage('На данный момент зарезервированно больше камней чем, есть в наличии! Срочно нужны поставки камней!');

EditOSTREZ.Color:=clRed;

end;

If StrToInt(EditOSTREZ.Text)>0 Then

EditOSTREZ.Color:=clMoneyGreen;

end;

end.

Модуль формы МЕТАЛЛЫ (UnitMetall)

unit UnitMetall;

implementation

uses Uvelir, UnitModel, DM, UnitOSTATKI;

{$R *.dfm}

//Активация формы

procedure TFormMetall.FormActivate(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryOSTMET.Close;

DM.DataModuleUvelir.ADOQueryOSTMET.Open;

end;

//Отчет по остаткам

procedure TFormMetall.SpButReportClick(Sender: TObject);

begin

UnitOSTATKI.FormOSTMET.QuickRepOSTMET.Preview;

end;

end.

Модуль формы ПОСТАВКА КАМНЕЙ (UnitKamni)

unit UnitKamni;

implementation

uses Uvelir, DM, UnitPOSTAVSHIK, Unit2DragKamni;

{$R *.dfm}

//Отображение поставщиков и поставок при изменении Фильтра по поставщикам

procedure TFormKamni.DBLookupComBoxPostKamClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryPostKam.Close; DM.DataModuleUvelir.ADOQueryPostKam.Parameters.ParamByName('POST').Value:=DBLookupComBoxPostKam.Text;

DM.DataModuleUvelir.ADOQueryPostKam.Open;

DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBLookupComBoxPostKam.Text;

DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;

end;

//Добавление новой поставки

procedure TFormKamni.SpButAddPostClick(Sender: TObject);

begin

DBNavigatorPost.BtnClick(nbInsert); DBGridPostKam.DataSource.DataSet.FieldValues['ДатаПоставки']:=DateToStr(Date); DBGridPostKam.DataSource.DataSet.FieldValues['Поставщик']:=DBEditPost.Text;

DBNavigatorPost.BtnClick(nbPost);

ShowMessage('Добавьте позиции к поставке! (Кнопка "ПОЗИЦИЯ")');

end;

//Отображение данных о текущей поставке

procedure TFormKamni.DBEditKodPostChange(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryPostKamPoz.Close; DM.DataModuleUvelir.ADOQueryPostKamPoz.Parameters.ParamByName('KOD').Value:=DBEditKodPost.Text;

DM.DataModuleUvelir.ADOQueryPostKamPoz.Open;

end;

//Отображение данных о камнях при изменении фильтра камней

procedure TFormKamni.DBLookupComBoxKamFClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryKatalogKam.Close; DM.DataModuleUvelir.ADOQueryKatalogKam.Parameters.ParamByName('KAM').Value:=DBLookupComBoxKamF.Text;

DM.DataModuleUvelir.ADOQueryKatalogKam.Open;

end;

//Добавление новой позиции к поставке камней

procedure TFormKamni.SpButAddPozClick(Sender: TObject);

begin

DBNavigatorPostKamPoz.BtnClick(nbInsert);

DBEditKodPostPoz.Text:=DBEditKodPost.Text;

DBEdiKamPoz.Text:=DBEditKamMod.Text;

DBEditKamFormPoz.Text:=DBEditFormaKamMod.Text;

DBEditKamCvetPoz.Text:=DBEditCvetKamMod.Text;

DBEditKamRazmPoz.Text:=DBEditRazKamMod.Text;

ShowMessage('Введите колличество камней и цену одного камня, а затем сохраните добавленную позицию! (Кнопка "СОХРАНИТЬ.позиция")');

DBEditKamKolPoz.ReadOnly:=False;

DBEditKamCenaPoz.ReadOnly:=False;

DBEditKamKolPoz.SetFocus;

SpButSavePoz.Visible:=True;

SpButDeletPozKam.Visible:=False;

DBNavigatorPost.Enabled:=False;

end;

//Сохранение добавленной позиции к поставке камней

procedure TFormKamni.SpButSavePozClick(Sender: TObject);

begin

If DBEditKamKolPoz.Text='' Then

begin

ShowMessage('Введите колличество камней!');

DBEditKamKolPoz.SetFocus;

exit;

end;

If DBEditKamCenaPoz.Text='' Then

begin

ShowMessage('Введите цену одного камня!');

DBEditKamCenaPoz.SetFocus;

exit;

end;

try

k:=StrToInt(DBEditKamKolPoz.Text); //Считываем введенное колличество камней

except

on EConvertError do

begin

ShowMessage('В поле для колличества камней введено неверное значение! Колличество камней должно быть целым положительным числом!');

DBEditKamKolPoz.Text := '';

exit;

end;

end;

try

c:=StrToFloat(DBEditKamCenaPoz.Text); //Считываем введенную цену камня

except

on EConvertError do

begin

ShowMessage('В поле для цены одного камня введено не числовое значение!');

DBEditKamCenaPoz.Text := '';

exit;

end;

end;

DBNavigatorPostKamPoz.BtnClick(nbPost);

DBEditKamKolPoz.ReadOnly:=True;

DBEditKamCenaPoz.ReadOnly:=True;

SpButSavePoz.Visible:=False;

DM.DataModuleUvelir.ADOQueryPostKamPoz.Close;

DM.DataModuleUvelir.ADOQueryPostKamPoz.Parameters.ParamByName('KOD').Value:=DBEditKodPost.Text;

DM.DataModuleUvelir.ADOQueryPostKamPoz.Open;

DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;

DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;

SpButDeletPozKam.Visible:=True;

DBNavigatorPost.Enabled:=True;

end;

//Удалить позицию из поставки камней

procedure TFormKamni.SpButDeletPozKamClick(Sender: TObject);

begin

DBNavigatorPostKamPoz.BtnClick(nbDelete);

DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;

DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;

end;

//Переход к форме поставщики камней

procedure TFormKamni.SpButPostClick(Sender: TObject);

begin

FormPOSTAVSHIK.Show;

end;

//Обновление данных о поставках текущего поставщика

procedure TFormKamni.DBEditPostChange(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;

DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;

end;

//Активация формы

procedure TFormKamni.FormActivate(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryPostKam.Close; DM.DataModuleUvelir.ADOQueryPostKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;

DM.DataModuleUvelir.ADOQueryPostKam.Open;

DM.DataModuleUvelir.ADOQueryPostKamPoz.Close; DM.DataModuleUvelir.ADOQueryPostKamPoz.Parameters.ParamByName('KOD').Value:=DBEditKodPost.Text;

DM.DataModuleUvelir.ADOQueryPostKamPoz.Open;

end;

//Переход к форме остптки драгоценных камней

procedure TFormKamni.SpButDragKamniClick(Sender: TObject);

begin

FormDragKamni.Show;

end;

end.

Модуль формы ПОСТАВЩИКИ (UnitPOSTAVSHIK)

unit UnitPOSTAVSHIK;

implementation

uses DM, UnitKamni;

{$R *.dfm}

//Поиск поставщиков

procedure TFormPOSTAVSHIK.SpButPoiskPostClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryPOSTAVSHIK.Close; DM.DataModuleUvelir.ADOQueryPOSTAVSHIK.Parameters.ParamByName('POST').Value:=EditPoiskPost.Text;

DM.DataModuleUvelir.ADOQueryPOSTAVSHIK.Open;

DBEditPost.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryPOSTAVSHIK;

SpButSbros.Visible:=True;

end;

//Сброс параметров поиска

procedure TFormPOSTAVSHIK.SpButSbrosClick(Sender: TObject);

begin

DBEditPost.DataSource.DataSet:=DM.DataModuleUvelir.ADOTablePOSTAVSHIK;

SpButSbros.Visible:=False;

EditPoiskPost.Text:='';

end;

//Закрытие формы

procedure TFormPOSTAVSHIK.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

DM.DataModuleUvelir.ADOQueryPostKamList.Close;

DM.DataModuleUvelir.ADOQueryPostKamList.Open;

FormKamni.DBLookupComBoxPostKam.ListSource.DataSet.Close;

FormKamni.DBLookupComBoxPostKam.ListSource.DataSet.Open;

DM.DataModuleUvelir.ADOQueryPostKam.Close; DM.DataModuleUvelir.ADOQueryPostKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;

DM.DataModuleUvelir.ADOQueryPostKam.Open;

end;

end.

Модуль формы СКУПКА МЕТАЛЛОВ (UnitSkupkaMetall)

unit UnitSkupkaMetall;

implementation

uses Uvelir, UnitMetall, DM, UnitAddPoz, UnitKVITANCE;

{$R *.dfm}

//Процедура отображения позиций квитанции и итоговой суммы

procedure TFormSkupkaMet.DBEditKvitSkupChange(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQuerySkupkaMet.Close; DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;

DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySumKvit.Open;

end;

//Поиск квитанции по дате

procedure TFormSkupkaMet.SpButPoiskKvitDateClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQuerySkupDate.Close;

DM.DataModuleUvelir.ADOQuerySkupDate.Parameters.ParamByName('DATE').Value:=DateToStr(DTPickPoiskDATE.Date);

DM.DataModuleUvelir.ADOQuerySkupDate.Open;

DBEditKvitSkup.DataSource.DataSet:=DM.DataModuleUvelir.ADOQuerySkupDate;

end;

//Поиск квитанции по коду

procedure TFormSkupkaMet.SpButPoiskKviyKodClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQuerySkupKvit.Close;

DM.DataModuleUvelir.ADOQuerySkupKvit.Parameters.ParamByName('KVITANCIY').Value:=EditPoiskKOD.Text;

DM.DataModuleUvelir.ADOQuerySkupKvit.Open;

DBEditKvitSkup.DataSource.DataSet:=DM.DataModuleUvelir.ADOQuerySkupKvit;

end;

//Процедура открытия отчета

procedure TFormSkupkaMet.SpButReportClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQuerySkupkaMet.Close;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;

DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySumKvit.Open;

UnitKVITANCE.FormKVITANCE.QuickRepKVITANCE.Preview;

end;

//Процедура добавления новой квитанции

procedure TFormSkupkaMet.SpButAddKvitClick(Sender: TObject);

begin

DBNavigatorSkupKvit.BtnClick(nbInsert);

DBEditSkDate.Text:=DateToStr(Date);

end;

//Процедура сохраняет позицию в квитанцию

procedure TFormSkupkaMet.SpButSavePozClick(Sender: TObject);

begin

DBNavigatorSkupKvit.Enabled:=True;

DBNavigatorPosKvit.Enabled:=True;

DBNavigatorPosKvit.BtnClick(nbPost);

SpButDelPoz.Visible:=True;

SpButAddKvit.Visible:=True;

SpButReport.Visible:=True;

SpButMET.Visible:=True;

SpButSavePoz.Visible:=False;

SpButAddPoz.Visible:=True;

DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySumKvit.Open;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Close; DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;

end;

//Процедура добавляет новую позицию в квитанцию

procedure TFormSkupkaMet.SpButAddPozClick(Sender: TObject);

begin

DBNavigatorPosKvit.BtnClick(nbInsert);

SpButDelPoz.Visible:=False;

SpButAddKvit.Visible:=False;

SpButReport.Visible:=False;

SpButMET.Visible:=False;

SpButAddPoz.Visible:=False;

FormAddPos.Show;

end;

//Сброс параметров поиска

procedure TFormSkupkaMet.SpButSbrosClick(Sender: TObject);

begin

DBEditKvitSkup.DataSource.DataSet:=DM.DataModuleUvelir.ADOTableSkupkaMet;

EditPoiskKOD.Text:='';

end;

//Открываем остатки металлов

procedure TFormSkupkaMet.SpButMETClick(Sender: TObject);

begin

FormMetall.Show;

end;

procedure TFormSkupkaMet.SpButDelPozClick(Sender: TObject);

begin

DBNavigatorPosKvit.BtnClick(nbDelete);

DM.DataModuleUvelir.ADOQuerySkupkaMet.Close;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;

DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;

DM.DataModuleUvelir.ADOQuerySumKvit.Open;

end;

end.

Модуль формы ДОБАВИТЬ ПОЗИЦИЮ (UnitAddPoz)

unit UnitAddPoz;

implementation

uses Uvelir, UnitSkupkaMetall, DM;

{$R *.dfm}

//Отображаем список проб текущего металла

procedure TFormAddPos.DBLookupComBoxMetPozClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLookupComBoxMetPoz.Text;

DM.DataModuleUvelir.ADOQueryProba.Open;

end;

//Записывает введенные данные в новую позицию квитанции

procedure TFormAddPos.BitBtnOKPozClick(Sender: TObject);

begin

If (EditVesPoz.Text='') Then

begin

ShowMessage('Введите вeс изделий!');

EditVesPoz.SetFocus;

exit;

end;

If (EditKolPoz.Text='') Then

begin

ShowMessage('Введите колличество изделий!');

EditKolPoz.SetFocus;

exit;

end;

If (EditCenaPoz.Text='') Then

begin

ShowMessage('Введите цену за грамм добаляемого металла!');

EditCenaPoz.SetFocus;

exit;

end;

If (DBLookupComBoxMetPoz.Text='') Then

begin

ShowMessage('Выберите металл!');

exit;

end;

If (ComBoxVidPoz.Text='') Then

begin

ShowMessage('Выберите вид добаляемой позиции!');

exit;

end;

If (DBLookupComBoxProbaPoz.Text='') Then

begin

ShowMessage('Выберите пробу металла добаляемой позиции!');

exit;

end;

If (EditKomment.Text='') Then

begin

ShowMessage('Введите описание добаляемой позиции!');

exit;

end;

try

Kol:=StrToInt(EditKolPoz.Text); //Считываем введенное колличество

except

on EConvertError do

begin

ShowMessage('В поле для колличества изделий введено неверное значение! Колличество изделий должно быть целым положительным числом!');

EditKolPoz.Text := '';

exit;

end;

end;

try

Cena:=StrToFloat(EditCenaPoz.Text); //Считываем цену за грамма

except

on EConvertError do

begin

ShowMessage('В поле для цены одного грамма добавляемого металла введено не числовое значение!');

EditCenaPoz.Text := '';

exit;

end;

end;

try

Ves:=StrToFloat(EditVesPoz.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса добавляемого металла введено не числовое значение!');

EditVesPoz.Text := '';

exit;

end;

end; UnitSkupkaMetall.FormSkupkaMet.DBEditSkMet.Text:=DBLookupComBoxMetPoz.Text;

UnitSkupkaMetall.FormSkupkaMet.DBEditSkVid.Text:=ComBoxVidPoz.Text; UnitSkupkaMetall.FormSkupkaMet.DBEditSkProba.Text:=DBLookupComBoxProbaPoz.Text;

UnitSkupkaMetall.FormSkupkaMet.DBEditSKVes.Text:=EditVesPoz.Text;

UnitSkupkaMetall.FormSkupkaMet.DBEditSkKol.Text:=EditKolPoz.Text;

UnitSkupkaMetall.FormSkupkaMet.DBEditSkCena.Text:=EditCenaPoz.Text;

UnitSkupkaMetall.FormSkupkaMet.DBEditKommentPoz.Text:=EditKomment.Text; UnitSkupkaMetall.FormSkupkaMet.DBEditKodKvit.Text:=UnitSkupkaMetall.FormSkupkaMet.DBEditKvitSkup.Text;

FormAddPos.Close;

UnitSkupkaMetall.FormSkupkaMet.SpButSavePoz.Visible:=True;

FormAddPos.Close;

ShowMessage('Сохраните добавленную позицию!');

end;

//Закрытие формы

procedure TFormAddPos.FormClose(Sender: TObject; var Action: TCloseAction);

begin

UnitSkupkaMetall.FormSkupkaMet.DBNavigatorSkupKvit.Visible:=True;

UnitSkupkaMetall.FormSkupkaMet.DBNavigatorPosKvit.Visible:=True;

UnitSkupkaMetall.FormSkupkaMet.SpButDelPoz.Visible:=True;

UnitSkupkaMetall.FormSkupkaMet.SpButAddKvit.Visible:=True;

UnitSkupkaMetall.FormSkupkaMet.SpButReport.Visible:=True;

UnitSkupkaMetall.FormSkupkaMet.SpButMET.Visible:=True;

UnitSkupkaMetall.FormSkupkaMet.SpButAddPoz.Visible:=True;

// FormAddPos.Close;

end;

end.

Модуль формы ЗАРЕЗЕРВИРОВАТЬ МЕТАЛЛ (UnitRezervMetall)

unit UnitRezervMetall;

implementation

uses Uvelir, DM, UnitLIGATURA, UnitPRIPOI;

{$R *.dfm}

//Активация формы

procedure TFormRezervMet.FormActivate(Sender: TObject);

var

k: integer;

v1, v2: single;

begin

EditM.Text:=Uvelir.Form1.DBEditModel.Text;

EditR.Text:=Uvelir.Form1.DBEditRazmer.Text;

EditV.Text:=Uvelir.Form1.DBEditVes.Text;

EditK.Text:=Uvelir.Form1.DBEditKol.Text;

EditMet.Text:=Uvelir.Form1.DBEditMet.Text;

EditPr.Text:=Uvelir.Form1.DBEditProba.Text;

EditZ.Text:=Uvelir.Form1.DBEditZakzzIzd.Text;

EditUgarIZD.Text:=Uvelir.Form1.DBEditUGAR.Text;

DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Close; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('N').Value:= EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Open;

DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Open;

DM.DataModuleUvelir.ADOQueryNeobhVES.Close; DM.DataModuleUvelir.ADOQueryNeobhVES.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryNeobhVES.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryNeobhVES.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryNeobhVES.Open;

DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Open;

GroupBox4.Caption:='ИТОГО ВЕС '+EditPr.Text+' ПРОБЫ';

DM.DataModuleUvelir.ADOQueryVesMetMASTER.Close; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryVesMetMASTER.Open;

GroupBox5.Caption:='ИТОГО ВЕС '+EditPr.Text+' ПРОБЫ';

If DBTextmetKlient.Caption<>'' Then

begin

v1:=StrToFloat(DBTextmetKlient.Caption)-StrToFloat(DBTextmetKlient.Caption)*StrToFloat(EditUgarIZD.Text)/100;

LabelSUgarom.Caption:=Format('%f',[v1]);

end

Else

LabelSUgarom.Caption:='0';

If DBTextmetKlient.Caption='' Then

DBTextMetSklient.Caption:=DBTextITOGOmet.Caption

Else

begin

v1:=StrToFloat(DBTextITOGOmet.Caption)-StrToFloat(LabelSUgarom.Caption);

DBTextMetSklient.Caption:=Format('%f',[v1]);

end;

If DBTextITOGOmetMaster.Caption='' Then

DBTextMetMaster.Caption:=DBTextMetSklient.Caption

Else

begin

v1:=StrToFloat(DBTextMetSklient.Caption)-StrToFloat(DBTextITOGOmetMaster.Caption);

DBTextMetMaster.Caption:=Format('%f',[v1]);

end;

end;

//Добавление металла клиента

procedure TFormRezervMet.SpButAddPozClick(Sender: TObject);

begin

DBNavigatorMetKLIENT.BtnClick(nbInsert);

DBGrid2.DataSource.DataSet.FieldValues['НомерЗаказа']:=EditZ.Text;

DBGrid2.DataSource.DataSet.FieldValues['АрттикулМодели']:=EditM.Text;

DBGrid2.DataSource.DataSet.FieldValues['РазмерДлина']:=EditR.Text;

SpButSavePoz.Visible:=True;

SpButAddPoz.Visible:=False;

ShowMessage('Выберите вид, металл, пробу вес!');

ComBoxVid.SetFocus;

end;

//Удаление металла клиента

procedure TFormRezervMet.SpButDelPozClick(Sender: TObject);

begin

DBNavigatorMetKLIENT.BtnClick(nbDelete);

end;

//Список проб текущего металла

procedure TFormRezervMet.DBLComboBoxMetKlientClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLComboBoxMetKlient.Text;

DM.DataModuleUvelir.ADOQueryProba.Open;

end;

//Сохранить металл клиента

procedure TFormRezervMet.SpButSavePozClick(Sender: TObject);

var

k: single;

begin

If ComBoxVid.Text='' Then

begin

ShowMessage('Выберите вид сдаваемого металла!');

ComBoxVid.SetFocus;

exit;

end;

If DBLComboBoxMetKlient.Text='' Then

begin

ShowMessage('Выберите сдаваемый металл!');

exit;

end;

If DBLComBoxProba.Text='' Then

begin

ShowMessage('Выберите пробу сдаваемого металла!');

exit;

end;

try

k:=StrToFloat(EditVes.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса металла введено не числовое значение!');

EditVes.Text := '';

EditVes.SetFocus;

exit;

end;

end;

DBGrid2.DataSource.DataSet.FieldValues['Вид']:=ComBoxVid.Text; DBGrid2.DataSource.DataSet.FieldValues['Металл']:=DBLComboBoxMetKlient.Text; DBGrid2.DataSource.DataSet.FieldValues['ЗаказМеталлКлиента.Проба']:=DBLComBoxProba.Text;

DBGrid2.DataSource.DataSet.FieldValues['Вес']:=EditVes.Text;

DBNavigatorMetKLIENT.BtnClick(nbPost);

DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Open;

DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Open;

If DBTextmetKlient.Caption<>'' Then

begin

k:=StrToFloat(DBTextmetKlient.Caption)-StrToFloat(DBTextmetKlient.Caption)*StrToFloat(EditUgarIZD.Text)/100;

LabelSUgarom.Caption:=Format('%f',[k]);

end

Else

LabelSUgarom.Caption:='0';

If DBTextmetKlient.Caption='' Then

DBTextMetSklient.Caption:=DBTextITOGOmet.Caption

Else

begin

k:=StrToFloat(DBTextITOGOmet.Caption)-StrToFloat(LabelSUgarom.Caption);

DBTextMetSklient.Caption:=Format('%f',[k]);

end;

end;

//Добавление металла мастерской

procedure TFormRezervMet.SpButMetMasterAddClick(Sender: TObject);

begin

DBNavigatorMetMASTER.BtnClick(nbInsert);

DBGrid1.DataSource.DataSet.FieldValues['НомерЗаказа']:=EditZ.Text;

DBGrid1.DataSource.DataSet.FieldValues['АртикулМодели']:=EditM.Text;

DBGrid1.DataSource.DataSet.FieldValues['РазмерДлина']:=EditR.Text;

SpButMetMasterSave.Visible:=True;

SpButMetMasterAdd.Visible:=False;

ShowMessage('Выберите металл и пробу, и введите вес добавляемого металла!');

EditMetMasterVES.SetFocus;

end;

//Удаление металла мастерской

procedure TFormRezervMet.SpButMetMasterDeleteClick(Sender: TObject);

begin

DBNavigatorMetMASTER.BtnClick(nbDelete);

end;

//Сохранить металл мастерской

procedure TFormRezervMet.SpButMetMasterSaveClick(Sender: TObject);

var

k: single;

begin

If DBLComBoxMetMaster.Text='' Then

begin

ShowMessage('Выберите добавляемый металл!');

exit;

end;

If DBLComBoxMetMasterPROBA.Text='' Then

begin

ShowMessage('Выберите пробу добавляемого металла!');

exit;

end;

try

k:=StrToFloat(EditMetMasterVES.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса металла введено не числовое значение!');

EditMetMasterVES.Text := '';

EditMetMasterVES.SetFocus;

exit;

end;

end; DBGrid1.DataSource.DataSet.FieldValues['Металл']:=DBLComBoxMetMaster.Text; DBGrid1.DataSource.DataSet.FieldValues['ЗаказМеталлМастерской.Проба']:=DBLComBoxMetMasterPROBA.Text;

DBGrid1.DataSource.DataSet.FieldValues['Вес']:=EditMetMasterVES.Text;

DBNavigatorMetMASTER.BtnClick(nbPost);

DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Close; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Open;

DM.DataModuleUvelir.ADOQueryVesMetMASTER.Close; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;

DM.DataModuleUvelir.ADOQueryVesMetMASTER.Open;

SpButMetMasterSave.Visible:=False;

SpButMetMasterAdd.Visible:=True;

If DBTextITOGOmetMaster.Caption='' Then

DBTextMetMaster.Caption:=DBTextMetSklient.Caption

Else

begin

k:=StrToFloat(DBTextMetSklient.Caption)-StrToFloat(DBTextITOGOmetMaster.Caption);

DBTextMetMaster.Caption:=Format('%f',[k]);

end;

end;

//Отображаем остаток металла

procedure TFormRezervMet.DBLComBoxMetMasterPROBAClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryOSTATOK.Close; DM.DataModuleUvelir.ADOQueryOSTATOK.Parameters.ParamByName('M').Value:=DBLComBoxMetMaster.Text; DM.DataModuleUvelir.ADOQueryOSTATOK.Parameters.ParamByName('P').Value:=DBLComBoxMetMasterPROBA.Text;

DM.DataModuleUvelir.ADOQueryOSTATOK.Open;

If DBEditOST.Text='' Then

EditOST.Text:='0'

Else

EditOST.Text:=DBEditOST.Text;

end;

procedure TFormRezervMet.DBLComBoxMetMasterClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLComBoxMetMaster.Text;

DM.DataModuleUvelir.ADOQueryProba.Open;

end;

//Калькулятор ЛИГАТУРА

procedure TFormRezervMet.SpButLigaturaClick(Sender: TObject);

begin

FormLIGATURA.Show

end;

//Калькулятор ПРИПОЙ

procedure TFormRezervMet.SpButPRIPOIClick(Sender: TObject);

begin

FormPRIPOI.Show;

end;

end.

Модуль формы МОДЕЛИ (UnitModel)

unit UnitModel;

implementation

uses Uvelir, UnitRazmerModel, UnitKamniModel, UnitIzdel,

UnitMetall, DM;

{$R *.dfm}

//Отображаем данные о текущей модели при активации формы

procedure TFormModel.FormActivate(Sender: TObject);

begin

//Отображаем камни текущей модели

DM.DataModuleUvelir.ADOQueryModKamni.Close; DM.DataModuleUvelir.ADOQueryModKamni.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;

DM.DataModuleUvelir.ADOQueryModKamni.Open;

//Отображаем размеры текущей модели

DM.DataModuleUvelir.ADOQueryModRazmer.Close; DM.DataModuleUvelir.ADOQueryModRazmer.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;

DM.DataModuleUvelir.ADOQueryModRazmer.Open;

//Загружаем эскиз модели

Try ImageModelEskiz.Picture.LoadFromFile('model\'+DBEditArtikul.Text+'.jpg');

Except

begin

ShowMessage('Для текущей модели нет изображения!');

ImageModelEskiz.Picture.LoadFromFile('model\model.jpg');

exit;

end;

End;

end;

//Процедура отображает данные о текущей модели

procedure TFormModel.DBEditArtikulChange(Sender: TObject);

begin

//Отображаем камни текущей модели

DM.DataModuleUvelir.ADOQueryModKamni.Close; DM.DataModuleUvelir.ADOQueryModKamni.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;

DM.DataModuleUvelir.ADOQueryModKamni.Open;

//Отображаем размеры текущей модели

DM.DataModuleUvelir.ADOQueryModRazmer.Close; DM.DataModuleUvelir.ADOQueryModRazmer.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;

DM.DataModuleUvelir.ADOQueryModRazmer.Open;

If DBEditArtikul.Text<>'' Then

begin

DM.DataModuleUvelir.ADOQueryUGAR.Close;

DM.DataModuleUvelir.ADOQueryUGAR.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;

DM.DataModuleUvelir.ADOQueryUGAR.Open;

end;

//Отображаем эскиз текущей модели

If DBEditArtikul.Text<>'' Then

//Загружаем эскиз модели

Try ImageModelEskiz.Picture.LoadFromFile('model\'+DBEditArtikul.Text+'.jpg');

Except

begin

ShowMessage('Для текущей модели нет изображения!');

ImageModelEskiz.Picture.LoadFromFile('model\model.jpg');

exit;

end;

End;

IF DBCheckBox1.Checked=True Then

SpButKamenModel.Visible:=True;

IF DBCheckBox1.Checked=False Then

SpButKamenModel.Visible:=False;

end;

//Процедура поиска модели по артикулу

procedure TFormModel.SpButPoiskModelClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryModel.Close;

DM.DataModuleUvelir.ADOQueryModel.Parameters.ParamByName('ART').Value:=EditPoiskModel.Text;

DM.DataModuleUvelir.ADOQueryModel.Open;

DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryModel;

end;

//Процедура сбрасывает параметры поиска

procedure TFormModel.BitBtnSbrosClick(Sender: TObject);

begin

DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOTabModel;

EditPoiskModel.Text:='';

end;

//Процедура сбрасывает параметры фильтров

procedure TFormModel.BitBtnSbrosFClick(Sender: TObject);

begin

DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOTabModel;

end;

//Процедура для фильтров по моделям

procedure TFormModel.BitBtnFiltrClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryModF.Close; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('IZD').Value:=DBLookupComBoxIzdList.Text; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('MET').Value:=DBLookupComBoxIzdMet.Text;

If ComBoxKamen.Text='Изделия с камнями' Then

begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM0').Value:=1; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM1').Value:=1;

end;

If ComBoxKamen.Text='Изделия без камней' Then

begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM1').Value:=0;

end;

If ComBoxKamen.Text='Все изделия' Then

begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM1').Value:=1;

end;

If ComBoxIzdR.Text='Изделия литьём' Then

begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT1').Value:=0;

end;

If ComBoxIzdR.Text='Ручная работа' Then

begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT0').Value:=1; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT1').Value:=1;

end;

If ComBoxIzdR.Text='Все изделия' Then

begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT1').Value:=1;

end;

DM.DataModuleUvelir.ADOQueryModF.Open;

DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryModF;

end;

//Процедура отображает размеры текущей модели

procedure TFormModel.SpButRazmerModelClick(Sender: TObject);

begin

UnitRazmerModel.FormRazmer.DBEditArtRazmer.Text:=DBEditArtikul.Text;

FormRazmer.Show;

end;

//Процедура отображает камни текущей модели

procedure TFormModel.SpButKamenModelClick(Sender: TObject);

begin

FormKamniModel.Show;

end;

//Процедура добавления новой модели

procedure TFormModel.SpButAddModClick(Sender: TObject);

begin

ShowMessage('Введите артикул новой модели!');

EditNewArt.Visible:=True;

EditNewArt.SetFocus;

DBNavigatorModel.BtnClick(nbInsert);

DBNavigatorModel.Enabled:=False;

SpButSaveMOD.Visible:=True;

SpButAddMod.Visible:=False;

DBLookupComBoxIzdAdd.Visible:=True;

DBLookupComBoxMetAdd.Visible:=True;

DBLookupComBoxProbaAdd.Visible:=True;

DBEditArtikul.Visible:=False;

DBEditModelIzd.Visible:=False;

DBEditModelMetal.Visible:=False;

DBEditModelProba.Visible:=False;

end;

procedure TFormModel.DBLookupComBoxMetAddClick(Sender: TObject);

begin

//Отображаем список проб текущего металла

DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLookupComBoxMetAdd.Text;

DM.DataModuleUvelir.ADOQueryProba.Open;

end;

procedure TFormModel.SpeedButton1Click(Sender: TObject);

begin

FormIzdel.Show;

end;

procedure TFormModel.SpeedButton2Click(Sender: TObject);

begin

FormMetall.Show;

end;

//Добавляем модель к заказу

procedure TFormModel.SpButAddModelZakazClick(Sender: TObject);

begin

Uvelir.Form1.DBEditModel.Text:=DBEditArtikul.Text; Uvelir.Form1.DBEditRazmer.Text:=DBGridModelRazmer.DataSource.DataSet.FieldValues['РазмерДлина']; Uvelir.Form1.DBEditVes.Text:=DBGridModelRazmer.DataSource.DataSet.FieldValues['Вес'];

FormModel.Close;

Form1.Show;

ShowMessage('Введите необходимое количество изделий, описание и цену за грамм работы!');

Uvelir.Form1.DBEditKol.SetFocus;

If DBCheckBox1.Checked=True Then

begin

Uvelir.Form1.DBGridZakazKamni.Columns[8].Width:=80;

Uvelir.Form1.DBGridZakazKamni.Columns[8].Visible:=True;

end;

Uvelir.Form1.SpButAddModelZAKAZ.Visible:=True;

Uvelir.Form1.SpButRezMet.Visible:=True;

end;

//Процедура сохранения новой модели

procedure TFormModel.SpButSaveMODClick(Sender: TObject);

begin

DBEditArtikul.Text:=EditNewArt.Text;

DBEditModelIzd.Text:=DBLookupComBoxIzdAdd.Text;

DBEditModelMetal.Text:=DBLookupComBoxMetAdd.Text;

DBEditModelProba .Text:=DBLookupComBoxProbaAdd.Text;

EditNewArt.Visible:=False;

DBLookupComBoxIzdAdd.Visible:=False;

DBLookupComBoxMetAdd.Visible:=False;

DBLookupComBoxProbaAdd.Visible:=False;

DBEditArtikul.Visible:=True;

DBEditModelIzd.Visible:=True;

DBEditModelMetal.Visible:=True;

DBEditModelProba.Visible:=True;

SpButSaveMOD.Visible:=False;

SpButAddMod.Visible:=True;

DBNavigatorModel.Enabled:=True;

DBNavigatorModel.BtnClick(nbPost);

end;

//Отменить добавление новой модели

procedure TFormModel.SpeedButton3Click(Sender: TObject);

begin

EditNewArt.Visible:=False;

DBLookupComBoxIzdAdd.Visible:=False;

DBLookupComBoxMetAdd.Visible:=False;

DBLookupComBoxProbaAdd.Visible:=False;

SpButSaveMOD.Visible:=False;

SpButAddMod.Visible:=True;

DBEditArtikul.Visible:=True;

DBEditModelIzd.Visible:=True;

DBEditModelMetal.Visible:=True;

DBEditModelProba.Visible:=True;

DBNavigatorModel.Enabled:=True;

DBNavigatorModel.BtnClick(nbCancel);

end;

end.

Модуль формы РАЗМЕР МОДЕЛИ (UnitRazmerModel)

unit UnitRazmerModel;

interface

implementation

uses Uvelir, UnitModel, DM;

{$R *.dfm}

procedure TFormRazmer.SpButAddRModClick(Sender: TObject);

begin

DBNavigatorRazmer.BtnClick(nbInsert);

DBEditArtRazmer.Text:=UnitModel.FormModel.DBEditArtikul.Text;

end;

end.

Модуль формы КАМНИ МОДЕЛИ (UnitKamniModel)

unit UnitKamniModel;

implementation

uses Uvelir, UnitModel, DM;

{$R *.dfm}

procedure TFormKamniModel.SpButAddKamModClick(Sender: TObject);

begin

DBNavigatorKamModel.BtnClick(nbInsert);

DBEditArtModKam.Text:=UnitModel.FormModel.DBEditArtikul.Text;

DBEditModKamAdd.Text:=DBEditKamMod.Text;

DBEditModKamFAdd.Text:=DBEditFormaKamMod.Text;

DBEditModKamCAdd.Text:=DBEditCvetKamMod.Text;

DBEditModKamRAdd.Text:=DBEditRazKamMod.Text;

ShowMessage('Введите колличество камней данной модели!');

DBEditModKamKAdd.SetFocus;

end;

procedure TFormKamniModel.BitBtnFiltrKamModClick(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryKatalogKam.Close;

DM.DataModuleUvelir.ADOQueryKatalogKam.Parameters.ParamByName('KAM').Value:=DBLookupComBoxKamF.Text;

DM.DataModuleUvelir.ADOQueryKatalogKam.Open;

end;

end.

Модуль формы КЛИЕНТЫ (UnitKlient)

unit UnitKlient;

implementation

uses DM, Uvelir;

{$R *.dfm}

//Процедура отображает номера телефонов текущего клиента

procedure TFormKlient.DBEditKodKlientChange(Sender: TObject);

begin

DM.DataModuleUvelir.ADOQueryTelKlient.Close; DM.DataModuleUvelir.ADOQueryTelKlient.Parameters.ParamByName('TEL').Value:=DBEditKodKlient.Text;

DM.DataModuleUvelir.ADOQueryTelKlient.Open;

end;

//Добавить заказ

procedure TFormKlient.SpButAddKlientZakazClick(Sender: TObject);

begin

Uvelir.Form1.DBEditKodKlienta.Text:=DBEditKodKlient.Text;

SpButAddKlientZakaz.Visible:=False;

FormKlient.Close;

Form1.Show;

ShowMessage('Выберите модель изделия для заказа. КНОПКА "Новое изделие"!');

Uvelir.Form1.SpButAddModelZAKAZ.Visible:=True;

Uvelir.Form1.SpButNewZakaz.Visible:=False;

Uvelir.Form1.DBNavigatorZakaz.BtnClick(nbPost);

end;

//Просмотр заказов клиента

procedure TFormKlient.SpButAddModelZAKAZClick(Sender: TObject);

begin

FormKlient.Close;

Form1.Show;

DM.DataModuleUvelir.ADOQueryZklient.Close; DM.DataModuleUvelir.ADOQueryZklient.Parameters.ParamByName('K').Value:=DBEditKodKlient.Text;

DM.DataModuleUvelir.ADOQueryZklient.Open; Uvelir.Form1.DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZklient;

end;

//Поиск клиента по фамилии

procedure TFormKlient.SpButPoiskKlientClick(Sender: TObject);

begin

If EditPoiskModel.Text='' Then

begin

ShowMessage('Введите первые буквы фамилии клиента!');

EditPoiskModel.SetFocus;

end

ELSE

begin

DM.DataModuleUvelir.ADOQueryKlient.Close; DM.DataModuleUvelir.ADOQueryKlient.Parameters.ParamByName('KLIENT').Value:=EditPoiskModel.Text;

DM.DataModuleUvelir.ADOQueryKlient.Open;

end;

DBEditKodKlient.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryKlient;

end;

//Сброс параметров поиска

procedure TFormKlient.BitBtnSbrosClick(Sender: TObject);

begin

DBEditKodKlient.DataSource.DataSet:=DM.DataModuleUvelir.ADOTabKlient;

end;

//Автозаполнение по первым буквам фамилии

procedure TFormKlient.EditPoiskModelChange(Sender: TObject);

begin

DBEditKodKlient.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryKlient;

DM.DataModuleUvelir.ADOQueryKlient.Close; DM.DataModuleUvelir.ADOQueryKlient.Parameters.ParamByName('KLIENT').Value:=EditPoiskModel.Text;

DM.DataModuleUvelir.ADOQueryKlient.Open;

end;

end.

Модуль формы КАТАЛОГ ИЗДЕЛИЙ (UnitIzdel)

unit UnitIzdel;

implementation

uses Uvelir, UnitModel, DM;

{$R *.dfm}

//Фильтр по изделиям с камнями

procedure TFormIzdel.CheckBox1Click(Sender: TObject);

begin

If CheckBox2.Checked=False Then

begin

if CheckBox1.Checked=False Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDBKAM;

if CheckBox1.Checked=True Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDSKAM;

end;

If CheckBox2.Checked=True Then

begin

if CheckBox1.Checked=False Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRBKAM;

if CheckBox1.Checked=True Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRSKAM;

end;

end;

//Фильтр по изделиям ручной работы

procedure TFormIzdel.CheckBox2Click(Sender: TObject);

begin

If CheckBox2.Checked=False Then

begin

if CheckBox1.Checked=False Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDBKAM;

if CheckBox1.Checked=True Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDSKAM;

end;

If CheckBox2.Checked=True Then

begin

if CheckBox1.Checked=False Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRBKAM;

if CheckBox1.Checked=True Then

DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRSKAM;

end;

end;

//Добавить изделие

procedure TFormIzdel.SpButAddPozClick(Sender: TObject);

begin

DBNavigatorIzd.BtnClick(nbInsert);

DBNavigatorIzd.Enabled:=False;

SpButSavePoz.Visible:=True;

SpButAddPoz.Visible:=False;

end;

procedure TFormIzdel.SpButSavePozClick(Sender: TObject);

begin

If CheckBox1.Checked=True Then

DBGrid1.DataSource.DataSet.FieldValues['НаличиеКамней']:=1;

If CheckBox1.Checked=False Then

DBGrid1.DataSource.DataSet.FieldValues['НаличиеКамней']:=0;

If CheckBox2.Checked=True Then

DBGrid1.DataSource.DataSet.FieldValues['РучнаяРабота']:=1;

If CheckBox2.Checked=False Then

DBGrid1.DataSource.DataSet.FieldValues['РучнаяРабота']:=0;

DBNavigatorIzd.BtnClick(nbPost);

DBNavigatorIzd.Enabled:=True;

SpButSavePoz.Visible:=False;

SpButAddPoz.Visible:=True;

end;

//Отменить

procedure TFormIzdel.SpButDelPozClick(Sender: TObject);

begin

DBNavigatorIzd.BtnClick(nbCancel);

DBNavigatorIzd.Enabled:=True;

SpButSavePoz.Visible:=False;

SpButAddPoz.Visible:=True;

end;

end.

Модуль формы КАЛЬКУЛЯТОР ПРИПОЯ (UnitPRIPOI)

unit UnitPRIPOI;

implementation

uses Uvelir, DM, UnitRezervMetall;

{$R *.dfm}

//Рассчет припоя для золота 999 пробы

procedure TFormPRIPOI.SpBut999Click(Sender: TObject);

var

k1, k2, k3, k4: single;

begin

IF EditVes999.Text='' Then

begin

ShowMessage('Введите вес золота 999 пробы!');

EditVes999.SetFocus;

exit;

end;

try

k1:=StrToFloat(EditVes999.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса металла введено не числовое значение!');

EditVes999.Text := '';

EditVes999.SetFocus;

exit;

end;

end;

k1:=(StrToFloat(EditVes999.Text)/58.5)*13;

LabelVesSerebro999.Caption:=Format('%f',[k1]);

k2:=(StrToFloat(EditVes999.Text)/58.5)*18.5;

LabelVesMed999.Caption:=Format('%f',[k2]);

k3:=(StrToFloat(EditVes999.Text)/58.5)*10;

LabelVesKadmii999.Caption:=Format('%f',[k3]);

k4:=k1+k2+k3+StrToFloat(EditVes999.Text);

LabelVesITOGO999.Caption:=Format('%f',[k4]);

end;

//Рассчет припоя для золота 900 пробы

procedure TFormPRIPOI.SpBut900Click(Sender: TObject);

var

k1, k2, k3, k4, k12, k22: single;

p1: single;

begin

IF EditVes900.Text='' Then

begin

ShowMessage('Введите вес золота 900 пробы!');

EditVes900.SetFocus;

exit;

end;

try

k1:=StrToFloat(EditVes900.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса металла введено не числовое значение!');

EditVes900.Text := '';

EditVes900.SetFocus;

exit;

end;

end;

p1:=(StrToFloat(EditVes900.Text)/999)*900;

k1:=(p1/58.5)*13;

LabelVesSerebro900.Caption:=Format('%f',[k1]);

k2:=(p1/58.5)*18.5;

LabelVesMed900.Caption:=Format('%f',[k2]);

k3:=(p1/58.5)*10;

LabelVesKadmii900.Caption:=Format('%f',[k3]);

k12:=k1-(StrToFloat(EditVes900.Text)-p1)/2;

k22:=k2-(StrToFloat(EditVes900.Text)-p1)/2;

k4:=k12+k22+k3+StrToFloat(EditVes900.Text);

LabelVesITOGO900.Caption:=Format('%f',[k4]);

end;

end.

Модуль формы КАЛЬКУЛЯТОР ЛИГАТУРЫ (UnitLIGATURA)

unit UnitLIGATURA;

implementation

uses Uvelir, DM, UnitRezervMetall;

{$R *.dfm}

//Рассчет золота 585 пробы из одного металла

procedure TFormLIGATURA.SpeedButton1Click(Sender: TObject);

var

k: single;

begin

IF DBLComBoxPROBA1.Text='' Then

begin

ShowMessage('Выберите пробу!');

exit;

end;

IF EditVes.Text='' Then

begin

ShowMessage('Введите вес!');

EditVes.SetFocus;

exit;

end;

try

k:=StrToFloat(EditVes.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса металла введено не числовое значение!');

EditVes.Text := '';

EditVes.SetFocus;

exit;

end;

end;

k:=(StrToFloat(EditVes.Text)/585)*StrToInt(DBLComBoxPROBA1.Text);

LabelVes585.Caption:=Format('%f',[k]);

end;

//Рассчет золота 585 пробы из двух металло

procedure TFormLIGATURA.SpeedButton2Click(Sender: TObject);

var

p1, p2: integer;

k: single;

begin

IF DBLComBoxPROBA2.Text='' Then

begin

ShowMessage('Выберите пробу первого металла!');

exit;

end;

IF DBLComBoxPROBA3.Text='' Then

begin

ShowMessage('Выберите пробу второго металла!');

exit;

end;

IF EditVes1.Text='' Then

begin

ShowMessage('Введите вес первого металла!');

EditVes1.SetFocus;

exit;

end;

try

k:=StrToFloat(EditVes1.Text); //Считываем вес металла

except

on EConvertError do

begin

ShowMessage('В поле для веса металла введено не числовое значение!');

EditVes1.Text := '';

EditVes1.SetFocus;

exit;

end;

end;

p1:=StrToInt(DBLComBoxPROBA2.Text)-585;

p2:=585-StrToInt(DBLComBoxPROBA3.Text);

k:=StrToFloat(EditVes1.Text)*(p1/p2);

LabelVesPR585.Caption:=Format('%f',[k]);

GroupBox585.Caption:='Вес '+DBLComBoxPROBA3.Text;

end;

end.