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

📄 pay220_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Pay220_01;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas100_01, dxExEdtr, DB, ADODB, ActnList,
  dxTL, dxDBCtrl, dxDBGrid, dxCntner, StdCtrls, Buttons,
  ExtCtrls, ComCtrls, ToolWin, Menus, FR_DSet, FR_DBSet, FR_Class;

type
  TPay220_01Form = class(TBas100_01Form)
    CoolBar1: TCoolBar;
    ToolBar2: TToolBar;
    tlbFirst: TToolButton;
    tlbPrior: TToolButton;
    tlbNext: TToolButton;
    tlbLast: TToolButton;
    ToolButton1: TToolButton;
    tlbLocate: TToolButton;
    tlbSearch: TToolButton;
    tlbPrint: TToolButton;
    ToolButton6: TToolButton;
    tlbExit: TToolButton;
    Panel1: TPanel;
    Image1: TImage;
    lblEmpID: TLabel;
    sbEmp: TSpeedButton;
    lblYear: TLabel;
    sbOk: TSpeedButton;
    edtEmpID: TEdit;
    edtEmpName: TEdit;
    cbYear: TComboBox;
    ScrollBox2: TScrollBox;
    dxDBGrid1: TdxDBGrid;
    PopupMenu2: TPopupMenu;
    mmiPrint: TMenuItem;
    mmiExport: TMenuItem;
    DataSource1: TDataSource;
    frReport1: TfrReport;
    frDBDataSet1: TfrDBDataSet;
    ADOQuery1: TADOQuery;
    ActionList1: TActionList;
    ActFirst: TAction;
    ActPrior: TAction;
    ActNext: TAction;
    ActLast: TAction;
    ActLocate: TAction;
    ActSearch: TAction;
    ActPrint: TAction;
    ActExport: TAction;
    ActExit: TAction;
    pmGrid: TPopupMenu;
    qryHrm150: TADOQuery;
    qryHrm150H150_001: TAutoIncField;
    qryHrm150H150_002: TStringField;
    qryHrm150H150_003: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbEmpClick(Sender: TObject);
    procedure edtEmpIDExit(Sender: TObject);
    procedure sbOkClick(Sender: TObject);
    procedure edtEmpIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dxDBGrid1BackgroundDrawEvent(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect);
    procedure ActFirstExecute(Sender: TObject);
    procedure ActPriorExecute(Sender: TObject);
    procedure ActNextExecute(Sender: TObject);
    procedure ActLastExecute(Sender: TObject);
    procedure ActLocateExecute(Sender: TObject);
    procedure ActSearchExecute(Sender: TObject);
    procedure ActPrintExecute(Sender: TObject);
    procedure ActExportExecute(Sender: TObject);
    procedure ActExitExecute(Sender: TObject);
    procedure ADOQuery1AfterScroll(DataSet: TDataSet);
  private
    procedure SetInterface;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Pay220_01Form: TPay220_01Form;

implementation

uses SYSDATA, CommFun, HwSelData, HwPrint, Wait;

{$R *.dfm}

procedure TPay220_01Form.SetInterface;
begin
  Image1.Picture.Bitmap.LoadFromResourceName(AImgHandle,'TOPTITL');
  ActFirst.Caption:=GetDBString('COM00005001');  //最前
  ActPrior.Caption:=GetDBString('COM00005002');  //上移
  ActNext.Caption:=GetDBString('COM00005003');  //下移
  ActLast.Caption:=GetDBString('COM00005004');  //最后
  ActLocate.Caption:=GetDBString('COM00005011');  //查找
  ActSearch.Caption:=GetDBString('COM00005012');  //查询
  ActPrint.Caption:=GetDBString('COM00005013');  //打印
  ActExport.Caption:=GetDBString('COM00005014');  //导出数据
  ActExit.Caption:=GetDBString('COM00005015');  //退出

  ActFirst.Hint:=GetDBString('COM00005001',2);  //移到第一条记录
  ActPrior.Hint:=GetDBString('COM00005002',2);  //移到上一条记录
  ActNext.Hint:=GetDBString('COM00005003',2);  //移到下一条记录
  ActLast.Hint:=GetDBString('COM00005004',2);  //移到最后一条记录
  ActLocate.Hint:=GetDBString('COM00005011',2);  //快速定位记录
  ActSearch.Hint:=GetDBString('COM00005012',2);  //按条件查询数据
  ActPrint.Hint:=GetDBString('COM00005013',2);  //将数据打印出来
  ActExport.Hint:=GetDBString('COM00005014',2);  //导出数据到文件中
  ActExit.Hint:=GetDBString('COM00005015',2);  //关闭当前窗口

  Caption:=GetDBString('PAY22001001');  //薪资年度查询
  lblEmpID.Caption:=GetDBString('PAY22001002');  //员工编号
  lblYear.Caption:=GetDBString('PAY22001003');  //年份
  sbOk.Caption:=GetDBString('PAY22001004');  //确定
{  ADODataSet1P550_001.DisplayLabel:=GetDBString('PAY22001005');  //项目编号
  ADODataSet1P550_002.DisplayLabel:=GetDBString('PAY22001006');  //项目名称
  ADODataSet1P550_003.DisplayLabel:=GetDBString('PAY22001007');  //一月份
  ADODataSet1P550_004.DisplayLabel:=GetDBString('PAY22001008');  //二月份
  ADODataSet1P550_005.DisplayLabel:=GetDBString('PAY22001009');  //三月份
  ADODataSet1P550_006.DisplayLabel:=GetDBString('PAY22001010');  //四月份
  ADODataSet1P550_007.DisplayLabel:=GetDBString('PAY22001011');  //五月份
  ADODataSet1P550_008.DisplayLabel:=GetDBString('PAY22001012');  //六月份
  ADODataSet1P550_009.DisplayLabel:=GetDBString('PAY22001013');  //七月份
  ADODataSet1P550_010.DisplayLabel:=GetDBString('PAY22001014');  //八月份
  ADODataSet1P550_011.DisplayLabel:=GetDBString('PAY22001015');  //九月份
  ADODataSet1P550_012.DisplayLabel:=GetDBString('PAY22001016');  //十月份
  ADODataSet1P550_013.DisplayLabel:=GetDBString('PAY22001017');  //十一月份
  ADODataSet1P550_014.DisplayLabel:=GetDBString('PAY22001018');  //十二月份
  ADODataSet1P550_015.DisplayLabel:=GetDBString('PAY22001019');  //合计
}
  qryHrm150H150_002.DisplayLabel:=GetDBString('PAY22001020');  //员工编号
  qryHrm150H150_003.DisplayLabel:=GetDBString('PAY22001021');  //员工姓名
