Документ Microsoft Office Word (2) (1020916), страница 3
Текст из файла (страница 3)
Form3: TForm3;
implementation
uses Unit2;
{$R *.dfm}
//Получить массив названия и назначения полей 1- едит; 2-Кобобокс; 3-Таблица; 4-АктивацияДокумента;
Function GetFieldsMas(Word:String):TResultArray;
Begin
result[1,1] := '0';
result[2,1] := '0';
result[3,1] := '0';
result[4,1] := '0';
result[5,1] := '0';
If Word = 'Departments' Then Begin
result[1, 1] := '1';
result[1, 2] := 'Name';
result[2, 1] := '1';
result[2, 2] := 'Adress';
result[3, 1] := '1';
result[3, 2] := 'Phone';
End;
If Word = 'Employees' Then Begin
result[1, 1] := '1';
result[1, 2] := 'Name';
result[2, 1] := '2';
result[2, 2] := 'ID_Department';
result[2, 3] := 'Departments';
result[3, 1] := '2';
result[3, 2] := 'ID_Boss';
result[3, 3] := 'Employees';
End;
If Word = 'TimeControl' Then Begin
result[1, 1] := '1';
result[1, 2] := 'DocumentDate';
result[2, 1] := '1';
result[2, 2] := 'DocumentNumber';
result[3, 1] := '2';
result[3, 2] := 'ID_Employee';
result[3, 3] := 'Employees';
result[4, 1] := '3';
End;
End;
procedure TForm3.AddRowClick(Sender: TObject);
begin
DM.Table_TimeControl.Append;
end;
procedure TForm3.CloseFormClick(Sender: TObject);
Var
TextQuery:String;
Begin
If P_NameForm = 'TimeControl' Then Begin
DM.ADOStoredProc.ProcedureName := 'ClearDTable_TimeControl;1';
DM.ADOStoredProc.ExecProc;
DM.Table_TimeControl.Requery();
End;
Close();
End;
procedure TForm3.DateTimePickerChange(Sender: TObject);
begin
If Table.DataSource.State In [dsEdit, dsInsert] Then
If Table.Selectedindex = 1 then
DM.Table_TimecontrolInWork.Value := StartOfTheDay(DateTimePicker.DateTime)
Else If Table.Selectedindex = 2 Then
DM.Table_TimecontrolOutWork.Value := StartOfTheDay(DateTimePicker.DateTime);
End;
procedure TForm3.DateTimePickerDropDown(Sender: TObject);
begin
Table.DataSource.Edit;
end;
procedure TForm3.DelRowClick(Sender: TObject);
begin
DM.Table_TimeControl.Delete;
end;
Procedure TForm3.OkClick(Sender: TObject);
Var
MasField : TResultArray;
TextQuery, Values, ComboBoxText, EditText, IDForTable: String;
i : Integer;
Table : TADOTable;
Begin
If P_NameForm = 'TimeControl' Then
if DM.Table_TimeControl.UpdateStatus = usModified Then
DM.Table_TimeControl.Post;
Values := '';
MasField := GetFieldsMas(P_NameForm);
For i := 1 to 5 do Begin
If MasField[i,1] = '1' Then Begin
EditText := TEdit(FindComponent('Edit'+ IntToStr(i))).Text;
Values := Values + #39 + EditText + #39 + ',';
End;
If MasField[i,1] = '2' Then Begin
ComboBoxText := TComboBox(FindComponent('ComboBox'+ IntToStr(i))).Text;
Table := DM.FindComponent(MasField[i,3]) As TADOTable;
If Table.Locate('Name', ComboBoxText, [loCaseInsensitive,loPartialKey]) = True Then
Values := Values + Table.FieldByName('ID').Asstring + ','
Else
Values := Values + 'Null,';
End;
End;
Values := Copy(Values, 1 , Length(Values) - 1);
If F_Add Then
TextQuery := 'Exec Add' + P_NameForm + ' ' + Values
Else
TextQuery := 'Exec Update' + P_NameForm + ' ' + IntToStr(ID_ForUpdate) + ', ' + Values;
DM.RunQuery.SQL.Clear();
DM.RunQuery.SQL.Append(TextQuery);
DM.RunQuery.ExecSQL();
Table := DM.FindComponent(P_NameForm) As TADOTable;
Table.Requery();
If P_NameForm = 'TimeControl' Then Begin
//Добавить СТОРПРОК
TextQuery := 'Exec DeleteInDTable_TimeControl ' + #39 + IntToStr(ID_ForUpdate) + #39;
DM.RunQuery.SQL.Clear();
DM.RunQuery.SQL.Append(TextQuery);
DM.RunQuery.ExecSQL();
TextQuery := 'Exec UpdateTableTimeControl ' + #39 + IntToStr(ID_ForUpdate) + #39;
DM.RunQuery.SQL.Clear();
DM.RunQuery.SQL.Append(TextQuery);
DM.RunQuery.ExecSQL();
End;
Close();
End;
Procedure TForm3.TableColExit(Sender: TObject);
Begin
If (Table.SelectedField.FieldName = 'InWork') Or (Table.SelectedField.FieldName = 'OutWork') Then
DateTimePicker.Visible := False
End;
Procedure TForm3.TableDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin
If (gdFocused in State) Then Begin
If (Column.Field.FieldName = 'InWork') OR (Column.Field.FieldName = 'OutWork') Then
With DateTimePicker do Begin
Left := Rect.Left + Table.Left + 1;
Top := Rect.Top + Table.Top + 21;
Width := Rect.Right - Rect.Left + 2;
Width := Rect.Right - Rect.Left + 2;
Height := Rect.Bottom - Rect.Top + 2;
Visible := True;
End;
End;
End;
end.
Unit 4. pas
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Menus;
type
TForm4 = class(TForm)
List: TDBGrid;
Button_Add: TButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure Button_AddClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ListTitleClick(Column: TColumn);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
P_NameForm:String;
end;
var
Form4: TForm4;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
DM.ShowAddForm(P_NameForm, False);
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
DM.DeleteObject(P_NameForm);
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
Close();
end;
procedure TForm4.Button_AddClick(Sender: TObject);
begin
DM.ShowAddForm(P_NameForm, True);
end;
procedure TForm4.ListTitleClick(Column: TColumn);
begin
DM.Sort(P_NameForm, Column.FieldName);
end;
procedure TForm4.N1Click(Sender: TObject);
begin
DM.ShowFilterForm(P_NameForm);
end;
procedure TForm4.N2Click(Sender: TObject);
Begin
DM.Employees.Filtered := False;
DM.TimeControl.Filtered := False;
DM.Departments.Filtered := False;
end;
end.
Unit 5 . pas
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ADODB;
type
TFilter = class(TForm)
Fields: TComboBox;
Value: TEdit;
Button1: TButton;
Button2: TButton;
FilterON: TCheckBox;
Label1: TLabel;
Label2: TLabel;
Result: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
Procedure SearchInTable();
public
P_NameForm : String;
end;
var
Filter: TFilter;
implementation
uses Unit2;
{$R *.dfm}
//Поиск по таблице
Procedure TFilter.SearchInTable();
Var
i,j: Integer;
TextQuery : String;
SearchField : String;
Table : TADOTable;
Begin
SearchField := '';
Table := DM.FindComponent(P_NameForm) AS TADOTable;
Table.First;
For I := 0 to Table.Fields.Count - 1 do
If Table.Fields[i].DisplayLabel = Fields.Text Then
SearchField := Table.Fields[i].FieldName;
If SearchField = '' Then Exit;
DM.RunQuery.SQL.Clear;
DM.RunQuery.SQL.Append('Select * From SearchIn' + P_NameForm + '(' + #39 +SearchField + #39 + ' , ' + #39 + '%' + Value.Text + '%' + #39 + ')');
DM.RunQuery.Active := True;
DM.RunQuery.ExecSQL();
Result.Clear;
Result.Lines.Add('Найдено ' + IntToStr(DM.RunQuery.RecordCount) + ' записей');
DM.RunQuery.First;
While Not DM.RunQuery.Eof Do Begin
SearchField := '';
For i:= 0 to DM.RunQuery.Fields.Count - 1 Do
Try
j := StrToInt(DM.RunQuery.Fields[i].Value);
Except
SearchField := SearchField + ' ' + DM.RunQuery.Fields[i].Value + '|';
End;
Result.Lines.Add(SearchField);
DM.RunQuery.Next;
End;
End;
procedure TFilter.Button1Click(Sender: TObject);
begin
If FilterON.Checked = True Then
DM.FilterTable(P_NameForm, Fields.Text, Value.Text)
Else Begin
SearchInTable();
Height := 317;
Result.Visible := True;
End;
end;
procedure TFilter.Button2Click(Sender: TObject);
begin
Close();
end;
end.
5. Скриншоты программы