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.
Образец бланка заказа генерируемого системой
Перечень замечаний и предложений нормоконтролера
Наименование документа | № стр. (листа) | Условные пометки | Содержание изменений и предложений | Примечание |
Пояснительная записка | ||||
Графическая часть |