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

📄 csh720_01.pas.svn-base

📁 开源的网站整站程序,功能强大带采集系统.
💻 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 + -