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

📄 reppreview.pas

📁 用delphi+intraweb写的简单报表系统(activeform使用技术)
💻 PAS
字号:
UNIT RepPreview;

INTERFACE

USES
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BaseFormUnit, IWCompObject, IWCompActiveX, IWVCLComponent,
  IWBaseLayoutComponent, IWBaseContainerLayout, IWContainerLayout, ADODB,
  IWTreeview, IWTemplateProcessorHTML, IWExtCtrls, IWCompEdit, DATANEWPRINTERLib_TLB,
  IWVCLBaseContainer, IWContainer, IWHTMLContainer, IWRegion, 
  IWVCLBaseControl, IWBaseControl, IWBaseHTMLControl, IWControl, IWCompRectangle,
  IWCompLabel;

TYPE
  TReport=RECORD
    sName:STRING;
    sTitle:STRING;
    sSQL:STRING;
    ZTName:STRING;                      //用友帐套数据库名称
    UseDate:TDate;                      //模块启用时间
    sFile:STRING;                       //模板文件路径
  END;
  
  TFormMain=CLASS(TFormBase)
    acxRepPrinter:TIWActiveX;
    VarInput: TIWRegion;
    edtStartDate: TIWEdit;
    edtEndDate: TIWEdit;
    MainTemplate: TIWTemplateProcessorHTML;
    tplVarInput: TIWTemplateProcessorHTML;
    tvReport: TIWTreeView;
    PROCEDURE IWAppFormCreate(Sender:TObject);
    procedure tvReportTreeItemClick(Sender: TObject;
      ATreeViewItem: TIWTreeViewItem);
  PRIVATE
    { Private declarations }
  PUBLIC
    { Public declarations }
    FRepName: string;
    FReport:TReport;
    PROCEDURE CreateSubTreeRep(FNodeName:STRING; Node:TIWTreeViewItem=NIL);
    FUNCTION OpenReportData(pRepName:STRING):integer;
    FUNCTION GetReportParams(pRepName:STRING):integer;
  END;

VAR
  FormMain:TFormMain;

IMPLEMENTATION

USES DataModuleUnit, ADOFuncs, XFuncs, HapReportFuncs, XFunc;

{$R *.dfm}

PROCEDURE TFormMain.CreateSubTreeRep(FNodeName:STRING; Node:TIWTreeViewItem=NIL);
VAR
  mLocalName, S:STRING;
  TreeNode:TIWTreeViewItem;
  Ads_Tmp:TADOQuery;
BEGIN
  Ads_Tmp:=TADOQuery.Create(NIL);
  Ads_Tmp.ConnectionString:=AccessDataString;
  IF FNodeName<>'' THEN
    S:='SELECT * FROM ReportItems Where iParenID='+FNodeName+' order by iRepID'
  ELSE
    S:='SELECT * FROM ReportItems order by iRepID';

  TRY
    OpenSQL(Ads_Tmp, S);
    WITH Ads_Tmp DO
    BEGIN
      WHILE NOT Eof DO
      BEGIN
        mLocalName:=FieldByName('iRepID').AsString;
        TreeNode:=TIWTreeView(Node.TreeView).Items.Add;
        WITH TreeNode DO
        BEGIN
          ParentItem:=Node;
          //Index:=FieldByName('iRepID').AsInteger;
          Tag:=FieldByName('iRepID').AsInteger;
          Caption:=mLocalName+'='+FieldByName('sRepName').AsString;
        END;

        CreateSubTreeRep(mLocalName, TreeNode);
        Next;
      END;
    END;
  FINALLY
    Ads_Tmp.Close;
    Ads_Tmp.Free;
  END;
END;

PROCEDURE TFormMain.IWAppFormCreate(Sender:TObject);
var AItem: TIWTreeViewItem;
BEGIN
  INHERITED;
  acxRepPrinter.CodeBase:='/cabs/DNPrnt.Cab';
  acxRepPrinter.ClassID:='clsid:9CDE204E-0CC2-11D6-9011-00E09873B6BB';

  acxRepPrinter.Width:=500;
  acxRepPrinter.Height:=700;

  userstat.Visible:=False;

  tvReport.TreeViewImages.OpenFolderImage.Filename:='';
  tvReport.TreeViewImages.DocumentImage.Filename:='';

  AItem:=tvReport.Items.Add;
  AItem.ParentItem:=nil;
  AItem.Caption:='报表系统';

  Self.CreateSubTreeRep('0', AItem);
END;

procedure TFormMain.tvReportTreeItemClick(Sender: TObject;
  ATreeViewItem: TIWTreeViewItem);
begin
  inherited;
  if ATreeViewItem.HasChild then exit;
  IF tvReport.Selected=NIL THEN exit;

  FRepName:=StrToStr(Char('='), tvReport.Selected.Caption, 1);

  TRY
    Screen.Cursor:=crHourGlass;
    TRY
      GetReportParams(FRepName);
      Self.OpenReportData(FRepName);
    EXCEPT
    END;
  FINALLY
    Screen.Cursor:=crDefault;
  END;
end;

FUNCTION TFormMain.OpenReportData(pRepName:STRING):integer;
VAR sSQL:STRING;
    sTempTable: string;
    DNPrinter:TDNPrinter;
BEGIN
  FDM.DYConn.DefaultDatabase:=FReport.ZTName;

  sTempTable:='XXLR_Temp'+mGetComputerName+IntToStr(Trunc(Now*10000.00));

  IF Trim(FReport.sSQL)<>'' THEN
  BEGIN
    sSQL:=ReplaceStr(FReport.sSQL, '@模块时间@', FormatDateTime('yyyy-MM-dd', FReport.UseDate));
    sSQL:=ReplaceStr(sSQL, '@起始时间@',edtStartDate.Text);
    sSQL:=ReplaceStr(sSQL, '@结束时间@', edtEndDate.Text);
    sSQL:=ReplaceStr(sSQL, '@包含未入帐@', '0');

    sSQL:=ReplaceStr(sSQL, '%TempTableName%', sTempTable);
    Result:=OpenQuery(FDM.DYConn, FDM.aqShare, sSQL);
  END ELSE
  BEGIN
    Result:=-1;
    exit;
  END;

  DNPrinter:=TDNPrinter.Create(nil);

  try
    ViewReportByRecordset(DNPrinter, FReport.sFile, FDM.aqShare.Recordset);
  finally
    DNPrinter.Free;
  end;
END;

FUNCTION TFormMain.GetReportParams(pRepName:STRING):integer;
VAR k, v:integer;
  sSQL, sRepID, sParamID:STRING;
BEGIN
  sSQL:='select * from ReportItems where sRepName='+QuotedStr(pRepName);
  TRY
    OpenQuery(AccessDataString, FDM.aqTemp, sSQL);

    FReport.sName:=pRepName;
    FReport.sTitle:=FDM.aqTemp.FieldByName('sRepTitle').AsString;
    FReport.sSQL:=FDM.aqTemp.FieldByName('sRepSQL').AsString;
    FReport.ZTName:=FDM.aqTemp.FieldByName('sLinkAcc').AsString;
    FReport.UseDate:=FDM.aqTemp.FieldByName('dUseDate').AsDateTime;
    FReport.sFile:=FDM.aqTemp.FieldByName('sNormal').AsString;
    sRepID:=FDM.aqTemp.FieldByName('iRepID').AsString;

  FINALLY
    FDM.aqTmp.Close;
    FDM.aqTemp.Close;
  END;
END;

initialization
  TFormMain.SetAsMainForm;
  RegisterClass(TFormMain);
  
END.

⌨️ 快捷键说明

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