end;

procedure TPay220_01Form.FormCreate(Sender: TObject);
begin
  inherited;
  //设置界面信息
  SetInterface;

  GetYears(cbYear);

  qryHrm150.Open;
  edtEmpID.Text:=qryHrm150H150_002.Value;
  edtEmpName.Text:=qryHrm150H150_003.Value;

  sbOk.Click;
end;

procedure TPay220_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  qryHrm150.Close;
end;

procedure TPay220_01Form.sbEmpClick(Sender: TObject);
begin
  inherited;
//员工编号查询
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryHrm150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtEmpID.Text:=qryHrm150H150_002.AsString;
    edtEmpName.Text:=qryHrm150H150_003.AsString;
  end;
end;

procedure TPay220_01Form.edtEmpIDExit(Sender: TObject);
begin
  inherited;
  if qryHrm150.Locate('H150_002',edtEmpID.Text,[loCaseInsensitive]) then
  begin
    edtEmpID.Text:=qryHrm150H150_002.AsString;
    edtEmpName.Text:=qryHrm150H150_003.AsString;
  end else
  begin
    ShowMsg('UMS10000042');  //无效的员工编号
    edtEmpID.SetFocus;
    Abort;
  end;
end;

procedure TPay220_01Form.sbOkClick(Sender: TObject);
var
  I:Integer;
  AFieldName,AValue:string;
  AEmpNo:Integer;
  ASourceTable,AGroupbyField,ATransFormCol,AFunction,APivotCol,AStrWhere,AOrderBy:string;
begin
  inherited;
  if qryHrm150.Locate('H150_002',trim(edtEmpID.Text),[loCaseInsensitive]) then
  begin
    edtEmpID.Text:=qryHrm150H150_002.AsString;
    edtEmpName.Text:=qryHrm150H150_003.AsString;
    AEmpNo:=qryHrm150H150_001.Value;
  end else
  begin
    AEmpNo:=0;
  end;

  WaitForm.Show;
  WaitForm.Update;
  ADOQuery1.DisableControls;

  //ASourceTable		--数据来源表,可以为表,视图,或者SQL语句(要用括号以及别名)
  //AGroupbyField		--被selct GROUP BY 要显示出来的,可以多个字段(记录可以有空值)
  //ATransFormCol		--交叉表中的合计等函数计算值的字段
  //AFunction		--' sum', --默认值,交叉表中的函数,也可以是' 2*sum'的计算公式
  //APivotCol		--要转换成列的字段,唯一列,可以是表达式'Field1+Field2'(记录可以有空值)
  //AStrWhere		--=null --where 约束条件,可以为空
  ASourceTable:='PAY550,PAY150';
  AGroupbyField:='P150_002,P150_003';   //薪资项目
  ATransFormCol:='P550_005';   //项目金额
  AFunction:=' sum';
  APivotCol:='P550_002';
  AStrWhere:='P550_004=P150_001 and P550_001='+cbYear.Text+' and P550_003='+IntToStr(AEmpNo)+' and P550_006='+GetBoolean(True);
  AOrderBy:='P150_002';
  CrossTable(ADOQuery1,ASourceTable,AGroupbyField,ATransFormCol,AFunction,APivotCol,AStrWhere,AOrderBy);

  ADOQuery1.FieldByName('P150_002').DisplayLabel:=GetDBString('PAY22001005');  //项目编号
  ADOQuery1.FieldByName('P150_003').DisplayLabel:=GetDBString('PAY22001006');  //项目名称
  ADOQuery1.FieldByName('TotalSum').DisplayLabel:=GetDBString('PAY22001019');  //合计
  TFloatField(ADOQuery1.FieldByName('TotalSum')).DisplayFormat:=',0.00;-,0.00';
  ADOQuery1.FieldByName('TotalSum').Tag:=1;
  for I:=0 to ADOQuery1.FieldCount-1 do
  begin
    AFieldName:=ADOQuery1.Fields[I].FieldName;
    if (AFieldName<>'P150_002') and (AFieldName<>'P150_003') and (AFieldName<>'TotalSum') then
    begin
      AValue:=GetValue('select C170_003 from CWA170 where C170_001='+cbYear.Text+' and C170_002='+AFieldName);
      ADOQuery1.Fields[I].DisplayLabel:=AValue;
      TFloatField(ADOQuery1.Fields[I]).DisplayFormat:=',0.00;-,0.00';
      ADOQuery1.Fields[I].Tag:=1;
    end;
  end;
  SetDBGridCol(dxDBGrid1,ADOQuery1);
  dxDBGrid1.ColumnByFieldName('TotalSum').ColIndex:=ADOQuery1.FieldCount;
  ADOQuery1.Last;
  ADOQuery1.First;
  ADOQuery1.EnableControls;
  dxDBGrid1.Refresh;

  WaitForm.Close;
