1、首先打开FastReport软件,在数据目录中右键点击,新建一个数据源;根据向导提示填写完数据库的连接信息。
2、物理数据源新建完成之后如下图所示,有一个之前选择数据表的目录,然后可以通过这些数据表来在page页面里面绑定数据和布局
3、可以在page的startpage事件中自定义数据的连接与过滤条件,这些数据库连接(strConnection)与过滤条件(strSql)可以是从外部作为参数传入进来的。
绑定之后一定要记得调用Init()方法,不然表格就没有数据加载!
4、如果在同一个report里面有多个地方使用这个表格(或者是循环使用,比如在for循环里面,只是过滤条件不一样),都是按上面的GetReportDataSource方法来获取表格并初始化,表格里面的数据其实是每次循环使用过滤条件得到结果的并集,就是每次 *** 作的结果都会加入到表格中,那么结果可能就不是我们想要的了!
5、这时我们在获取数据表,并自定义绑定数据连接和过滤条件后,进行初始化之前就需要设置表格的ForceLoadData属性为true如下图所示:
6、通过官方的帮助文档可以知道设置了这个属性,在每次初始化时都会清空之前的数据,重新加载数据。如果调用次数多也会影响加载速度,所以默认值是false
方法有很多,具体方法如下:1、首先准备多张报表格式,让用户根据自己的需要选择,将来打印时调用这张报表就可以了,这种方法很简单,容易实现,并且一单有新的用户要求,只要加一张报表格式就解决了。(推荐使用)
2、为用户提供报表设计器。fastreport自带的报表设计器(我们设计报表时用的就是),可以为用户设计功能很强的报表,并在发布时带上。
3、中和一下上述的两种方法,用户可以选择,也可以自定义报表。
以下FastReport动态生成报表例子:
procedure TForm1.Button1Click(Sender: TObject)
var
v: TfrView
b: TfrBandView
Page: TfrPage
begin
frReport1.Pages.Clear
frReport1.Pages.Add// create page
Page := frReport1.Pages[0]
b := TfrBandView.Create// create Title band
b.SetBounds(0, 20, 0, 20)// position and size in pixels
b.BandType := btReportTitle// (only Top and Height are significant
Page.Objects.Add(b)// for the band)
v := TfrMemoView.Create// create memo
v.SetBounds(20, 20, 200, 16)
v.BandAlign := baWidth
v.Prop['Alignment'] := frtaCenter// another way to access properties
v.Prop['Font.Style'] := 2
v.Memo.Add('Your text is: [Edit1.Text]')
Page.Objects.Add(v)
b := TfrBandView.Create// create MasterData band
b.SetBounds(0, 60, 0, 20)
b.BandType := btMasterData
b.Dataset := 'frDBDataSet1'// band's dataset
Page.Objects.Add(b)
v := TfrMemoView.Create// create data field
v.SetBounds(20, 60, 200, 16)
v.Memo.Add('[Table1."Company"]')
Page.Objects.Add(v)
frReport1.Pages.Add// create second page
Page := frReport1.Pages[1]
Page.PageType := ptDialog
Page.Width := 200
Page.Height := 170
Page.Caption := 'Test'
v := TfrEditControl.Create// create editbox
v.SetBounds(60, 50, 75, 21)
v.Name := 'Edit1'
Page.Objects.Add(v)
v := TfrButtonControl.Create// create button
v.SetBounds(60, 100, 75, 25)
TfrButtonControl(v).Button.Caption := 'Test!'
TfrButtonControl(v).Button.ModalResult := mrOk
Page.Objects.Add(v)
frReport1.ShowReport
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)