VB调用水晶报表

第一步:
  在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 ""select top 1 * from UserTable"", 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 

’ 现在问题是:我用的是"select top 1 * from UserTable",而报表显示出所有的了??

----------------------------------------------------------------------

Private objCRApp As New CRAXDRT.Application    '水晶报表应用程序对象
Private objCRReport As New CRAXDRT.Report             '报表对象
Dim rs As ADODB.Recordset
Dim msgtext As String

Private Sub cmdsearch_Click()

  '清除报表中保持的数据
  objCRReport.DiscardSavedData
  '形成数据集
  '单个表适合用sql语句
  strsql = "select * from clerk where clerk_bm='" & Combo1.Text & "'"
  '多个表筛取数据 必须要用视图,水晶报表不能用sql语句
  'strsql = "select * from clerk_organ_view where clerk_bm='" & Combo1.Text & "'"
  Set rs = ExecuteSQL(strsql, msgtext)
  '赋给报表数据
  objCRReport.Database.SetDataSource rs
  CRViewer91.ReportSource = objCRReport

  '指定报表来源
  CRViewer91.ReportSource = objCRReport
  '显示报表
  CRViewer91.ViewReport
End Sub

Private Sub Form_Load()
  Dim strsql As String
  strsql = "select distinct clerk_bm from clerk"
  Set rs = ExecuteSQL(strsql, msgtext)
  Do While Not rs.EOF
     Combo1.AddItem rs(0)
     rs.MoveNext
  Loop
  
  '加载报表模板
  '单个数据表形成的报表
  Set objCRReport = objCRApp.OpenReport(App.Path & "\1.rpt", 1)
  '多个数据表形成的报表
  Set objCRReport = objCRApp.OpenReport(App.Path & "\2.rpt", 1)
  
End Sub

Private Sub Form_Resize()
'  CRViewer91.Top = 50
'  CRViewer91.Left = 0
'  CRViewer91.Height = ScaleHeight - Combo1.Height
'  CRViewer91.Width = ScaleWidth
End Sub

转载于:https://www.cnblogs.com/todd/archive/2007/07/27/833397.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 水晶报表是一种高效的报表生成工具,常用于VB编程中。它是由SAP公司开发的一款报表生成工具,具有丰富的功能和灵活的设计方式。水晶报表可以通过VB编程来实现数据与界面的交互和报表的生成。 使用水晶报表可以实现以下功能: 1. 数据源连接:水晶报表可以连接多种类型的数据源,包括数据库、Excel文件等,可以灵活地获取和处理数据。 2. 报表设计:水晶报表提供了丰富的设计工具,可以设计各种样式和格式的报表,包括表格、图表、图像等,使报表具有良好的可视化效果。 3. 数据过滤:水晶报表提供了数据过滤的功能,可以根据用户的需求对数据进行筛选和过滤,进一步精确地展示所需的数据。 4. 报表导出:水晶报表支持多种报表导出格式,包括PDF、Excel、Word等,可以方便地将报表导出和共享给其他人员查看。 5. 报表打印:水晶报表可以实现报表的打印功能,用户可以根据需要选择不同的打印设置,以便满足不同的打印需求。 在VB编程中,使用水晶报表可以通过引用相应的报表生成库来实现,然后在代码中进行相应的配置和调用。首先,需要设置数据源连接,然后设计报表的样式和格式,并通过编程来实现数据的筛选和处理。最后,可以调用水晶报表的导出和打印功能,实现报表的最终生成和输出。 总而言之,水晶报表是一种功能强大的报表生成工具,适用于VB编程中,具有丰富的设计和功能特点,可以提高报表的生成效率和质量,使报表呈现更加直观和精确。 ### 回答2: 水晶报表是一款可用于VB(Visual Basic)开发环境的报表生成工具。它基于SAP的Crystal Reports技术,可以生成各种类型的报表,如销售报表、财务报表、员工考勤报表等。 使用水晶报表,我们可以通过在VB环境中添加相应的控件,轻松地创建和设计报表。首先,我们需要连接到数据库,并获取所需的数据。然后,我们可以选择报表布局和样式,包括报表的标题、页眉、页脚、表格、图表等,以展示数据结果。 水晶报表提供了丰富的数据处理和分析功能,比如数据筛选、排序、分组、汇总等。我们可以根据需要进行数据过滤,对数据进行排序,根据特定字段对数据进行分组,并在报表中显示数据的总计、平均值等统计信息。 生成的报表可以以多种格式输出,如PDF、Excel、Word等,方便与他人共享和打印。水晶报表还支持报表的导出和打印设置,可以自定义页面尺寸、页眉页脚、打印布局等,以满足个性化需求。 在VB环境中使用水晶报表,我们可以轻松地生成具有专业外观和易于阅读的报表,帮助我们更好地分析和展示数据。无论是在企业管理、销售分析、财务报告等领域,水晶报表都是一个非常有用的工具,能够提高我们的工作效率和数据分析能力。 ### 回答3: 水晶报表是一款功能强大的报表工具,用于在VB(Visual Basic)中生成、显示和打印各种格式的报表。它提供了丰富的报表设计功能和交互性,可以轻松地生成复杂的报表。 使用水晶报表需要先安装并配置相关的组件,在VB中引用这些组件,并通过相应的编程接口来调用水晶报表的功能。通过编程接口,我们可以设置报表的数据源、设计报表的布局和样式,以及生成报表的预览和打印。 在报表设计中,我们可以使用水晶报表提供的图形界面工具来创建报表模板,包括添加数据字段、设置报表的标题、页眉、页脚等。我们还可以添加图表、子报表、交叉表等更复杂的报表元素来满足特定的报表需求。 在运行时,我们可以通过编程接口来动态地设置报表的数据源,将数据源中的数据填充到报表中的相应位置。我们还可以通过编程操作来修改报表的样式和内容,以及添加页眉、页脚和页码等。 水晶报表还提供了丰富的导出功能,可以将报表导出为多种格式,如PDF、Excel、Word等,方便与其他系统或人员共享和使用。 总而言之,水晶报表VB中一款功能强大的报表工具,能够帮助我们轻松地生成、显示和打印各种格式的报表,提高工作效率,并且具备丰富的报表设计和导出功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值