end;

procedure TPay220_01Form.edtEmpIDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key=vk_F4 then sbEmp.Click;
end;

procedure TPay220_01Form.dxDBGrid1BackgroundDrawEvent(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect);
var
  AText:string;
begin
  inherited;
  ARect.Left:=0;
  ARect.Top:=0;
  ACanvas.Brush.Color:=dxDBGrid1.GroupPanelColor;
  ACanvas.Font.Color:=dxDBGrid1.GroupPanelFontColor;
  //您可以把列标题拖放到此处使记录按此列进行分组
  if dxDBGrid1.GroupColumnCount=0 then AText:=' '+GetDBString('NOT10001012') else AText:='';
  Windows.FillRect(ACanvas.Handle, ARect, 0);
  DrawText(ACanvas.Handle, PChar(AText), Length(AText), ARect, DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_SINGLELINE or DT_VCENTER);
end;

procedure TPay220_01Form.ActFirstExecute(Sender: TObject);
begin
  inherited;
//最前
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.First;
  ActFirst.Enabled:=False;
  ActPrior.Enabled:=False;
  ActNext.Enabled:=True;
  ActLast.Enabled:=True;
end;

procedure TPay220_01Form.ActPriorExecute(Sender: TObject);
begin
  inherited;
//上移
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.Prior;
  ActNext.Enabled:=not ADOQuery1.Eof;
  ActLast.Enabled:=not ADOQuery1.Eof;
  ActFirst.Enabled:=not ADOQuery1.Bof;
  ActPrior.Enabled:=not ADOQuery1.Bof;
end;

procedure TPay220_01Form.ActNextExecute(Sender: TObject);
begin
  inherited;
//下移
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.Next;
  ActNext.Enabled:=not ADOQuery1.Eof;
  ActLast.Enabled:=not ADOQuery1.Eof;
  ActFirst.Enabled:=not ADOQuery1.Bof;
  ActPrior.Enabled:=not ADOQuery1.Bof;
end;

procedure TPay220_01Form.ActLastExecute(Sender: TObject);
begin
  inherited;
//最后
  if ADOQuery1.IsEmpty then Exit;
  ADOQuery1.Last;
  ActNext.Enabled:=False;
  ActLast.Enabled:=False;
  ActFirst.Enabled:=True;
  ActPrior.Enabled:=True;
end;

procedure TPay220_01Form.ActLocateExecute(Sender: TObject);
begin
  inherited;
//查找
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  LocateDialog(DataSource1);
end;

procedure TPay220_01Form.ActSearchExecute(Sender: TObject);
begin
  inherited;
//查询
  FilterDialog(DataSource1);
end;

procedure TPay220_01Form.ActPrintExecute(Sender: TObject);
begin
  inherited;
//打印
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  HwPrintForm:=THwPrintForm.Create(Application);
  HwPrintForm.edtReportTitle.Text:=Caption;
  HwPrintForm.OpenPrint(ADOQuery1);
  HwPrintForm.ShowModal;
end;

procedure TPay220_01Form.ActExportExecute(Sender: TObject);
begin
  inherited;
//导出到Excel
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Exit;
  end;
  SaveToExcel(dxDBGrid1);
end;

procedure TPay220_01Form.ActExitExecute(Sender: TObject);
begin
  inherited;
//退出
  Close;
end;

procedure TPay220_01Form.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
  inherited;
  ActNext.Enabled:=not ADOQuery1.Eof;
  ActLast.Enabled:=not ADOQuery1.Eof;
  ActFirst.Enabled:=not ADOQuery1.Bof;
  ActPrior.Enabled:=not ADOQuery1.Bof;
end;

initialization
  RegisterClass(TPay220_01Form);

finalization
  UnRegisterClass(TPay220_01Form);

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -