📄 pay220_01.pas.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 + -