Смекни!
smekni.com

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

begin

With DB_Data do Sub_Program.A_LST(T_StatP,SP_List,L_StatP.Text,L_StatP,3);

end;

procedure TNucll.Red_LSTClick(Sender: TObject);

begin

WithDB_Datado

//Определяем номер ячейки с фокусом и заполняем списки

Case Grid.Columns.Grid.SelectedIndex of

3 : Sub_Program.Show_ListRed(4,True); //Показываем окно редактора списков с нужным списком

4 : Sub_Program.Show_ListRed(0,True);

5 : Sub_Program.Show_ListRed(2,True);

6 : Sub_Program.Show_ListRed(1,True);

8 : Sub_Program.Show_ListRed(3,True);

Else Sub_Program.Show_ListRed(0,True);

End;

end;

procedure TNucll.MoveBy_PClick(Sender: TObject);

begin

Sub_Program.MBR(1);

end;

procedure TNucll.MoveBy_NClick(Sender: TObject);

begin

Sub_Program.MBR(2);

end;

procedure TNucll.E_NumEnter(Sender: TObject);

begin

NoATL := True;

{If error_save = False Then Field_val := E_Num.Text

Else error_save := False;

Nucll.Caption := Field_Val

//Num_Ins := StrToInt(E_Num.Text);}

end;

procedure TNucll.E_NumExit(Sender: TObject);

begin

NoATL := False;

//ReFresh_Tab(E_Num.Text);

end;

procedure TNucll.GridExit(Sender: TObject);

begin

Sub_Program.Colum_Adress; //Проверяемрасположениестолбцов

InGRD := False;

end;

procedure TNucll.GridEnter(Sender: TObject);

begin

{ If Grid.Columns.Grid.SelectedIndex = 0 Then

Num_Ins := Grid.Columns.Grid.SelectedField.Value;

Sub_Program.Colum_Adress;

Then Grid.Columns.Grid.SelectedIndex of

CN[6] CN[7],CN[8],CN[9],CN[10],CN[11]: Field_val := Grid.Columns.Grid.SelectedField.Value;}

InGRD := True;

Field_val := Grid.Columns.Grid.SelectedField.Value;

end;

procedure TNucll.MB_LSTMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Nucll.FocusControl(Ap_Button);

end;

procedure TNucll.GridDblClick(Sender: TObject);

begin

Try

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

DB_Data.N_Gen.Edit;

Right_num := DB_Data.Num.Value;

Nucll.FocusControl(Grid.Columns.Grid);

Except

Application.MessageBox('Не удается превести запись в режим редактирования.',

'D-Art: Aurora',mb_Ok + mb_IconHand);

Abort;

End;

end;

procedure TNucll.HelpClick(Sender: TObject);

begin

//Отменяемсделанныеизменения

If TAMode = am_Add Then SV_Click := True

Else SV_Click := False;

CL_Click := True;

DB_DAta.N_Gen.CancelBatch;

DB_Data.N_MIO.CancelBatch;

DB_Data.N_MIO.Requery;

If TAMode <> am_None Then DB_Data.N_Gen.Edit;

end;

procedure TNucll.E_SumEnter(Sender: TObject);

begin

NoATL := True;

Field_Val := E_Sum.Text;

end;

procedure TNucll.E_DateEnter(Sender: TObject);

begin

NoATL := True;

Field_Val := E_Date.Text;

end;

procedure TNucll.E_DateExit(Sender: TObject);

begin

//DB_Data.FDateSetText(DB_Data.FDate,E_Date.Text);

NoATL := False; end; end.

//ПРОЕКТ "AURORA"

//Модуль данных - объекты для работы с БД

unit Av_DBData;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ToolWin, ExtCtrls, DB, ADODB, DBGrids;

type

TStr_UP = Function(S: PChar): PChar; stdcall;

//TInsstr = Function(SubS, S: PChar; Index: integer): PChar; stdcall;

TSS = Set of Char;

TDB_Data = class(TDataModule)

Nuclls: TADOConnection;

N_Gen: TADOTable;

N_MIO: TADOTable;

DS_Gen: TDataSource;

Num: TIntegerField;

Client: TWideStringField;

Fio_P: TWideStringField;

Stat_P: TWideStringField;

Fio_O: TWideStringField;

Stat_O: TWideStringField;

NDS_Sum: TCurrencyField;

Lists: TADOConnection;

DS_Work: TDataSource;

T_Client: TADOTable;

DS_Client: TDataSource;

Without_NDS: TCurrencyField;

End_Sum: TCurrencyField;

T_FioO: TADOTable;

DS_FioO: TDataSource;

T_StatO: TADOTable;

DS_StatO: TDataSource;

T_StatP: TADOTable;

DS_StatP: TDataSource;

T_Work: TADOTable;

W_List: TWideStringField;

FO_List: TWideStringField;

SO_List: TWideStringField;

SP_List: TWideStringField;

NSP: TWideStringField;

Sile: TWideStringField;

Many: TWideStringField;

Max_Num: TADOQuery;

MN: TIntegerField;

DS_MIO: TDataSource;

M_Values: TWideStringField;

M_SW: TBCDField;

C_List: TWideStringField;

AllSum: TFloatField;

Sectabs: TADOQuery;

Primtabs: TADOQuery;

Id: TAutoIncField;

N_MIOMInc: TAutoIncField;

M_id: TIntegerField;

Querys: TADOConnection;

Q_Teach: TADOTable;

DS_Teach: TDataSource;

Q_Teachinc: TAutoIncField;

Fields: TWideStringField;

Teach_F: TWideStringField;

Id_tab: TWideStringField;

Del_Query: TADOQuery;

QOU: TADOQuery;

DS_QOU: TDataSource;

Teach_V: TStringField;

DT: TWordField;

Selnull: TBooleanField;

NewData: TWideStringField;

Lng: TIntegerField;

QTValues: TWideStringField;

Ed_Query: TADOQuery;

Sum: TBCDField;

Work: TWideStringField;

FDate: TDateTimeField;

Teach_USL: TMemoField;

Mnds: TCurrencyField;

MWnds: TCurrencyField;

Lk_use: TBooleanField;

str_date: TStringField;

Q_Rep: TADOQuery;

QRep_DS: TDataSource;

M_count: TIntegerField;

Q_RepExpr1000: TBCDField;

Q_RepTWork: TWideStringField;

Q_RepNumpp: TIntegerField;

Q_RepExpr1002: TBCDField;

Q_Rep2: TADOQuery;

DS_QR2: TDataSource;

Q_Rep2Expr1000: TBCDField;

Q_Rep2TWork: TWideStringField;

Q_Rep2Expr1002: TIntegerField;

Q_Rep2Numpp: TIntegerField;

Del_ALLT: TADOQuery;

procedure N_GenCalcFields(DataSet: TDataSet);

procedure NumValidate(Sender: TField);

procedure N_GenBeforeScroll(DataSet: TDataSet);

procedure N_GenAfterPost(DataSet: TDataSet);

procedure N_GenAfterEdit(DataSet: TDataSet);

procedure FDateValidate(Sender: TField);

procedure N_GenPostError(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction);

procedure N_GenNewRecord(DataSet: TDataSet);

procedure N_GenAfterInsert(DataSet: TDataSet);

procedure NSPValidate(Sender: TField);

procedure SileValidate(Sender: TField);

procedure ManyValidate(Sender: TField);

procedure SumValidate(Sender: TField);

procedure N_MIONewRecord(DataSet: TDataSet);

procedure N_GenBeforePost(DataSet: TDataSet);

procedure N_GenBeforeEdit(DataSet: TDataSet);

procedure N_GenAfterDelete(DataSet: TDataSet);

procedure N_GenBeforeDelete(DataSet: TDataSet);

procedure N_GenDeleteError(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction);

procedure N_GenEditError(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction);

procedure T_WorkBeforePost(DataSet: TDataSet);

procedure N_GenAfterScroll(DataSet: TDataSet);

procedure N_MIOAfterInsert(DataSet: TDataSet);

procedure N_MIOPostError(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction);

procedure N_MIOAfterPost(DataSet: TDataSet);

procedure N_MIOAfterScroll(DataSet: TDataSet);

procedure N_MIOCalcFields(DataSet: TDataSet);

procedure N_MIOBeforePost(DataSet: TDataSet);

procedure Q_TeachCalcFields(DataSet: TDataSet);

procedure Q_TeachAfterScroll(DataSet: TDataSet);

procedure QTValuesChange(Sender: TField);

procedure Q_TeachBeforePost(DataSet: TDataSet);

procedure FDateSetText(Sender: TField; const Text: String);

Function Ins_Str(SubS, S: string; Index: integer): string;

procedure Q_RepCalcFields(DataSet: TDataSet);

procedure Q_Rep2CalcFields(DataSet: TDataSet);

procedure QOUAfterOpen(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DB_Data: TDB_Data;

Nds_v, Nsp_v: real;

RD : TDateTime;

SV_Qes : integer;

//Old_Val : Array[1..12] of Variant;

Str_UP : TStr_UP;

Txt_UP : String;

No_SV, DoPR, error_save, DOQAS, UB_MIO : boolean;

implementation

uses Av_Nuclls, Av_General, Sub_Program, Calend, Av_Data, Av_ListRed,

Av_ManyW, Av_Querys, Av_QLibrary;

{$R *.dfm}

procedure TDB_Data.N_GenCalcFields(DataSet: TDataSet);

begin

NDS_Sum.Value := Sum.Value - (Sum.Value*100)/(100 + 100 * Nds_v); //СуммаНДС

Without_NDS.Value := Sum.Value - NDS_Sum.Value; //СуммабезНДС

If NSP.Value = 'Да' Then

End_Sum.Value := Sum.Value + (Sum.Value * Nsp_v) //Итоговаясумма

Else

End_Sum.Value := Sum.Value;

//Формируемтекстовоепредставлениедаты

If FDate.AsString <> '' Then str_date.Value := Sub_Program.D_STR(FDate.AsString);

end;

procedure TDB_Data.NumValidate(Sender: TField);

begin

//Определяем правильность номера накладной

IfNum.Value <= 0 Then

begin

Nucll.E_Num.Text := Right_num;

Nucll.Grid.Columns.Grid.SelectedField.Value := Right_num;

Application.MessageBox('Неверноезначение! Номернакладнойвведеннеправильно.','D-Art: Aurora',mb_Ok + mb_IconHand);

Abort;

end;

end;

procedure NoAccess;

begin

TAMode := am_None;//Фиксируемсохранение

Nucll.Grid.Options := [dgTitles,dgIndicator,dgColumnResize,dgColLines,

dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection,

dgCancelOnExit];

end;

procedure TDB_Data.N_GenBeforeScroll(DataSet: TDataSet);

begin

//Записываемтехническиеданные

If TAMode <> am_None Then N_GenBeforePost(N_Gen);

{begin

N_Gen.Edit; //Перводим таблицу в режим редактирования

RD := StrToDate(FDate.Value); //Преобразуем дату в правильный формат

FDate.Value := DateToStr(RD);

Sub_Program.Date_Val; //Вычисляем значения дня, месяца и года

Real_Sum.Value := End_Sum.Value;

N_Gen.Post; //Сохраняем изменения в таблице}

NoAccess;

Deactive_Ed; //Показываем сохранение

//end;}

CH_F := False; //Можно снимать флажок мно-ва работ

CH_F2 := False; //Можно устанавливать флажок

Screen.Cursor := crDefault;

end;

procedure TDB_Data.N_GenAfterPost(DataSet: TDataSet);

begin

//Показываем сохраненение

NoAccess;

Deactive_Ed;

CH_F := False; //Можно снимать флажок мно-ва работ

CH_F2 := False; //Можно устанавливать флажок}

Screen.Cursor := crDefault;

If SV_Click = False Then

begin

Try

N_Gen.UpdateBatch;

Sub_Program.Write_Stat(N_Gen,Primtabs,GEneral.Gen_Stat);

Except

error_save := true;

Screen.Cursor := crDefault;

Application.MessageBox('Не удается сохранить изменения в таблице. Возможно введен неуникальный номер накладной, исправьте его и попробуйте ещё раз.',

'D-Art: Aurora',mb_Ok + mb_IconHand);

DB_Data.N_Gen.Edit;

Num.Value := Right_num;

SV_Click := False;

//Выбираем оъект для предачи фокуса ввода

Case View_Mode of

vm_TR,vm_RO : Nucll.FocusControl(Nucll.E_Num); //Предаем фокус ввода первому полю редактора

vm_TO : Nucll.FocusControl(Nucll.Grid); //Предаем фокус ввода сетке

End; //Case

Abort;

End;

end;

CL_Click := False;

SV_Click := False;

Cancel_Cls := False; //Можно закрыть окно

end;

procedure TDB_Data.N_GenAfterEdit(DataSet: TDataSet);

begin

TAMode := am_Edit; //Фиксируем режим редактирования

SV_Click := False;

Nucll.Grid.Options := [dgEditing,dgAlwaysShowEditor,dgTitles,dgIndicator,dgColumnResize,

dgColLines,dgRowLines,dgTabs,dgAlwaysShowSelection,dgCancelOnExit];

//Показываем режим редактирования

Active_Ed;

Screen.Cursor := crDefault;

end;

procedure TDB_Data.FDateValidate(Sender: TField);

var RD1 : TDateTime;

begin

Try

RD1 := Sender.Value;

Except

Nucll.E_Date.Text := Field_val;

If InGRD = True Then Nucll.Grid.Columns.Grid.SelectedField.Value := Field_val;

Application.MessageBox('Не верное значение даты выписки! Воспользуйтесь календарем для ввода даты.',

'D-Art: Aurora',mb_Ok + mb_IconHand);

Abort;

End;

end;

procedure TDB_Data.N_GenPostError(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction);

begin

{Screen.Cursor := crDefault;

Application.MessageBox('Не удается сохранить изменения в таблице. Возможно введен неуникальный номер накладной.',

'D-Art: Aurora',mb_Ok + mb_IconHand);

SV_Click := False;

Abort;

//Выбираем оъект для предачи фокуса ввода

Case View_Mode of

vm_TR,vm_RO : Nucll.FocusControl(Nucll.E_Num); //Предаем фокус ввода первому полю редактора

vm_TO : Nucll.FocusControl(Nucll.Grid); //Предаем фокус ввода сетке

End; //Case}

end;

procedure TDB_Data.N_GenNewRecord(DataSet: TDataSet);

begin

Num.Value := MN.Value + 1; //Увиличиваем номер на 1 и вставляем в таблицу

FDate.Value := Date; //Вставляем текущую дату

Sum.Value := 0.00; //Вставляем начальную сумму

NSP.Value := 'Нет'; //НСП

Many.Value := 'Нет'; //Множественность записей

Sile.Value := 'Нет'; //Отметка об уплате

Num_Ins := DB_Data.Num.Value;

end;

procedure TDB_Data.N_GenAfterInsert(DataSet: TDataSet);

begin

TAMode := am_Add; //Фиксируем режим добавления

Nucll.Grid.Options := [dgEditing,dgAlwaysShowEditor,dgTitles,dgIndicator,dgColumnResize,

dgColLines,dgRowLines,dgTabs,dgAlwaysShowSelection,dgCancelOnExit];

//Показываем режим добавления

Active_Ed;

Screen.Cursor := crDefault;

end;

procedure TDB_Data.NSPValidate(Sender: TField);

begin

//Проверяем правильность значений логических полей

Sub_Program.Bool_ValiDate(NSP);

end;

procedure TDB_Data.SileValidate(Sender: TField);

begin

Sub_Program.Bool_ValiDate(Sile);

end;

procedure TDB_Data.ManyValidate(Sender: TField);

begin

Sub_Program.Bool_ValiDate(Many);

end;

procedure TDB_Data.SumValidate(Sender: TField);

begin

//Проверяем правильность введенной суммы

IfSum.Value < 0 Then

begin

Nucll.E_Sum.Text := Field_val;

If InGRD = True Then Nucll.Grid.Columns.Grid.SelectedField.Value := Field_val;Application.MessageBox('Неверноезначение! Сумма накладной не может быть отрицательной.',

'D-Art: Aurora', mb_Ok+mb_IconStop);

Abort;

end;

end;

procedure TDB_Data.N_MIONewRecord(DataSet: TDataSet);

begin

M_id.Value := Id.Value; //Указываем номер нокладной (реальной записи)

M_Count.Value := 1;

M_Values.Value := 'Товар '+IntToStr(Num.Value);

M_SW.Value := 0;

end;

procedure TDB_Data.N_GenBeforePost(DataSet: TDataSet);

begin

//ShowMessage('POST!');

If SV_Click = False Then

begin

SV_Qes :=Application.MessageBox(PChar('Небылисохраненыизменениявнакладной №'+ DB_Data.Num.AsString + '. Сохранитьизменения?' ),