.net教程:在vb中使用水晶报表的一种简易编程方法
[size=3]第一步:在vb工程中project菜单加入"add crystal report 9",报表名使用默认即可。这时form2(crystal rerport自动添加的form,假设名为form2)被自动分配了如下代码:
option explicit
dim report as new cystal1
private sub form_load()
screen.mousepointer = vbhourglass '调用水晶报表时置鼠标为沙漏状
crviewer91.reportsource = report '该语句的赋值将在后面被修改
crviewer91.viewreport
screen.mousepointer = vbdefault '调用水晶报表完成后置鼠标为默认形状
end sub
private sub form_resize()
crviewer91.top = 0
crviewer91.left = 0
crviewer91.height = scaleheight
crviewer91.width = scalewidth
end sub
第二步:
点击crystal report设计器的"数据库字段",选定"数据库专家...",然后点"创建新连接",再点"仅字段定义",创建"数据库定义"文件,字段名和宽度和原数据库表保持一致。最后,在数据库字段中获得了相应字段,将其置于报表上,按水晶报表的要求配置。
第三步:
该步骤非常关键,添加一个modual到工程文件中,定义全局的adodb变量,实现数据库和水晶报表的动态连接。代码如下:
public conn as new adodb.connection
public rs as new adodb.recordset
第四步:
关于vb程序的ado数据库连接注意事项,请看下面的打印按钮例程。
private sub command1_click()
dim connstr as string
if conn.state = adstateopen then conn.close
connstr = "provider=microsoft.jet.oledb.4.0;data source=" & app.path & "\prtest.mdb;persist security info=false" 'prtest.mdb是程序当前目录的测试access数据库
conn.connectionstring = connstr
conn.open
conn.cursorlocation = aduseclient
if rs.state = adstateopen then rs.close
rs.open "test", conn, adopenkeyset, adlockreadonly
' report.database.setdatasource rs, 3, 1 '此行取消
form2.show 1 '数据库连接完成后,调用form2水晶报表工程
end sub
需要提请大家注意的是,上面代码中的report.database.setdatasource rs, 3, 1是初用水晶报表的程序员容易犯的错误,使用该语句后将造成数据库和水晶报表的连接失败。如何动态调用水晶报表呢?请看第五步。
第五步:
创建水晶报表和数据库数据源的连接,需要修改上面form2的代码。
option explicit
'dim report as new cystal1
'上面一行取消
private sub form_load()
dim oapp as new craxdrt.application
dim orpt as craxdrt.report
dim reportname as string
'上面三行是新增加的
screen.mousepointer = vbhourglass
reportname = "\rpt\pr1.rpt" '定义要引用的rpt文件
set orpt = oapp.openreport(app.path & reportname, 1)
orpt.database.setdatasource rs '连接水晶报表和数据源
orpt.readrecords
crviewer91.reportsource = orpt '启用水晶报表的预览功能
crviewer91.viewreport
screen.mousepointer = vbdefault
end sub
private sub form_resize()
crviewer91.top = 0
crviewer91.left = 0
crviewer91.height = scaleheight
crviewer91.width = scalewidth
end sub
private sub form_unload(cancel as integer)
'set report = nothing
set rs = nothing
set conn = nothing
unload form2
end sub
上面介绍了在vb中使用水晶报表进行报表开发的一种方法,该方法简单易用,适合初学者上手。
[/size] 正在学习中..........
页:
[1]