在VB中使用水晶报表很简单,只要用水晶报表创建一个报表,在VB直接调用就可以了。但如果要使水晶报表动态地绑定数据库,则要作一定的修改。
1、在VB工程中加入水晶报表。
在“工程资源管理器”上右击,选择“添加...”,在弹出的菜单中选择“Crystal Report 9”,按默认值添加一个报表和一个窗体form2。
2、设置水晶报表。(作者:李东朝)
双击“CrystalReport1”打开水晶报表编辑器,右击“数据库字段”,选择“数据库专家...”,打开“数据库专家”窗口,点击:“创建新连接”,选择“仅字段定义”,打开“仅字段定义”窗口,点击:“创建文件...”,填写“数据库定义工具”中的内容(这里的字段名要与报表中想显示的字段名一致),添加完后,会弹出保存对话框,输入文件名,保存一个“.ttx”的文件。这个.ttx文件其实是一个文本文件,一行代表一个字段,每行的格式是:字段名+{tab}+类型+{tab}+长度。如:
gp String 30
cdm String 20
qx String 10
保存后,回到水晶报表编辑器,将你要的字段拖动到你的报表中。
3、添加一个Module1模块,定义两个公共变量:
Public Connection As New ADODB.Connection
Public rec As New ADODB.Recordset
4、Form2窗体中的内容 (作者:李东朝)
Private Sub Form_Load()
Dim sql
Dim AppPath As String ' 设置路径变量
Dim Db As String
AppPath = App.Path ' 获取程序路径
If Right(AppPath, 1) <> "/" Then AppPath = AppPath + "/"
' 若路径尾部没有"/",则添加之
' 与相对路径结合,组成绝对路径
Db = AppPath + "db1.mdb"
If Connection.State = adStateOpen Then
Else
Connection.CursorLocation = adUseClient
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Db + ";Persist Security Info=False"
End If
rec.CursorLocation = adUseClient
sql = "select groupname as gp,cdm,qx from USERQXTABLE "
rec.Open sql, Connection, 1, 1
Screen.MousePointer = vbHourglass
CRViewer91.ReportSource = CrystalReport1
CrystalReport1.Database.SetDataSource rec '将数据库绑定到水晶报表 (作者:李东朝)
CrystalReport1.Text2.SetText "你的报表标题" '动态更改标题
CrystalReport1.UnboundString1.SetUnboundFieldSource "{1.gp}" '使用未绑定字段
CrystalReport1.ReadRecords
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub