📄 pay230_01.pas.svn-base
字号:
unit Pay230_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas100_01, dxExEdtr, DB, ADODB, ActnList, FR_DSet, FR_DBSet,
FR_Class, dxCntner, dxTL, dxDBCtrl, dxDBGrid, StdCtrls, Buttons,
ExtCtrls, ComCtrls, ToolWin, Menus;
type
TPay230_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;
lblYear: TLabel;
lblMonth: TLabel;
sbOk: TSpeedButton;
cbYear: TComboBox;
cbMonth: 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;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbOkClick(Sender: TObject);
procedure cbYearChange(Sender: TObject);
procedure cbMonthChange(Sender: TObject);
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
AStartDate,AEndDate:TDateTime;
APeriod:Integer;
procedure SetInterface;
{ Private declarations }
public
{ Public declarations }
end;
var
Pay230_01Form: TPay230_01Form;
implementation
uses SYSDATA, CommFun, Wait, HwPrint;
{$R *.dfm}
procedure TPay230_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('PAY23001001'); //薪资月度查询
lblYear.Caption:=GetDBString('PAY23001002'); //年份
lblMonth.Caption:=GetDBString('PAY23001003'); //月份
sbOk.Caption:=GetDBString('PAY23001004'); //确定
end;
procedure TPay230_01Form.FormCreate(Sender: TObject);
begin
inherited;
//设置界面信息
SetInterface;
GetYears(cbYear);
GetMonths(StrToInt(cbYear.Text),cbMonth);
sbOk.Click;
end;
procedure TPay230_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
//
end;
procedure TPay230_01Form.sbOkClick(Sender: TObject);
var
I:Integer;
AValue,AFieldName:string;
ASourceTable,AGroupbyField,ATransFormCol,AFunction,APivotCol,AStrWhere,AOrderBy:string;
begin
inherited;
WaitForm.Show;
WaitForm.Update;
ADOQuery1.DisableControls;
GetPeriodDate(cbYear.Text,cbMonth.Text,AStartDate,AEndDate,APeriod);
//ASourceTable --数据来源表,可以为表,视图,或者SQL语句(要用括号以及别名)
//AGroupbyField --被selct GROUP BY 要显示出来的,可以多个字段(记录可以有空值)
//ATransFormCol --交叉表中的合计等函数计算值的字段
//AFunction --' sum', --默认值,交叉表中的函数,也可以是' 2*sum'的计算公式
//APivotCol --要转换成列的字段,唯一列,可以是表达式'Field1+Field2'(记录可以有空值)
//AStrWhere --=null --where 约束条件,可以为空
ASourceTable:='PAY550,HRM150';
AGroupbyField:='H150_002,H150_003'; //员工
ATransFormCol:='P550_005'; //项目金额
AFunction:=' sum';
APivotCol:='P550_004';
AStrWhere:='P550_003=H150_001 and P550_001='+cbYear.Text+' and P550_002='+IntToStr(APeriod)+' and P550_006='+GetBoolean(True);
AOrderBy:='H150_002';
CrossTable(ADOQuery1,ASourceTable,AGroupbyField,ATransFormCol,AFunction,APivotCol,AStrWhere,AOrderBy);
ADOQuery1.FieldByName('H150_002').DisplayLabel:=GetDBString('PAY23001005'); //员工编号
ADOQuery1.FieldByName('H150_003').DisplayLabel:=GetDBString('PAY23001006'); //员工姓名
ADOQuery1.FieldByName('TotalSum').Tag:=1;
ADOQuery1.FieldByName('TotalSum').Visible:=False;
for I:=0 to ADOQuery1.FieldCount-1 do
begin
AFieldName:=ADOQuery1.Fields[I].FieldName;
if (AFieldName<>'H150_002') and (AFieldName<>'H150_003') and (AFieldName<>'TotalSum') then
begin
AValue:=GetValue('select P150_003 from PAY150 where P150_001='+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);
ADOQuery1.Last;
ADOQuery1.First;
ADOQuery1.EnableControls;
dxDBGrid1.Refresh;
WaitForm.Close;
end;
procedure TPay230_01Form.cbYearChange(Sender: TObject);
begin
inherited;
GetMonths(StrToInt(cbYear.Text),cbMonth);
end;
procedure TPay230_01Form.cbMonthChange(Sender: TObject);
begin
inherited;
//取得期段的起始结束日期
GetPeriodDate(cbYear.Text,cbMonth.Text,AStartDate,AEndDate,APeriod);
end;
procedure TPay230_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 TPay230_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 TPay230_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 TPay230_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 TPay230_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 TPay230_01Form.ActLocateExecute(Sender: TObject);
begin
inherited;
//查找
if ADOQuery1.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
LocateDialog(DataSource1);
end;
procedure TPay230_01Form.ActSearchExecute(Sender: TObject);
begin
inherited;
//查询
FilterDialog(DataSource1);
end;
procedure TPay230_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 TPay230_01Form.ActExportExecute(Sender: TObject);
begin
inherited;
//导出到Excel
if ADOQuery1.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Exit;
end;
SaveToExcel(dxDBGrid1);
end;
procedure TPay230_01Form.ActExitExecute(Sender: TObject);
begin
inherited;
//退出
Close;
end;
procedure TPay230_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(TPay230_01Form);
finalization
UnRegisterClass(TPay230_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -