Смекни!
smekni.com

Разработка системы автоматизированного учета для багетной мастерской (стр. 27 из 27)

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) +'&bsol;baget. mdb') // если файл существует

Then

// копируем файл с БД

If CopyFile (PChar (ExtractFileDir (Application. ExeName) +'&bsol;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) +'&bsol;help. chm') // если файл существует

Then

// WinExec (PChar (ExtractFileDir (Application. ExeName) +'&bsol;help. chm'), SW_Restore) // запустить справку

ShellExecute (Handle,nil,'help. chm',nil,nil,SW_RESTORE)

Else

Application. MessageBox ('Файл справки не найден! ', 'Справка', MB_OK + MB_ICONASTERISK);

end;

end.

Приложение Б

Образец бланка заказа генерируемого системой

Приложение В

Перечень замечаний и предложений нормоконтролера

Наименование документа № стр. (листа) Условные пометки Содержание изменений и предложений Примечание
Пояснительная записка
Графическая часть