⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tas210_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 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 + -