大概步骤这样:
1、新建一个‘资源集’起名‘常用窗体’,其ID我们默认为‘CYCT’。
2、在这个资源集下新建一个‘窗体’,起名‘查询窗体’,其ID我们默认为‘CXCT’。
3、在这个查询窗体上放上我们要用的控件,比如我们放两个DateTimePicker,分别为DateTimePicker1、DateTimePicker2作为查询条件的起、止时间,然后放上两个BUTTON,分别为button1/button2在其caption上写上‘确定’、‘取消’,并在button1的clike事件上写上一句代码:ModalResult :=Business.Forms.Controls.mrOK;在button2的clike事件上写上:close;
4、在‘资源集’中写入两个函数
//取日期等变量的函数
function GETVARDATE( var ADateBegin,ADateEnd:TDateTime):Boolean;
var
lForm:TCXCT;
begin
lForm :=TCXCT.Create(nil);
With lForm do
try
Result := ShowModal=Business.Forms.Controls.mrOK;
if Result then
begin
ADateBegin := DateTimePicker1.Date;
ADateEnd:= DateTimePicker2.Date;
end;
finally
Free;
end;
end;
//传入变量的函数
Static Function GetPARA:Boolean;
var
lForm:TCXCT;
begin
lForm :=TCXCT.Create(nil);
With lForm do
try
Result := ShowModal=Business.Forms.Controls.mrCancel;
if Result then
begin
sysutils.Abort;
end;
finally
Free;
end;
end;
5、前提是我们已经做好了报表的功能窗体,现在我们要做到,在我们查看这个报表功能之前会弹出我们刚才做的‘查询窗体’,选择起止时间,经过过滤在报表的功能窗体上显示我们想要的数据。
6、单击报表的功能(非功能窗体),然后查看其事件,在OnCreate事件下写入代码:
procedure TCGDDBBFUNC.FuncCreate(Sender: TObject);
var
lDate1,lDate2:TDateTime;
lSqlstr,ldate11,ldate22:string;
linfobroker:Tinfobroker;
begin
linfobroker:=Tinfobroker.Create(self);
linfobroker.AutoBroker:=true;
linfobroker.AutoKind := TAutoKind.akShare;
linfobroker.BizClassRef.BizURL.URL:='Biz:/KCXT/CGDDXXinfo.Info';
if CYCT.TCYCT.GetA(lDate1,lDate2,lType,lCode) then
begin
ldate11:='';
ldate22:='';
sysutils.DateTimeToString(ldate11,'yyyy-MM-dd',ldate1);
sysutils.DateTimeToString(ldate22,'yyyy-MM-dd',ldate2);
lSqlstr:='PODATE between '''+ldate11+''' and '''+ldate22+'''' ;
CGDDXXINFO.TCGDDXXinfo(linfobroker.Info).DataSetCGDDSJJ.sqlFilter:=lSqlstr;
CGDDXXINFO.TCGDDXXinfo(linfobroker.Info).DataSetCGDDSJJ.sqlFiltered:=true;
end else
begin
self.Terminate;
end;
end;
编译通过,运行,既可达到所要的效果。