Разработка системы автоматизированного учета для багетной мастерской
Программный комплекс "Багетная мастерская": назначение создания системы. Критерии эффективности функционирования системы. Структура информационных потоков и документооборота. Выбор языка программирования. Базовое и прикладное программное обеспечение.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 15.01.2010 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
dsSlave. DataSet. Close;
dsSlave. DataSet. Open;
MyMasterskaya_KomplektForm. myMaterial: =Material;
MyMasterskaya_KomplektForm. Caption: =sCaption;
MyMasterskaya_KomplektForm. ShowModal;
MyMasterskaya_KomplektForm. Free;
end;
procedure TMainForm. Act_Master_KomplektExecute (Sender: TObject);
begin
CreateAllMasterskayaKomplektForm ('Мастерская - Комплектующие', DM1. DSMasterskaya_Kompl, DM1. DSMaterKomlekt);
end;
procedure TMainForm. Act_Master_RaznoeExecute (Sender: TObject);
begin
CreateAllMasterskayaKomplektForm ('Мастерская - Разное', DM1. DSMasterskaya_Raznoe, DM1. DSMaterRaznoe);
end;
procedure TMainForm. Act_Master_BagetsExecute (Sender: TObject);
begin
CreateAllMasterskayaKomplektForm ('Мастерская - Багеты', DM1. DSMasterskaya_Bagets, DM1. DSMaterBagets);
end;
// процедура динамически создаёт форму для склада
// sCaption - заголовок окна, dsSlave - главный набор данных, Material - набор данных со всеми деталями
// Например, со всеми багетами или со всеми комплектующими
// dsVspomog - набор данных для раскрыв. списка наимен. комплект.
// MySqlZapros - SQL-запрос для dsVspomog
procedure TMainForm. CreateAllSkladKomplektForm (sCaption: String;
dsSlave, dsVspomog, Material: TDataSource; MySqlZapros: string);
Var
MySklad_KomplektForm: TSklad_KomplektForm;
begin
MySklad_KomplektForm: =TSklad_KomplektForm. Create (Owner);
MySklad_KomplektForm. DBGridSlave. DataSource: =dsSlave;
MySklad_KomplektForm. DBNavigatorSlave. DataSource: =dsSlave;
MySklad_KomplektForm. DBLComboBoxMaterKomplekt. DataSource: =dsSlave;
MySklad_KomplektForm. DBLComboBoxMaterKomplekt. DataField: ='LMaterKomplekt';
MySklad_KomplektForm. DBLComboBoxKomplekt. DataSource: =dsSlave;
MySklad_KomplektForm. DBLComboBoxKomplekt. DataField: ='LKomplekt';
MySklad_KomplektForm. DBEditNumberNakl. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditNumberNakl. DataField: ='Sklad_NumberNakl';
MySklad_KomplektForm. DBEditData. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditData. DataField: ='Sklad_Data';
MySklad_KomplektForm. DBEditZakupCena. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditZakupCena. DataField: ='Sklad_ZakupCena';
MySklad_KomplektForm. DBEditKolVo. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditKolVo. DataField: ='Sklad_Kol-vo';
MySklad_KomplektForm. DBEditRashod. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditRashod. DataField: ='Sklad_Rashod';
MySklad_KomplektForm. DBEditOstatok. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditOstatok. DataField: ='CMasterskaya_Ostatok';
MySklad_KomplektForm. DBEditPrim. DataSource: =dsSlave;
MySklad_KomplektForm. DBEditPrim. DataField: ='Sklad_Prim';
// обновим
dsSlave. DataSet. Close;
dsSlave. DataSet. Open;
MySklad_KomplektForm. myMaterial: =Material;
dsVspomog. DataSet. Close;
TADOQuery (dsVspomog. DataSet). SQL. Clear; // очищаем
TADOQuery (dsVspomog. DataSet). SQL. Add (MySqlZapros); // Добавляем текст запроса
TADOQuery (dsVspomog. DataSet). FieldByName ('LKomplekt'). LookupDataSet: =TADOQuery (dsSlave. DataSet). FieldByName ('LKomplekt'). LookupDataSet;
// устанавливаем параметры
TADOQuery (dsVspomog. DataSet). Parameters. ParamByName ('Id_Komplekt_slave'). DataType: =ftInteger;
TADOQuery (dsVspomog. DataSet). Parameters. ParamByName ('Id_Komplekt_slave'). Direction: =pdInput;
TADOQuery (dsVspomog. DataSet). Parameters. ParamByName ('Id_Komplekt_slave'). Value: =0;
dsVspomog. DataSet. Open;
MySklad_KomplektForm. DBEditKomplekt. DataSource: =dsVspomog;
MySklad_KomplektForm. DBEditKomplekt. DataField: ='LKomplekt';
MySklad_KomplektForm. DBEditVspomCena. DataSource: =dsVspomog;
MySklad_KomplektForm. DBEditVspomCena. DataField: ='Masterskaya_RoznCena';
MySklad_KomplektForm. DBEditVspomKolVo. DataSource: =dsVspomog;
MySklad_KomplektForm. DBEditVspomKolVo. DataField: ='Masterskaya_Kol-vo';
MySklad_KomplektForm. DBEditVspomRashod. DataSource: =dsVspomog;
MySklad_KomplektForm. DBEditVspomRashod. DataField: ='Masterskaya_Rashod';
MySklad_KomplektForm. DBEditVspomOstatok. DataSource: =dsVspomog;
MySklad_KomplektForm. DBEditVspomOstatok. DataField: ='CMasterskaya_Ostatok';
MySklad_KomplektForm. Caption: =sCaption;
MySklad_KomplektForm. ShowModal;
MySklad_KomplektForm. Free;
end;
procedure TMainForm. ActSkladKomplektExecute (Sender: TObject);
begin
CreateAllSkladKomplektForm ('Склад - Комплектующие', DM1. DSSklad_Kompl, Dm1. DSVspomog, DM1. DSMaterKomlekt, 'Select * From Masterskaya_Kompl_Table ' +
'Where Id_Komplekt_slave =: Id_Komplekt_slave');
end;
procedure TMainForm. ActSkladRaznoeExecute (Sender: TObject);
begin
CreateAllSkladKomplektForm ('Склад - Разное', DM1. DSSklad_Raznoe, Dm1. DSVspomog, DM1. DSMaterRaznoe, 'Select * From Masterskaya_Raznoe_Table ' +
'Where Id_Komplekt_slave =: Id_Komplekt_slave');
end;
procedure TMainForm. ActSkladBagetsExecute (Sender: TObject);
begin
CreateAllSkladKomplektForm ('Склад - Багеты', DM1. DSSklad_Bagets, Dm1. DSVspomog, DM1. DSMaterBagets, 'Select * From Masterskaya_Bagets_Table ' +
'Where Id_Komplekt_slave =: Id_Komplekt_slave');
end;
procedure TMainForm. ExitActExecute (Sender: TObject);
begin
Close;
end;
// нажатие кнопки в поле ввода "Итого с работой"
procedure TMainForm. DBEditItogSRabotoiKeyPress (Sender: TObject;
var Key: Char);
begin
// допускаем ввод только положительных чисел
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "Итого без работы"
procedure TMainForm. DBEditItogBezRabotiKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "Итоговая скидка"
procedure TMainForm. DBEditItog_ScidkaKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "Итого к оплате"
procedure TMainForm. DBEditItogoKOplateKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// происходит при показе формы
procedure TMainForm. FormShow (Sender: TObject);
begin
// MainForm. Visible: =true;
// AnimateWindow (Handle, 800, AW_CENTER or AW_SLIDE);
// MainForm. Refresh;
MainForm. SetFocus;
DBGridMain. DataSource. DataSet. DisableControls; // отключить связанные с набором данных контролы
DBGridMain. DataSource. DataSet. Refresh; // обновить
DBGridMain. DataSource. DataSet. EnableControls;
// проверить состояние, вкл. или выкл. нужные кнопки
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False)
then
begin
BitSave. Enabled: =False;
BitCan. Enabled: =False;
BitDel. Enabled: =False;
BitEdit. Enabled: =False;
end;
if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False)
then
begin
BitSave. Enabled: =False;
BitCan. Enabled: =False;
end;
//
//
if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False)
then
begin
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
BitIzd_Del. Enabled: =False;
BitIzd_Edit. Enabled: =False;
end;
if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False)
then
begin
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
end;
//
end;
// происходит при выходе из поля ввода "Дата приёма"
procedure TMainForm. DBEditDataPriemaExit (Sender: TObject);
Var
MyDate: TDate;
MyStr: string;
begin
MyDate: =Date (); // инициализируем
Try
MyStr: =TDBEdit (Sender). text;
MyDate: =StrToDate (MyStr);
Except
on EConvertError do // если ошибка преобразования строки в дату
Application. MessageBox ('Введите корректную дату! ',
'Неправильная дата', MB_OK + MB_ICONASTERISK);
End;
// следующине три строки внесены в код для того, чтобы компилятор дельфи не выдавал предупреждений.
// Не влияют на ход программы
If MyDate = Date ()
Then
Exit;
end;
// происходит при выходе из поля ввода "Дата окончания"
procedure TMainForm. DBEditDataOkonchExit (Sender: TObject);
Var
MyDate: TDate;
MyStr: string;
begin
MyDate: =Date ();
Try
MyStr: =TDBEdit (Sender). text;
MyDate: =StrToDate (MyStr);
Except
on EConvertError do
Application. MessageBox ('Введите корректную дату! ',
'Неправильная дата', MB_OK + MB_ICONASTERISK);
End;
If MyDate = Date ()
Then
Exit;
end;
// нажатие кнопки в поле ввода "дополн. работа"
procedure TMainForm. DBEditDopRabotaKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "Итого за материал"
procedure TMainForm. DBEditItogoMaterialKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "Итого за обработку"
procedure TMainForm. DBEditItogoObrabotkaKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "Итого за изделие"
procedure TMainForm. DBEditItogoProduktKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "высота изделия"
procedure TMainForm. DBEditVisota_productKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// нажатие кнопки в поле ввода "ширина изделия"
procedure TMainForm. DBEditShirina_productKeyPress (Sender: TObject;
var Key: Char);
begin
DM1. CheckNumericKeyPress (Sender, Key);
end;
// Кнопка "Сортировка по возрастанию"
procedure TMainForm. BBSortASCClick (Sender: TObject);
Var
MyADOQuery: TADOQuery;
begin
MyADOQuery: =TADOQuery (DBGridMain. DataSource. DataSet);
MyADOQuery. DisableControls;
MyADOQuery. close;
MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =''; // очищаем последнюю строку запроса
// в зависимости от выбранного переключателя делаем
case RadioGroup1. ItemIndex of
0: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NomerZakaza';
1: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NaimZakaz';
2: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataPriema';
3: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataOkonch';
4: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY ItogoKOplate';
end;
MyADOQuery. Open;
MyADOQuery. EnableControls;
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
end;
// Кнопка "Сортировка по убыванию"
procedure TMainForm. BBSortDESCClick (Sender: TObject);
Var
MyADOQuery: TADOQuery;
begin
MyADOQuery: =TADOQuery (DBGridMain. DataSource. DataSet);
MyADOQuery. DisableControls;
MyADOQuery. close;
MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: ='';
case RadioGroup1. ItemIndex of
0: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NomerZakaza DESC';
1: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NaimZakaz DESC';
2: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataPriema DESC';
3: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataOkonch DESC';
4: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY ItogoKOplate DESC';
end;
MyADOQuery. Open;
MyADOQuery. EnableControls;
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
end;
// Кнопка "определить состав изделия"
procedure TMainForm. ButtonSostavClick (Sender: TObject);
Var
MySostavProductForm: TSostavProductForm;
begin
MySostavProductForm: =TSostavProductForm. Create (Owner);
MySostavProductForm. ShowModal;
MySostavProductForm. Free;
end;
// щелчок по навигатору для заказов
procedure TMainForm. DBNavigatorMainClick (Sender: TObject;
Button: TNavigateBtn);
begin
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False)
then
begin
{BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False; }
BitIzd_Del. Enabled: =false;
BitIzd_Edit. Enabled: =false;
end;
//
if (Act_Izd_Edit. Enabled=true) and (Act_Izd_Del. Enabled=true)
then
begin
{BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False; }
BitIzd_Del. Enabled: =true;
BitIzd_Edit. Enabled: =true;
end;
//
end;
// происходит при запросе на закрытие формы
procedure TMainForm. FormCloseQuery (Sender: TObject; var CanClose: Boolean);
begin
If Application. MessageBox ('Вы уверены, что хотите выйти? ', 'Выход из программы', MB_YESNO + MB_ICONINFORMATION) = IDYES
Then
// если набор данных в режиме просмотра
If (DBGridMain. DataSource. State = dsBrowse) and (DBGridSlave. DataSource. State = dsBrowse)
Then
Begin
CanClose: =True;
End
Else
Begin
CanClose: =False;
Application. MessageBox ('Нельзя закрыть окно, т.к данные в режиме редактирования! ', 'Закрытие окна', MB_OK + MB_ICONERROR);
End
Else
CanClose: =False;
end;
procedure TMainForm. BitBtn1Click (Sender: TObject);
begin
Close;
end;
procedure TMainForm. ActPrintOptionExecute (Sender: TObject);
begin
PrinterSetupDialog1. Execute; // настройка параметров принтера
end;
procedure TMainForm. ActPrintExecute (Sender: TObject);
begin
PrintZakazForm. QuickRep1. ReportTitle: ='Заказ №: ' + DBEditNomerZakaza. Text;
PrintZakazForm. QuickRep1. PreviewModal; // распечатка заказа
end;
// редактирование заказа
procedure TMainForm. Act_Zak_EditExecute (Sender: TObject);
begin
If DBGridMain. DataSource. DataSet. CanModify // если данные можно изменять
Then DBGridMain. DataSource. DataSet. Edit
Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION);
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Add. Enabled=False) and (Act_Zak_Del. Enabled=False)
then
begin
BitAdd. Enabled: =false;
BitSave. Enabled: =true;
BitCan. Enabled: =true;
BitDel. Enabled: =false;
BitEdit. Enabled: =false;
end;
//
DBEditNomerZakaza. SetFocus;
end;
// удаление заказа
procedure TMainForm. Act_Zak_DelExecute (Sender: TObject);
begin
If Application. MessageBox ('Удалить заказ со всеми изделиями? ', 'Удаление записи', MB_YESNO + MB_ICONINFORMATION) = IDYES
Then
Begin
DBGridMain. DataSource. DataSet. DisableControls;
DBGridSlave. DataSource. DataSet. DisableControls;
DBGridMain. DataSource. DataSet. Delete; // удалить текущий заказ
DBGridMain. DataSource. DataSet. EnableControls;
DBGridSlave. DataSource. DataSet. EnableControls;
End;
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False) and (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False)
then
begin
BitAdd. Enabled: =True;
BitSave. Enabled: =False;
BitCan. Enabled: =False;
BitDel. Enabled: =False;
BitEdit. Enabled: =False;
end;
//
end;
// сохранить заказ
procedure TMainForm. Act_Zak_SaveExecute (Sender: TObject);
begin
If (DBEditNomerZakaza. Text = '') or (DBEditNaimZakaz. Text = '') or (DBEditDataPriema. Text = '') or (DBEditVremyaPriema. Text = '') or
(DBEditDataOkonch. Text = '') or (DBEditVremyaOkonch. Text = '') or (DBLCBLName_Client. Text = '') or
(DBEditItogSRabotoi. Text = '') or (DBEditItogBezRaboti. Text = '') or (DBEditItog_Scidka. Text = '') or
(DBEditItogoKOplate. Text = '')
Then
Begin
Application. MessageBox ('Вы незаполнили некоторые поля! Заполните, пож-та, все поля! ', 'Незаполненные поля', MB_OK + MB_ICONASTERISK);
DBEditNomerZakaza. SetFocus;
Exit
End;
If DBGridMain. DataSource. DataSet. Modified // если данные были изменены
or (DBEditNomerZakaza. Modified) or (DBEditNaimZakaz. Modified) or (DBEditDataPriema. Modified) or (DBEditVremyaPriema. Modified) or
(DBEditDataOkonch. Modified) or (DBEditVremyaOkonch. Modified) or
(DBEditItogSRabotoi. Modified) or (DBEditItogBezRaboti. Modified) or (DBEditItog_Scidka. Modified) or
(DBEditItogoKOplate. Modified)
Then DBGridMain. DataSource. DataSet. Post; // сохранить данные
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
BitIzd_Add. Enabled: =true;
//
if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False)
then
begin
BitAdd. Enabled: =True;
BitSave. Enabled: =False;
BitCan. Enabled: =False;
BitDel. Enabled: =true;
BitEdit. Enabled: =true;
end;
//
end;
// отмена изменений в заказе
procedure TMainForm. Act_Zak_CancelExecute (Sender: TObject);
begin
DBGridMain. DataSource. DataSet. Cancel;
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
BitIzd_Add. Enabled: =true;
//
if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False)
then
begin
BitAdd. Enabled: =True;
BitSave. Enabled: =False;
BitCan. Enabled: =False;
BitDel. Enabled: =False;
BitEdit. Enabled: =False;
end;
if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False)
then
begin
BitAdd. Enabled: =True;
BitSave. Enabled: =False;
BitCan. Enabled: =False;
BitDel. Enabled: =true;
BitEdit. Enabled: =true;
end;
if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False)
and
(Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False)
then
begin
BitAdd. Enabled: =True;
BitSave. Enabled: =False;
BitCan. Enabled: =False;
BitDel. Enabled: =false;
BitEdit. Enabled: =false;
end;
//
end;
// добавить изделие
procedure TMainForm. Act_Izd_AddExecute (Sender: TObject);
begin
If DBGridSlave. DataSource. DataSet. CanModify
Then DBGridSlave. DataSource. DataSet. Append
Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
DBEditNomerProduct. SetFocus;
//
BitIzd_Add. Enabled: =False;
BitIzd_Edit. Enabled: =False;
BitIzd_Del. Enabled: =False;
BitIzd_Save. Enabled: =True;
BitIzd_Can. Enabled: =True;
//
end;
// редактировать изделие
procedure TMainForm. Act_Izd_EditExecute (Sender: TObject);
begin
If DBGridSlave. DataSource. DataSet. CanModify
Then DBGridSlave. DataSource. DataSet. Edit
Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
DBEditNomerProduct. SetFocus;
//
if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Add. Enabled=False) and (Act_Izd_Del. Enabled=False)
then
begin
BitIzd_Add. Enabled: =false;
BitIzd_Save. Enabled: =true;
BitIzd_Can. Enabled: =true;
BitIzd_Del. Enabled: =false;
BitIzd_Edit. Enabled: =false;
end;
end;
// удалить изделие
procedure TMainForm. Act_Izd_DelExecute (Sender: TObject);
begin
If Application. MessageBox ('Удалить изделие со всеми деталями? ', 'Удаление записи', MB_YESNO + MB_ICONINFORMATION) = IDYES
Then
DBGridSlave. DataSource. DataSet. Delete;
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) and (Act_Izd_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False)
then
begin
BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
BitIzd_Del. Enabled: =False;
BitIzd_Edit. Enabled: =False;
end;
//
end;
// сохранить изменения в изделии
procedure TMainForm. Act_Izd_SaveExecute (Sender: TObject);
begin
If (DBEditNomerProduct. Text = '') or (DBEditShirina_product. Text = '') or (DBEditVisota_product. Text = '') or
(DBEditItogoMaterial. Text = '') or (DBEditItogoObrabotka. Text = '') or (DBEditItogoProdukt. Text = '')
Then
Begin
Application. MessageBox ('Вы незаполнили некоторые поля! Заполните, пож-та, все поля! ', 'Незаполненные поля', MB_OK + MB_ICONASTERISK);
DBEditNomerProduct. SetFocus;
Exit
End;
If DBGridSlave. DataSource. DataSet. Modified or
(DBEditNomerProduct. Modified) or (DBEditShirina_product. Modified) or (DBEditVisota_product. Modified) or
(DBEditNaimenDopRabota. Modified) or (DBEditDopRabota. Modified)
Then
DBGridSlave. DataSource. DataSet. Post;
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False)
then
begin
BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
BitIzd_Del. Enabled: =true;
BitIzd_Edit. Enabled: =true;
end;
end;
// отменить изменения в изделии
procedure TMainForm. Act_Izd_CancelExecute (Sender: TObject);
begin
DBGridSlave. DataSource. DataSet. Cancel;
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False)
then
begin
BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
BitIzd_Del. Enabled: =False;
BitIzd_Edit. Enabled: =False;
end;
if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False)
then
begin
BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
BitIzd_Del. Enabled: =true;
BitIzd_Edit. Enabled: =true;
end;
if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False)
and
(Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False)
then
begin
BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False;
BitIzd_Del. Enabled: =false;
BitIzd_Edit. Enabled: =false;
end;
//
end;
// определить состав изделия
procedure TMainForm. Act_Izd_SostavExecute (Sender: TObject);
Var
MySostavProductForm: TSostavProductForm;
begin
If DBGridSlave. DataSource. DataSet. RecordCount <> 0 // если таблица не пустая
Then
Begin
MySostavProductForm: =TSostavProductForm. Create (Owner);
MySostavProductForm. ShowModal;
MySostavProductForm. Free;
End
Else
Application. MessageBox ('Добавьте, пож-та, изделие', 'Отсутствие изделия', MB_OK + MB_ICONINFORMATION);
end;
// рассчитать заказ
procedure TMainForm. Act_Zak_RashitatExecute (Sender: TObject);
Var
ItogoBezRaboti,
ItogoSRabotoi: Currency;
i, j: integer;
// рассчитывает стоимость изделия в составе заказа
Procedure RashitatProduct (MyProduct: TAdoQuery);
Var
i: integer;
ItogoMaterial1,ItogoObrabotka1: Currency;
Begin
ItogoMaterial1: =0;
ItogoObrabotka1: =0;
With DM1 Do
// обрабатываем багеты в составе изделия
Begin
ADOQProducts_Bagets. First;
For i: =1 to ADOQProducts_Bagets. RecordCount do
Begin
ItogoMaterial1: =ItogoMaterial1 + ADOQProducts_Bagets. fieldByName ('CItogoZaRashod'). AsCurrency;
ItogoObrabotka1: =ItogoObrabotka1 + ADOQProducts_Bagets. fieldByName ('CObrabotka'). AsCurrency;
ADOQProducts_Bagets. Next;
End;
// обрабатываем разное в составе изделия
ADOQProducts_Raznoe. First;
For i: =1 to ADOQProducts_Raznoe. RecordCount do
Begin
ItogoMaterial1: =ItogoMaterial1 + ADOQProducts_Raznoe. fieldByName ('CItogoZaRashod'). AsCurrency;
ItogoObrabotka1: =ItogoObrabotka1 + ADOQProducts_Raznoe. fieldByName ('CObrabotka'). AsCurrency;
ADOQProducts_Raznoe. Next;
End;
// обрабатываем комплектующие в составе изделия
ADOQProducts_Kompl. First;
For i: =1 to ADOQProducts_Kompl. RecordCount do
Begin
ItogoMaterial1: =ItogoMaterial1 + ADOQProducts_Kompl. fieldByName ('CItogoZaRashod'). AsCurrency;
ItogoObrabotka1: =ItogoObrabotka1 + ADOQProducts_Kompl. fieldByName ('CObrabotka'). AsCurrency;
ADOQProducts_Kompl. Next;
End;
End;
With DM1 do
Begin
If ADOQProducts. CanModify
Then
ADOQProducts. Edit
Else
Begin
Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION);
Exit;
End;
// заполняем соответствующие поля
ADOQProducts. FieldByName ('ItogoMaterial'). AsCurrency: =ItogoMaterial1;
ADOQProducts. FieldByName ('ItogoObrabotka'). AsCurrency: =ItogoObrabotka1;
ADOQProducts. FieldByName ('ItogoProdukt'). AsCurrency: =ItogoMaterial1 + ItogoObrabotka1 + ADOQProducts. FieldByName ('DopRabota'). AsCurrency;
If ADOQProducts. Modified
Then
ADOQProducts. Post;
End;
End;
begin
DM1. ADOQZakazi. DisableControls;
DM1. ADOQProducts. DisableControls;
If DM1. ADOQProducts. RecordCount <> 0 // если есть изделия
Then
// обрабатываем все изделия в составе заказа
Begin
DM1. ADOQProducts. First;
For j: =1 to DM1. ADOQProducts. RecordCount Do
Begin
// обновляем информацию
Dm1. ADOQProducts_Bagets. Close;
Dm1. ADOQProducts_Bagets. Open;
Dm1. ADOQProducts_Raznoe. Close;
Dm1. ADOQProducts_Raznoe. Open;
Dm1. ADOQProducts_Kompl. Close;
Dm1. ADOQProducts_Kompl. Open;
RashitatProduct (DM1. ADOQProducts); // рассчитываем изделие
DM1. ADOQProducts. Next;
End;
ItogoBezRaboti: =0;
ItogoSRabotoi: =0;
With DM1 Do
Begin
ADOQProducts. First;
// прогоняем все изделия
For i: =1 to ADOQProducts. RecordCount do
Begin
ItogoBezRaboti: =ItogoBezRaboti + ADOQProducts. fieldByName ('ItogoMaterial'). AsCurrency;
ItogoSRabotoi: =ItogoSRabotoi + ADOQProducts. fieldByName ('ItogoProdukt'). AsCurrency;
ADOQProducts. Next;
End;
End;
With DM1 do
Begin
If ADOQZakazi. CanModify
Then
ADOQZakazi. Edit
Else
Begin
Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION);
Exit;
End;
// заполняем соответствующие поля
ADOQZakazi. FieldByName ('ItogSRabotoi'). AsCurrency: =ItogoSRabotoi;
ADOQZakazi. FieldByName ('ItogBezRaboti'). AsCurrency: =ItogoBezRaboti;
ADOQZakazi. FieldByName ('Itog_Scidka'). AsCurrency: =ItogoSRabotoi * ADOQZakazi. FieldByName ('LScidka_client'). AsCurrency;
ADOQZakazi. FieldByName ('ItogoKOplate'). AsCurrency: =ItogoSRabotoi - ADOQZakazi. FieldByName ('Itog_Scidka'). AsCurrency;
If ADOQZakazi. Modified
Then
ADOQZakazi. Post;
End;
End
Else
Begin
Application. MessageBox ('Добавьте в заказ изделие', 'Нет изделия', MB_OK + MB_ICONINFORMATION);
DM1. ADOQZakazi. EnableControls;
DM1. ADOQProducts. EnableControls;
Exit;
End;
DM1. ADOQZakazi. EnableControls;
DM1. ADOQProducts. EnableControls;
end;
// отчёт "остатки материалов в мастерской"
procedure TMainForm. Act_R_OstatkiExecute (Sender: TObject);
begin
RvProject1. Open; // открываем проект с отчётами
Try
RvProject1. ExecuteReport ('OstatkiMaterReport') // выполняем отчёт
Finally
RvProject1. Close; // закрываем проект с отчётами
End;
end;
// происходит при создании формы
procedure TMainForm. FormCreate (Sender: TObject);
begin
// если файл с отчётами существует
If FileExists (GetCurrentDir + '\BagetReport. rav')
Then
// подключаем файл с отчётами
RvProject1. ProjectFile: =GetCurrentDir + '\BagetReport. rav'
Else
Begin
Application. MessageBox ('Файл с отчётами не найден! Завершаю программу! ', 'Файл отчётов', MB_OK + MB_ICONERROR);
Application. Terminate;
End;
end;
// отчёт "прайс-лист"
procedure TMainForm. Act_R_PriceListExecute (Sender: TObject);
begin
RvProject1. Open;
Try
RvProject1. ExecuteReport ('PriceListReport')
Finally
RvProject1. Close;
End;
end;
// процедура создаёт форму выбора для отчёта начальной и конечной даты
// sCaption - заголовок
// VidForm - вид отчёта (1 - сумма заказов за период, 2 - заказы к дате, 3 - продажи материалов за период)
// isEmpty - поиск не нашёл ни одной записи
procedure TMainForm. CreateSelectDateForm (sCaption: String; VidForm: byte; Var isEmpty: boolean);
Var
MySelectDateForm: TSelectDateForm;
i: integer;
begin
MySelectDateForm: =TSelectDateForm. Create (Owner);
MySelectDateForm. Caption: =sCaption;
// в зависимости от вида подготавливаем форму
case VidForm of
1: Begin
MySelectDateForm. Tag: =1;
End;
2: Begin
MySelectDateForm. Label1. Visible: =False;
MySelectDateForm. DTPickerStart. Visible: =False;
MySelectDateForm. DTPickerStart. Date: =StrToDateTime ('01.01.1900');
MySelectDateForm. Height: =150;
MySelectDateForm. Tag: =2;
End;
3: Begin
MySelectDateForm. Tag: =3;
End;
end;
MySelectDateForm. ShowModal;
If MySelectDateForm. ModalResult = mrOk // если нажали на кнопку "выполнить"
Then
case VidForm of
1: Begin
DMReport. ADOQSummaZakazovReport. Close;
// устанавливаем параметры
DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataPriema'). DataType: =ftDate;
DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date;
DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataOkonch'). DataType: =ftDate;
DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date;
DMReport. ADOQSummaZakazovReport. Open;
If DMReport. ADOQSummaZakazovReport. RecordCount = 0 // если ничего не нашли
Then
Begin
Application. MessageBox ('Не найдено ни одной записи! Измените условия поиска', 'Поиск', MB_OK + MB_ICONASTERISK);
isEmpty: =True;
End;
End;
2: Begin
DMReport. ADOQZakaziKDate. Close;
// устанавливаем параметры
DMReport. ADOQZakaziKDate. Parameters. ParamByName ('DataOkonch'). DataType: =ftDate;
DMReport. ADOQZakaziKDate. Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date;
DMReport. ADOQZakaziKDate. Open;
If DMReport. ADOQZakaziKDate. RecordCount = 0
Then
Begin
Application. MessageBox ('Не найдено ни одной записи! Измените условия поиска', 'Поиск', MB_OK + MB_ICONASTERISK);
isEmpty: =True;
End;
End;
3: Begin
With DMReport. ADOQProdazhiZaPeriodBagets Do
Begin
Close;
// устанавливаем параметры
Parameters. ParamByName ('DataPriema'). DataType: =ftDate;
Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date;
Parameters. ParamByName ('DataOkonch'). DataType: =ftDate;
Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date;
Open;
End;
With DMReport. ADOQProdazhiZaPeriodKomplekt Do
Begin
Close;
// устанавливаем параметры
Parameters. ParamByName ('DataPriema'). DataType: =ftDate;
Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date;
Parameters. ParamByName ('DataOkonch'). DataType: =ftDate;
Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date;
Open;
End;
With DMReport. ADOQProdazhiZaPeriodRaznoe Do
Begin
Close;
// устанавливаем параметры
Parameters. ParamByName ('DataPriema'). DataType: =ftDate;
Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date;
Parameters. ParamByName ('DataOkonch'). DataType: =ftDate;
Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date;
Open;
End;
If (DMReport. ADOQProdazhiZaPeriodBagets. RecordCount = 0) and (DMReport. ADOQProdazhiZaPeriodKomplekt. RecordCount = 0) and
(DMReport. ADOQProdazhiZaPeriodRaznoe. RecordCount = 0) // если ничего не нашли
Then
Begin
Application. MessageBox ('Не найдено ни одной записи! Измените условия поиска', 'Поиск', MB_OK + MB_ICONASTERISK);
isEmpty: =True;
Exit;
End;
// Очистка таблицы по продажам
DMReport. ADOComProdazhiDelete. Execute;
// Добавление в таблицу по продажам багетов
DMReport. ADOTableProdazhiZaPeriod. Close;
DMReport. ADOTableProdazhiZaPeriod. Open;
DMReport. ADOTableProdazhiZaPeriod. First;
DMReport. ADOQProdazhiZaPeriodBagets. First;
For i: =1 to DMReport. ADOQProdazhiZaPeriodBagets. RecordCount Do
Begin
If DMReport. ADOTableProdazhiZaPeriod. CanModify
Then
DMReport. ADOTableProdazhiZaPeriod. Append;
With DMReport. ADOTableProdazhiZaPeriod Do
Begin
FieldByName ('TipKomplekt'). AsString: =DM1. ADOQMaterBagets. fieldByName ('MaterKomlekt_Name'). AsString;
FieldByName ('Naimenovanie'). AsString: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('Lkomplekt'). AsString;
FieldByName ('EdIzm'). AsString: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('LEdIzm'). AsString;
FieldByName ('Rashod'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('CRashod_Komplekt'). AsCurrency;
FieldByName ('Prodano'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('CItogoZaRashod'). AsCurrency;
End;
If DMReport. ADOTableProdazhiZaPeriod. Modified
Then
DMReport. ADOTableProdazhiZaPeriod. Post;
DMReport. ADOQProdazhiZaPeriodBagets. Next
End;
// Добавление в таблицу по продажам комплектующих
DMReport. ADOQProdazhiZaPeriodKomplekt. First;
For i: =1 to DMReport. ADOQProdazhiZaPeriodKomplekt. RecordCount Do
Begin
If DMReport. ADOTableProdazhiZaPeriod. CanModify
Then
DMReport. ADOTableProdazhiZaPeriod. Append;
With DMReport. ADOTableProdazhiZaPeriod Do
Begin
FieldByName ('TipKomplekt'). AsString: =DMReport. ADOQProdazhiZaPeriodKomplekt. fieldByName ('LMasterMaterKomplekt'). AsString;
FieldByName ('Naimenovanie'). AsString: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('Lkomplekt'). AsString;
FieldByName ('EdIzm'). AsString: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('LEdIzm'). AsString;
FieldByName ('Rashod'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('CRashod_Komplekt'). AsCurrency;
FieldByName ('Prodano'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('CItogoZaRashod'). AsCurrency;
End;
If DMReport. ADOTableProdazhiZaPeriod. Modified
Then
DMReport. ADOTableProdazhiZaPeriod. Post;
DMReport. ADOQProdazhiZaPeriodKomplekt. Next
End;
// Добавление в таблицу по продажам разного
DMReport. ADOQProdazhiZaPeriodRaznoe. First;
For i: =1 to DMReport. ADOQProdazhiZaPeriodRaznoe. RecordCount Do
Begin
If DMReport. ADOTableProdazhiZaPeriod. CanModify
Then
DMReport. ADOTableProdazhiZaPeriod. Append;
With DMReport. ADOTableProdazhiZaPeriod Do
Begin
FieldByName ('TipKomplekt'). AsString: =DMReport. ADOQProdazhiZaPeriodRaznoe. fieldByName ('LMasterMaterKomplekt'). AsString;
FieldByName ('Naimenovanie'). AsString: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('Lkomplekt'). AsString;
FieldByName ('EdIzm'). AsString: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('LEdIzm'). AsString;
FieldByName ('Rashod'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('Rashod_Komplekt'). AsCurrency;
FieldByName ('Prodano'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('CItogoZaRashod'). AsCurrency;
End;
If DMReport. ADOTableProdazhiZaPeriod. Modified
Then
DMReport. ADOTableProdazhiZaPeriod. Post;
DMReport. ADOQProdazhiZaPeriodRaznoe. Next
End;
// Открываем сгруппированный запрос
DMReport. ADOQGroupProdazhiZaPeriod. Close;
DMReport. ADOQGroupProdazhiZaPeriod. Open;
End; // // /
end
Else
isEmpty: =True;
MySelectDateForm. Free; // уничтожаем переменную
end;
// отчёт "сумма заказов за период"
procedure TMainForm. Act_R_SummaZakazovExecute (Sender: TObject);
var
Empty: boolean;
TmpRaveComponent: TRaveComponent; // компонент рейва
DateStart, // начальная дата
DateEnd: string; // конечная дата
begin
Empty: =False;
CreateSelectDateForm ('Отчёт - Сумма заказов за период с ____ по ____', 1, Empty); // показать форму выбора дат
If Empty
Then
Exit;
RvProject1. Open;
// Поиск и активизация необходимого отчета. Метод вернет false если отчет не найден
if not RvProject1. SelectReport ('ZakaziZaPeriodReport', true)
Then EXIT;
// Поиск компонента с именем 'TittleText' на первой странице отчета
TmpRaveComponent: = RvProject1. ProjMan. FindRaveComponent ('TittleText',RvProject1. ProjMan. ActiveReport. FirstPage);
// Если объект найден, и он произошел от класса TRaveText
if (TmpRaveComponent <> nil) and (TmpRaveComponent is TRaveText)
Then
Begin
DateStart: =DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataPriema'). Value;
DateEnd: =DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataOkonch'). Value;
// Замена выводимого текста
TRaveText (TmpRaveComponent). Text: = 'Сумма заказов за период с ' + DateStart + ' г' + ' по ' + DateEnd + ' г';
End;
Try
// Генерация активного отчета
RvProject1. Execute;
Finally
RvProject1. Close;
End;
end;
// отчёт "Заказы к дате"
procedure TMainForm. Act_R_ZakaziKDateExecute (Sender: TObject);
Var
Empty: boolean;
TmpRaveComponent: TRaveComponent;
DateEnd: string;
begin
Empty: =False;
CreateSelectDateForm ('Отчёт - Заказы, которые должны быть готовы к _дата_', 2, Empty);
If Empty // если ничего не нашли
Then
Exit;
RvProject1. Open;
// Поиск и активизация необходимого отчета. Метод вернет false если отчет не найден
if not RvProject1. SelectReport ('ZakaziKSroku', true)
Then EXIT;
// Поиск компонента с именем 'TittleText' на первой странице отчета
TmpRaveComponent: = RvProject1. ProjMan. FindRaveComponent ('TittleText',RvProject1. ProjMan. ActiveReport. FirstPage);
// Если объект найден, и он произошел от класса TRaveText
if (TmpRaveComponent <> nil) and (TmpRaveComponent is TRaveText)
Then
Begin
DateEnd: =DMReport. ADOQZakaziKDate. Parameters. ParamByName ('DataOkonch'). Value;
// Замена выводимого текста
TRaveText (TmpRaveComponent). Text: = 'Заказы, которые должны быть готовы к ' + DateEnd + ' г';
End;
Try
// Генерация активного отчета
RvProject1. Execute;
Finally
RvProject1. Close;
End;
end;
// отчёт "продажи материалов за период"
procedure TMainForm. Act_R_ProdazhiMaterExecute (Sender: TObject);
var
Empty: boolean;
TmpRaveComponent: TRaveComponent;
DateStart, DateEnd: string;
begin
Empty: =False;
CreateSelectDateForm ('Отчёт - Продажи материалов за период... ', 3, Empty);
If Empty
Then
Exit;
RvProject1. Open;
// Поиск и активизация необходимого отчета. Метод вернет false если отчет не найден
if not RvProject1. SelectReport ('ProdazhiZaPeriod', true)
Then EXIT;
// Поиск компонента с именем 'Text1' на первой странице отчета
TmpRaveComponent: = RvProject1. ProjMan. FindRaveComponent ('Text1',RvProject1. ProjMan. ActiveReport. FirstPage);
// Если объект найден, и он произошел от класса TRaveText
if (TmpRaveComponent <> nil) and (TmpRaveComponent is TRaveText)
Then
Begin
DateStart: =DMReport. ADOQProdazhiZaPeriodBagets. Parameters. ParamByName ('DataPriema'). Value;
DateEnd: =DMReport. ADOQProdazhiZaPeriodBagets. Parameters. ParamByName ('DataOkonch'). Value;
// Замена выводимого текста
TRaveText (TmpRaveComponent). Text: = 'Продажи материалов за период с ' + DateStart + ' г' + ' по ' + DateEnd + ' г';
End;
Try
// Генерация активного отчета
RvProject1. Execute;
Finally
RvProject1. Close;
// Очистка таблицы по продажам
DMReport. ADOComProdazhiDelete. Execute;
End;
end;
// "Файл - архивация базы"
procedure TMainForm. ActArchivExecute (Sender: TObject);
begin
If (DM1. ADOQZakazi. State = dsBrowse) and (DM1. ADOQProducts. State = dsBrowse)
Then
If SaveArchivDialog. Execute // если выбран файл для сохранения
Then
Begin
if FileExists (ExtractFileDir (Application. ExeName) +'\baget. mdb') // если файл существует
Then
// копируем файл с БД
If CopyFile (PChar (ExtractFileDir (Application. ExeName) +'\baget. mdb'), PChar (SaveArchivDialog. FileName),true)
Then
Application. MessageBox ('База данных успешно скопирована! ', 'База данных', MB_OK + MB_ICONASTERISK)
Else
Application. MessageBox ('Ошибка копирования БД', 'База данных', MB_OK + MB_ICONError)
Else
Application. MessageBox ('Файл базы данных не существует! ', 'База данных', MB_OK + MB_ICONERRor);
End
Else
Else
Application. MessageBox ('Нельзя выполнить архивацию, т.к данные в режиме редактирования! ', 'Закрытие окна', MB_OK + MB_ICONERROR);
end;
// Очистить заказы
procedure TMainForm. Act_Zak_ClearExecute (Sender: TObject);
begin
DM1. OchistitZakaz: =True; // устанавливаем флаг ОЧИСТКИ заказа
DM1. ClearTable (Application. Handle, TADOQuery (DBGridMain. DataSource. Dataset)); // очищаем
DM1. OchistitZakaz: =False; // сбрасываем флаг ОЧИСТКИ заказа
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
end;
// процедура устанавливает уровень доступа
// 1 - мастер, 2 - менеджер
procedure TMainForm. SetLevelAccess (RezhimRaboti: byte);
begin
case RezhimRaboti of
1: Begin
// отключаем всё ненужное
EdIzmAct. Enabled: =False;
ActMaterBaget. Enabled: =False;
ActMaterKomplekt. Enabled: =False;
ActMaterRaznoe. Enabled: =False;
Act_Master_Bagets. Enabled: =False;
Act_Master_Komplekt. Enabled: =False;
Act_Master_Raznoe. Enabled: =False;
ActSkladBagets. Enabled: =False;
ActSkladKomplekt. Enabled: =False;
ActSkladRaznoe. Enabled: =False;
// Act_Zak_Clear. Enabled: =False;
Act_R_Ostatki. Enabled: =False;
Act_R_PriceList. Enabled: =True;
Act_R_SummaZakazov. Enabled: =False;
Act_R_ZakaziKDate. Enabled: =False;
Act_R_ProdazhiMater. Enabled: =False;
Act_Zash_ChangePass. Enabled: =False;
End;
2: Begin
// пока ничего:)
End;
end;
end;
// Защита - изменить пароль
procedure TMainForm. Act_Zash_ChangePassExecute (Sender: TObject);
Var
MyChangePassForm: TChangePassForm;
begin
MyChangePassForm: =TChangePassForm. Create (Owner);
MyChangePassForm. ShowModal;
MyChangePassForm. Free;
end;
// "заказы - добавить"
procedure TMainForm. Act_Zak_AddExecute (Sender: TObject);
begin
If DBGridMain. DataSource. DataSet. CanModify
Then
DBGridMain. DataSource. DataSet. Append
Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION);
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
Act_Izd_Add. Enabled: =False;
//
BitAdd. Enabled: =False;
BitDel. Enabled: =False;
BitEdit. Enabled: =False;
BitSave. Enabled: =True;
BitCan. Enabled: =True;
//
BitIzd_Add. Enabled: =false;
BitIzd_Edit. Enabled: =false;
BitIzd_Del. Enabled: =false;
//
DBEditNomerZakaza. SetFocus;
end;
// при щелчке по ячейкам таблицы заказов
procedure TMainForm. DBGridMainCellClick (Column: TColumn);
begin
DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain);
DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave);
//
if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False)
then
begin
{BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False; }
BitIzd_Del. Enabled: =false;
BitIzd_Edit. Enabled: =false;
end;
//
if (Act_Izd_Edit. Enabled=true) and (Act_Izd_Del. Enabled=true)
then
begin
{BitIzd_Add. Enabled: =True;
BitIzd_Save. Enabled: =False;
BitIzd_Can. Enabled: =False; }
BitIzd_Del. Enabled: =true;
BitIzd_Edit. Enabled: =true;
end;
//
end;
// происходит при закрытии программы
procedure TMainForm. FormClose (Sender: TObject; var Action: TCloseAction);
begin
AnimateWindow (handle, 500, AW_BLEND or AW_HIDE);
PlaySound ('Bye. wav',0,SND_SYNC);
end;
// процедура динамически создаёт форму "о программе"
procedure TMainForm. Act_AboutExecute (Sender: TObject);
Var
MyAboutUnitForm: TAboutForm;
begin
MyAboutUnitForm: =TAboutForm. Create (Owner);
MyAboutUnitForm. ShowModal;
MyAboutUnitForm. Free;
end;
procedure TMainForm. Act_HelpExecute (Sender: TObject);
begin
if FileExists (ExtractFileDir (Application. ExeName) +'\help. chm') // если файл существует
Then
// WinExec (PChar (ExtractFileDir (Application. ExeName) +'\help. chm'), SW_Restore) // запустить справку
ShellExecute (Handle,nil,'help. chm',nil,nil,SW_RESTORE)
Else
Application. MessageBox ('Файл справки не найден! ', 'Справка', MB_OK + MB_ICONASTERISK);
end;
end.
Приложение Б
Образец бланка заказа генерируемого системой
Приложение В
Перечень замечаний и предложений нормоконтролера
Наименование документа |
№ стр. (листа) |
Условные пометки |
Содержание изменений и предложений |
Примечание |
|
Пояснительная записка |
|||||
Графическая часть |
Подобные документы
Системное, инструментальное и прикладное программное обеспечение. Современные настольные издательские системы. Программные средства мультимедиа. Системы искусственного интеллекта. Прикладное программное обеспечение автоматизированного проектирования.
реферат [59,4 K], добавлен 18.12.2013Аппаратное, сетевое, программное обеспечение предприятия. Разработка системы электронного документооборота. Последовательность создания и технология построения информационной системы. Выбор системы управления базами данных, среды разработки приложения.
дипломная работа [1,5 M], добавлен 15.10.2013Разработка программного комплекса "ConstructDocs", предназначенного для ведения документооборота строительной организации: идентификация информационного пространства, выделение сущностей, выбор языка программирования и аппаратного обеспечения системы.
дипломная работа [3,1 M], добавлен 07.09.2011Основное программное обеспечение для автоматизации производства. Финансовые и коммуникационные системы. Системы планирования и управления. Текстовые редакторы и табличные процессоры. Финансовое программное обеспечение. Шрифтовые технологии в документах.
шпаргалка [551,9 K], добавлен 16.08.2010Системное и прикладное программное обеспечение. Выполнение программ, хранение данных и взаимодействие пользователя с компьютером. Возможности операционных систем. Системы технического обслуживания. Системы обработки электронных таблиц и текста.
презентация [15,9 K], добавлен 06.01.2014Программное обеспечение как совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ. Системное ПО (программы общего пользования), прикладное и инструментальное (системы программирования).
реферат [73,1 K], добавлен 04.06.2010Вычислительные системы и программное обеспечение как важнейшие разделы информатики, условия перехода общества в информационную стадию развития. Развитие вычислительных систем и персональных компьютеров. Операционные системы и системы программирования.
реферат [906,9 K], добавлен 18.01.2011Классификация программного обеспечения, его особенности, назначение. Программное обеспечение для работы с текстом, изображением, прикладное, офисное, для работы в Интернете. Системы программирования, специфика программного обеспечения, что такое вирусы.
презентация [1,2 M], добавлен 25.02.2010Прикладное программное обеспечение, его виды, классификация, тенденции развития: редакторы документов, табличные процессоры, графические редакторы, правовые базы данных, системы автоматизированного проектирования. Роль и назначение системных программ.
реферат [26,1 K], добавлен 29.11.2012Прикладное программное обеспечение специального и общего назначения. Программы, обрабатывающие тексты и основное назначение электронных таблиц, системы управления базами данных и графические изображения. Интегрированные программные средства решения задач.
курсовая работа [1,0 M], добавлен 24.03.2012