现在的位置: 首页 > 综合 > 正文

在VB中使用动态使用水晶报表

2013年08月23日 ⁄ 综合 ⁄ 共 1397字 ⁄ 字号 评论关闭

在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

抱歉!评论已关闭.