FastReport.中动态创建TfrDBDataSet数据源出现错误...(100分)

  • 主题发起人 主题发起人 Mrlong
  • 开始时间 开始时间
M

Mrlong

Unregistered / Unconfirmed
GUEST, unregistred user!
我在frf文件已定义好打印的格式和数据源,现在动态作创建tfrDataSet出现错误
{FastReport}
if sProcessMode = '0' then
begin
frReport := TfrReport.Create(nil);
frDBDataSet := TfrDBDataSet.Create(nil);
try
frReport.LoadFromFile(sTemplateName);//加入.frf文件
frDBDataSet.DataSet := sDataSet;
//sDataSet是要打印的数据源
frReport.Dataset := frDBDataSet;
frReport.PrepareReport;
frReport.ShowReport;
finally
frReport.Free;
frDBDataSet.Free;
end;
 
这个数据源的设置是不是要在.frf文件装入前进行?
if sProcessMode = '0' then
begin
frReport := TfrReport.Create(nil);
frDBDataSet := TfrDBDataSet.Create(nil);
try
frDBDataSet.DataSet := sDataSet;
//sDataSet是要打印的数据源
frReport.Dataset := frDBDataSet;
[red]frReport.LoadFromFile(sTemplateName);//加入.frf文件[/red]
frReport.PrepareReport;
frReport.ShowReport;
finally
frReport.Free;
frDBDataSet.Free;
end;
 
不行,错误出在[red]frReport.PrepareReport;[/red]
 
还要创建一个datasource吧,你这种方式是可行的,我在AFramer中就是这样做的。
frReport.Dataset := frDBDataSet;
这一行好像不需要。可以在www.dlling.com上找到例子,不过没有源代码。
 
->不行,错误出在frReport.PrepareReport;
那就应该是这一句出错了:frReport.LoadFromFile(sTemplateName);
其中sTelmplateNmae中的文件要全路径,你看看是不是,另外报表文件中使用的各类数据要
和你动态建立的数据库相对应。
 
To :windbell,
sTemplateName是全路径名
动态建立的数据库相应数据固定:dsDataSet
frDBDataSet.DataSet := sDataSet;
//sDataSet是要打印的数据源
中的sDataSet.name := 'dsDataSet';
 
frReport.LoadFromFile(sTemplateName);//加入.frf文件
//加入一个TFrDesign先看看...
frReport.DesignReport;
// frReport.PrepareReport;
// frReport.ShowReport;
 
我作了一个例子,发现动态创建时
frReport := TfrReport.Create(Form1);才正确
这样的话,DLL少了一个主动线程

 
我作了一个例子,发现
frReport := TfrReport.Create(Form1);
就可以运行,主要是我将frReport封装到DLL中,是没有Form,现在我应怎样办?????

我又试了
Applicatin.handle := AHandle;//AHandle是方法参数
frReport := TfrReport.Create(Application.mainForm);
frReport := TfrReport.Create(Application);
都不行
 
To :yanghaijun
我按你的作法//加入一个TFrDesign先看看...,
是可以打开AAA.frf,但是没有数据源
 
后退
顶部