📄 reppreview.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 + -