📄 csh720_01.pas.svn-base
字号:
unit Csh720_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_09, dxExEdtr, Menus, DB, ADODB, ActnList, dxCntner, dxTL,
dxDBCtrl, dxDBTL, ExtCtrls, ComCtrls, wwfltdlg,
ToolWin, dxDBTLCl, Buttons, StdCtrls, wwdbdatetimepicker, TeEngine,
Series, TeeProcs, Chart, DbChart;
type
TCsh720_01Form = class(TBas200_09Form)
ADODataSet1CURNM: TStringField;
ADODataSet1CLSNO: TIntegerField;
ADODataSet1CLSNM: TStringField;
ADODataSet1PARNO: TIntegerField;
ADODataSet1AMOUNT: TCurrencyField;
ADODataSet1LEVEL: TIntegerField;
ADODataSet1SEQNO: TIntegerField;
dxDBTreeList1CURNM: TdxDBTreeListMaskColumn;
dxDBTreeList1CLSNM: TdxDBTreeListMaskColumn;
dxDBTreeList1AMOUNT: TdxDBTreeListCurrencyColumn;
ADOQuery1: TADOQuery;
qryCsh550: TADOQuery;
ADODataSet2: TADODataSet;
ADODataSet2CURNM: TStringField;
ADODataSet2CLSNO: TIntegerField;
ADODataSet2CLSNM: TStringField;
ADODataSet2PARNO: TIntegerField;
ADODataSet2AMOUNT: TBCDField;
ADODataSet2LEVEL: TIntegerField;
ADODataSet2SEQNO: TIntegerField;
lblDate: TLabel;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
sbSearch: TSpeedButton;
Panel2: TPanel;
DBChart1: TDBChart;
BarSeries1: TBarSeries;
Splitter1: TSplitter;
ActOpen: TAction;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure ActPrintExecute(Sender: TObject);
procedure dxDBTreeList1AMOUNTDrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure ActOpenExecute(Sender: TObject);
private
ALevelNo:Integer; //层次号
ASum:Double;
procedure UpdateParent(AParentNo:Integer;AValue:Double;ADataSet:TDataSet;ACurrName:String);
{ Private declarations }
public
procedure SetInterface; override;
procedure RefreshEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Csh720_01Form: TCsh720_01Form;
implementation
uses SYSDATA, CommFun, Csh510_01;
{$R *.dfm}
//将下级分类金额累加到上级分类
procedure TCsh720_01Form.UpdateParent(AParentNo:Integer;AValue:Double;ADataSet:TDataSet;ACurrName:String);
var
AParent:Integer;
AClassName:String;
begin
ALevelNo:=ALevelNo+1;
//查找业务分类表中该记录是否有上级分类
AParent:=GetValue('select C140_004 from CSH140 where C140_001='+IntToStr(AParentNo));
if ADataSet.Locate('CLSNO',AParentNo,[]) then
begin
ADataSet.Edit;
ADataSet.FieldByName('AMOUNT').Value:=ADataSet.FieldByName('AMOUNT').AsFloat+AValue;
ADataSet.Post;
end else
begin
AClassName:=GetValue('select C140_002 from CSH140 where C140_001='+IntToStr(AParentNo));
ADataSet.Append;
ADataSet.FieldByName('CURNM').Value:=ACurrName;
ADataSet.FieldByName('CLSNO').Value:=AParentNo;
ADataSet.FieldByName('CLSNM').Value:=AClassName;
ADataSet.FieldByName('PARNO').Value:=AParent;
ADataSet.FieldByName('LEVEL').Value:=0;
ADataSet.FieldByName('SEQNO').Value:=0;
ADataSet.FieldByName('AMOUNT').Value:=AValue;
ADataSet.Post;
end;
if AParent<>0 then UpdateParent(AParent,AValue,ADataSet,ACurrName);
end;
procedure TCsh720_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('CSH72001001'); //资金去向查询
lblDate.Caption:=GetDBString('CSH72001002'); //日期
sbSearch.Caption:=GetDBString('CSH72001003'); //查询
ADODataSet1CURNM.DisplayLabel:=GetDBString('CSH72001004'); //币别
ADODataSet1CLSNM.DisplayLabel:=GetDBString('CSH72001005'); //业务分类
ADODataSet1AMOUNT.DisplayLabel:=GetDBString('CSH72001006'); //金额
end;
procedure TCsh720_01Form.FormCreate(Sender: TObject);
begin
inherited;
SetInterface;
//取得当月起始&结束日期
edtFromDate.Date:=GetMonthFirstDate(Date);
edtToDate.Date:=GetMonthEndDate(Date);
sbSearch.Click;
end;
procedure TCsh720_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
ADODataSet1.Close;
ADOQuery1.Close;
end;
procedure TCsh720_01Form.sbSearchClick(Sender: TObject);
var
ABookmark:TBookmark;
ACurrName:string;
Amount:Double;
AClassNo:Integer;
AFromDate,AToDate:TDateTime;
begin
inherited;
//查询
if (edtFromDate.Text='') or (edtToDate.Text='') then
begin
ShowMsg('UMS10000156'); //起始日期或结束日期不能为空
if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
Abort;
end;
AFromDate:=edtFromDate.Date;
AToDate:=edtToDate.Date;
if AFromDate>AToDate then
begin
ShowMsg('UMS10000044'); //起始日期不能大于结束日期
edtFromDate.SetFocus;
Abort;
end;
Screen.Cursor:=crHourGlass;
ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('DATE1').Value:=edtFromDate.Date;
ADOQuery1.Parameters.ParamByName('DATE2').Value:=edtToDate.Date;
ADOQuery1.Open;
//建立出纳总帐临时表
ADODataSet1.DisableControls;
ADODataSet1.Close;
ADODataSet1.FieldDefs.Clear;
ADODataSet1.FieldDefs.Add('CURNM',ftString,30);
ADODataSet1.FieldDefs.Add('CLSNO',ftInteger,0);
ADODataSet1.FieldDefs.Add('CLSNM',ftString,50);
ADODataSet1.FieldDefs.Add('PARNO',ftInteger,0);
ADODataSet1.FieldDefs.Add('LEVEL',ftInteger,0);
ADODataSet1.FieldDefs.Add('SEQNO',ftInteger,0);
ADODataSet1.FieldDefs.Add('AMOUNT',ftCurrency,0);
ADODataSet1.CreateDataSet;
ASum:=0;
while not ADOQuery1.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('CURNM').Value:=ADOQuery1.FieldByName('G100_003').Value;
ADODataSet1.FieldByName('CLSNO').Value:=ADOQuery1.FieldByName('C140_001').Value;
ADODataSet1.FieldByName('CLSNM').Value:=ADOQuery1.FieldByName('C140_002').Value;
ADODataSet1.FieldByName('PARNO').Value:=ADOQuery1.FieldByName('C140_004').Value;
ADODataSet1.FieldByName('LEVEL').Value:=0;
ADODataSet1.FieldByName('SEQNO').Value:=0;
ADODataSet1.FieldByName('AMOUNT').Value:=ADOQuery1.FieldByName('C510A_009').Value;
ADODataSet1.Post;
ASum:=ASum+ADODataSet1.FieldByName('AMOUNT').Value;
ADOQuery1.Next;
end;
//计算上级分类的金额
ADODataSet1.First;
while not ADODataSet1.Eof do
begin
ABookmark:=ADODataSet1.GetBookmark;
ACurrName:=ADODataSet1.FieldByName('CURNM').Value;
AMount:=ADODataSet1.FieldByName('AMOUNT').Value;
AClassNo:=ADODataSet1.FieldByName('PARNO').Value;
ALevelNo:=0;
if AClassNo<>0 then UpdateParent(AClassNo,AMount,ADODataSet1,ACurrName);
ADODataSet1.GotoBookmark(ABookmark);
ADODataSet1.FreeBookmark(ABookmark);
//修改层次号 0=最顶层
ADODataSet1.Edit;
ADODataSet1.FieldByName('LEVEL').Value:=ALevelNo;
ADODataSet1.Post;
ADODataSet1.Next;
end;
ADODataSet1.EnableControls;
DBChart1.RefreshData;
Screen.Cursor:=crDefault;
end;
procedure TCsh720_01Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
if ParName='CURNM' then ParValue:=GetDBString('CSH72001004') //'币别'
else if ParName='TYPNM' then ParValue:=GetDBString('CSH72001005') //'业务分类'
else if ParName='AMOUNT' then ParValue:=GetDBString('CSH72001006') //'金额'
else if ParName='DATE1' then ParValue:=GetDBString('CSH72001008')+edtFromDate.Text //'起始日期:'
else if ParName='DATE2' then ParValue:=GetDBString('CSH72001009')+edtToDate.Text //'结束日期:'
end;
procedure TCsh720_01Form.ActPrintExecute(Sender: TObject);
var
I:Integer;
ALastNode:TdxTreeListNode;
begin
if ADODataSet1.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
//打印前,先排序,按显示的顺序
I:=1;
ADODataSet1.DisableControls;
dxDBTreeList1.GotoLast(True);
ALastNode:=dxDBTreeList1.FocusedNode;
dxDBTreeList1.GotoFirst;
while dxDBTreeList1.FocusedNode<>ALastNode do
begin
ADODataSet1.Edit;
ADODataSet1.FieldByName('SEQNO').Value:=I;
ADODataSet1.Post;
dxDBTreeList1.GotoNext(True);
I:=I+1;
end;
ADODataSet1.Edit;
ADODataSet1.FieldByName('SEQNO').Value:=I;
ADODataSet1.Post;
ADODataSet1.EnableControls;
ADODataSet2.Recordset:=ADODataSet1.Recordset;
// inherited;
SelectReport(ADODataSet2,AProgramID,AReportName,ReportGetValue);
ActRefresh.Execute;
end;
procedure TCsh720_01Form.dxDBTreeList1AMOUNTDrawSummaryFooter(
Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
begin
inherited;
//金额合计
if VarToStr(ASum)<>'' then AText:=FloatToStrF(ASum,ffCurrency,18,2);
AColor := clWhite;
end;
procedure TCsh720_01Form.ActOpenExecute(Sender: TObject);
var
AFieldInfo:TwwFieldInfo;
begin
inherited;
//查看
if ADODataSet1.IsEmpty then Exit;
Screen.Cursor:=crHourGlass;
Csh510_01Form:=TCsh510_01Form.Create(Application);
Csh510_01Form.edtFromDate.Date:=edtFromDate.Date;
Csh510_01Form.edtToDate.Date:=edtToDate.Date;
Csh510_01Form.sbSearch.Click;
AFieldInfo:=TwwFieldInfo.Create;
FilterDialog(Csh510_01Form.DataSource1,False);
AFieldInfo.FieldName:='I120_003';
// AFieldInfo.DisplayLabel:=Csh510_01Form.ADOQuery1I120_003.DisplayLabel;
AFieldInfo.MatchType:=fdMatchStart;
AFieldInfo.CaseSensitive:=False;
AFieldInfo.NonMatching:=False;
// AFieldInfo.FilterValue:=ADODataSet1FName.Value;;
SYSDM.wwFilterDialog1.FieldInfo.Add(AFieldInfo);
SYSDM.wwFilterDialog1.ApplyFilter;
Screen.Cursor:=crDefault;
Csh510_01Form.ShowModal;
// if Assigned(AFieldInfo) then AFieldInfo.Free;
end;
procedure TCsh720_01Form.RefreshEvent;
begin
inherited;
sbSearch.Click;
end;
initialization
RegisterClass(TCsh720_01Form);
finalization
UnRegisterClass(TCsh720_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -