📄 tas210_01.pas.svn-base
字号:
unit Tas210_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_11, dxExEdtr, StdCtrls, wwdbdatetimepicker, Buttons, DB,
ADODB, ActnList, Menus, dxCntner, dxTL, dxDBCtrl, dxDBGrid, ExtCtrls,
ComCtrls, ToolWin, dxDBTLCl, dxGrClms;
type
TTas210_01Form = class(TBas200_11Form)
lblDate: TLabel;
sbSearch: TSpeedButton;
lblType: TLabel;
lblOption: TLabel;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
cbType: TComboBox;
cbOption: TComboBox;
qryTas510: TADOQuery;
qryHrm150: TADOQuery;
ADODataSet1FCode: TStringField;
ADODataSet1FName: TStringField;
ADODataSet1FType: TStringField;
ADODataSet1FStartDate: TDateTimeField;
ADODataSet1FEndDate: TDateTimeField;
ADODataSet1FTaskCode: TStringField;
ADODataSet1FTaskName: TStringField;
dxDBGrid1FCode: TdxDBGridMaskColumn;
dxDBGrid1FName: TdxDBGridMaskColumn;
dxDBGrid1FType: TdxDBGridMaskColumn;
dxDBGrid1FStartDate: TdxDBGridDateColumn;
dxDBGrid1FEndDate: TdxDBGridDateColumn;
dxDBGrid1FTaskCode: TdxDBGridMaskColumn;
dxDBGrid1FTaskName: TdxDBGridMaskColumn;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ActPrintExecute(Sender: TObject);
private
ADays:array[1..7] of string;
procedure ByEmpolyee(AFromDate,AToDate:TDateTime);
procedure ByCustomer(AFromDate,AToDate:TDateTime);
{ Private declarations }
public
procedure SetInterface; override;
procedure BrowseEvent; override;
procedure RefreshEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Tas210_01Form: TTas210_01Form;
implementation
uses SYSDATA, CommFun, Tas510_02;
{$R *.dfm}
procedure TTas210_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('TAS21001001'); //工作报告查询
lblType.Caption:=GetDBString('TAS21001002'); //类型
lblOption.Caption:=GetDBString('TAS21001003'); //范围
lblDate.Caption:=GetDBString('TAS21001004'); //日期
sbSearch.Caption:=GetDBString('TAS21001005'); //查询
cbType.Clear;
cbType.Items.Add(GetDBString('TAS21001006')); //按员工
cbType.Items.Add(GetDBString('TAS21001007')); //按客户
cbType.ItemIndex:=0;
cbOption.Clear;
cbOption.Items.Add(GetDBString('TAS21001008')); //仅已分配的任务
cbOption.Items.Add(GetDBString('TAS21001009')); //仅已汇报的任务
cbOption.Items.Add(GetDBString('TAS21001010')); //仅未汇报的任务
cbOption.ItemIndex:=0;
ADays[1]:=GetDBString('TAS21001011'); //星期日
ADays[2]:=GetDBString('TAS21001012'); //星期一
ADays[3]:=GetDBString('TAS21001013'); //星期二
ADays[4]:=GetDBString('TAS21001014'); //星期三
ADays[5]:=GetDBString('TAS21001015'); //星期四
ADays[6]:=GetDBString('TAS21001016'); //星期五
ADays[7]:=GetDBString('TAS21001017'); //星期六
end;
//取得本周的第一天的日期
function GetWeekFirstDate(ADate:TDateTime):TDateTime;
begin
Result:=ADate-DayOfWeek(ADate)+1;
end;
procedure TTas210_01Form.FormCreate(Sender: TObject);
var
ADate:TDateTime;
begin
inherited;
ADate:=GetServerDate;
edtFromDate.Date:=ADate-DayOfWeek(ADate)+1;
edtToDate.Date:=edtFromDate.Date+6;
qryHrm150.Open;
sbSearch.Click;
end;
procedure TTas210_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryHrm150.Close;
qryTas510.Close;
end;
procedure GetPerson(APersonNo:string;var AStringList:TStringList);
var
I:Integer;
S:String;
begin
if APersonNo='' then Exit;
for I:=1 to Length(APersonNo) do
begin
if Copy(APersonNo,I,1)='[' then
S:=''
else if Copy(APersonNo,I,1)=']' then
begin
AStringList.Add(trim(S));
S:='';
end else
S:=S+Copy(APersonNo,I,1);
end;
end;
//按员工
procedure TTas210_01Form.ByEmpolyee(AFromDate,AToDate:TDateTime);
var
AStartDate,AEndDate:TDateTime;
APersonNo,ATaskCode,ATaskName,S:string;
AStringList:TStringList;
I:Integer;
begin
AStringList:=TStringList.Create;
//用任务工单的实际开始日期不为空来判断该任务是否已经执行
//必须有工单
case cbOption.ItemIndex of
0:S:=''; //仅已分配的任务 (包含完成、执行、及非计划状态的任务,即有工单的任务,但不包含计划状态的任务;即)
1:S:=' and T520_009 is not null'; //仅已汇报的任务 (只包含已经执行的任务,实际开始日期不为空,即已经汇报的任务)
2:S:=' and T520_009 is null' //仅未汇报的任务 (只包含尚未执行的任务)
end;
qryTas510.Close;
qryTas510.SQL.Clear;
qryTas510.SQL.Add('select * from TAS520,TAS510 where T520_002=T510_001 and T520_006>='+GetDateString(AFromDate)+' and T520_006<='+GetDateString(AToDate));
if S<>'' then qryTas510.SQL.Add(S);
qryTas510.Open;
while not qryTas510.Eof do
begin
APersonNo:=qryTas510.FieldByName('T520_003').Value;
ATaskCode:=qryTas510.FieldByName('T510_001').Value;
ATaskName:=qryTas510.FieldByName('T510_002').Value;
AStartDate:=qryTas510.FieldByName('T520_006').Value;
AEndDate:=qryTas510.FieldByName('T520_007').Value;
if cbOption.ItemIndex=1 then
begin
AStartDate:=qryTas510.FieldByName('T520_009').Value;
AEndDate:=qryTas510.FieldByName('T520_010').Value;
end;
//循环处理每个执行人员
AStringList.Clear;
GetPerson(APersonNo,AStringList);
for I:=0 to AStringList.Count-1 do
begin
if qryHrm150.Locate('H150_001',AStringList[I],[]) then
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FCode').Value:=qryHrm150.FieldByName('H150_002').Value;
ADODataSet1.FieldByName('FName').Value:=qryHrm150.FieldByName('H150_003').Value;
ADODataSet1.FieldByName('FType').Value:=qryHrm150.FieldByName('H100_002').Value;
ADODataSet1.FieldByName('FStartDate').Value:=AStartDate;
ADODataSet1.FieldByName('FEndDate').Value:=AEndDate;
ADODataSet1.FieldByName('FTaskCode').Value:=ATaskCode;
ADODataSet1.FieldByName('FTaskName').Value:=ATaskName;
ADODataSet1.Post;
end;
end;
qryTas510.Next;
end;
AStringList.Free;
end;
//按客户
procedure TTas210_01Form.ByCustomer(AFromDate,AToDate:TDateTime);
var
AStartDate,AEndDate:TDateTime;
ACustNo,ATaskCode,ATaskName,S:string;
begin
//用任务工单的实际开始日期不为空来判断该任务是否已经执行
case cbOption.ItemIndex of
0:S:=''; //仅已分配的任务 (包含执行、未执行的任务,但不包含计划状态的任务)
1:S:=' and T520_009 is not null'; //仅已汇报的任务 (只包含已经执行的任务)
2:S:=' and T520_009 is null'; //仅未汇报的任务 (只包含尚未执行的任务)
end;
qryTas510.Close;
qryTas510.SQL.Clear;
qryTas510.SQL.Add('select * from TAS520,TAS510 where T520_002=T510_001 and T520_006>='+GetDateString(AFromDate)+' and T520_006<='+GetDateString(AToDate));
if S<>'' then qryTas510.SQL.Add(S);
qryTas510.SQL.Add('order by T510_016,T520_006');
qryTas510.Open;
while not qryTas510.Eof do
begin
ACustNo:=qryTas510.FieldByName('T510_016').AsString;
ATaskCode:=qryTas510.FieldByName('T510_001').Value;
ATaskName:=qryTas510.FieldByName('T510_002').Value;
AStartDate:=qryTas510.FieldByName('T520_006').Value;
AEndDate:=qryTas510.FieldByName('T520_007').Value;
if cbOption.ItemIndex=1 then
begin
AStartDate:=qryTas510.FieldByName('T520_009').Value;
AEndDate:=qryTas510.FieldByName('T520_010').Value;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select O150_002,O150_003,O110_002 from ORD150,ORD110 where O150_010=O110_001 and O150_001='+ACustNo);
SYSDM.qryQuery.Open;
ADODataSet1.Append;
ADODataSet1.FieldByName('FCode').Value:=SYSDM.qryQuery.FieldByName('O150_002').Value;
ADODataSet1.FieldByName('FName').Value:=SYSDM.qryQuery.FieldByName('O150_003').Value;
ADODataSet1.FieldByName('FType').Value:=SYSDM.qryQuery.FieldByName('O110_002').Value;
ADODataSet1.FieldByName('FStartDate').Value:=AStartDate;
ADODataSet1.FieldByName('FEndDate').Value:=AEndDate;
ADODataSet1.FieldByName('FTaskCode').Value:=ATaskCode;
ADODataSet1.FieldByName('FTaskName').Value:=ATaskName;
ADODataSet1.Post;
qryTas510.Next;
end;
end;
procedure TTas210_01Form.sbSearchClick(Sender: TObject);
var
AFromDate,AToDate:TDateTime;
begin
inherited;
//查询
if (edtFromDate.Text='') or (edtToDate.Text='') then
begin
ShowMsg('UMS10000319'); //起止日期不可为空
if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
Abort;
end;
if edtFromDate.Date>edtToDate.Date then
begin
ShowMsg('UMS10000320'); //结束日期不能小于起始日期
edtToDate.SetFocus;
Abort;
end;
AFromDate:=edtFromDate.Date;
AToDate:=edtToDate.Date;
Screen.Cursor:=crHourGlass;
LockWindowUpdate(Self.Handle);
//建立内存虚拟表
if Assigned(SYSDM.wwFilterDialog1.Form) then SYSDM.wwFilterDialog1.ClearFilter;
ADODataSet1.DisableControls;
ADODataSet1.Close;
ADODataSet1.FieldDefs.Clear;
ADODataSet1.FieldDefs.Add('FCode',ftString,30);
ADODataSet1.FieldDefs.Add('FName',ftString,50);
ADODataSet1.FieldDefs.Add('FType',ftString,30);
ADODataSet1.FieldDefs.Add('FStartDate',ftDateTime,0);
ADODataSet1.FieldDefs.Add('FEndDate',ftDateTime,0);
ADODataSet1.FieldDefs.Add('FTaskCode',ftString,30);
ADODataSet1.FieldDefs.Add('FTaskName',ftString,50);
ADODataSet1.CreateDataSet;
ADODataSet1.FieldByName('FStartDate').DisplayLabel:=GetDBString('TAS21001026'); //开始日期
ADODataSet1.FieldByName('FEndDate').DisplayLabel:=GetDBString('TAS21001027'); //完成日期
ADODataSet1.FieldByName('FTaskCode').DisplayLabel:=GetDBString('TAS21001022'); //任务编号
ADODataSet1.FieldByName('FTaskName').DisplayLabel:=GetDBString('TAS21001023'); //任务名称
if cbType.ItemIndex=0 then //按员工
begin
ADODataSet1.FieldByName('FCode').DisplayLabel:=GetDBString('TAS21001018'); //员工编号
ADODataSet1.FieldByName('FName').DisplayLabel:=GetDBString('TAS21001019'); //员工姓名
ADODataSet1.FieldByName('FType').DisplayLabel:=GetDBString('TAS21001024'); //部门名称
end else
if cbType.ItemIndex=1 then //按客户
begin
ADODataSet1.FieldByName('FCode').DisplayLabel:=GetDBString('TAS21001020'); //客户编号
ADODataSet1.FieldByName('FName').DisplayLabel:=GetDBString('TAS21001021'); //客户名称
ADODataSet1.FieldByName('FType').DisplayLabel:=GetDBString('TAS21001025'); //客户分类
end;
case cbType.ItemIndex of
0:ByEmpolyee(AFromDate,AToDate); //按员工
1:ByCustomer(AFromDate,AToDate); //按客户
end;
ADODataSet1.EnableControls;
LockWindowUpdate(0);
Screen.Cursor:=crDefault;
end;
procedure TTas210_01Form.FormShow(Sender: TObject);
begin
// inherited;
end;
procedure TTas210_01Form.ReportGetValue(const ParName: String; var ParValue: Variant);
begin
inherited;
if ParName='AType' then ParValue:=lblType.Caption //类型
else if ParName='ATypeValue' then ParValue:=cbType.Text //
else if ParName='AOption' then ParValue:=lblOption.Caption //范围
else if ParName='AOptionValue' then ParValue:=cbOption.Text //
else if ParName='ADate' then ParValue:=lblDate.Caption //日期
else if ParName='AFromDate' then ParValue:=edtFromDate.Text //
else if ParName='AToDate' then ParValue:=edtToDate.Text //
else if ParName='FCode' then ParValue:=ADODataSet1.FieldByName('FCode').DisplayLabel //员工编号
else if ParName='FName' then ParValue:=ADODataSet1.FieldByName('FName').DisplayLabel //员工姓名
else if ParName='FType' then ParValue:=ADODataSet1.FieldByName('FType').DisplayLabel //部门名称
else if ParName='FStartDate' then ParValue:=ADODataSet1.FieldByName('FStartDate').DisplayLabel //开始日期
else if ParName='FEndDate' then ParValue:=ADODataSet1.FieldByName('FEndDate').DisplayLabel //完成日期
else if ParName='FTaskCode' then ParValue:=ADODataSet1.FieldByName('FTaskCode').DisplayLabel //任务编号
else if ParName='FTaskName' then ParValue:=ADODataSet1.FieldByName('FTaskName').DisplayLabel //任务名称
end;
procedure TTas210_01Form.ActPrintExecute(Sender: TObject);
begin
try
SYSDM.frReport2.OnGetValue:=ReportGetValue;
inherited;
finally
SYSDM.frReport2.OnGetValue:=nil;
end;
end;
procedure TTas210_01Form.RefreshEvent;
begin
inherited;
sbSearch.Click;
end;
procedure TTas210_01Form.BrowseEvent;
var
ACode:String;
begin
inherited;
if ADODataSet1.IsEmpty then Exit;
ACode:=ADODataSet1.FieldByName('FTaskCode').AsString;
if ACode='' then Exit;
Screen.Cursor:=crHourGlass;
Tas510_02Form:=TTas510_02Form.Create(Application);
Tas510_02Form.OpenData(ACode);
Screen.Cursor:=crDefault;
Tas510_02Form.ShowModal;
end;
initialization
RegisterClass(TTas210_01Form);
finalization
UnRegisterClass(TTas210_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -