English 中文(简体)
在运行时设置Crystal Report数据源
原标题:
  • 时间:2009-02-26 15:45:43
  •  标签:

在创建我的Crystal Report时,我显然建立了一个数据库和服务器连接,用于我的开发工作。

我现在想在我的VB应用程序中动态设置数据库和服务器名称来与报表一起使用。我把这些值作为字符串变量varServer和varDatabase。

有人知道如何做到这一点吗?

提前致谢。

附言:我尝试了几种在线解决方案,但是在VB6方面遇到了问题。

最佳回答

这个链接包含了你想知道的所有信息。

更新:这是一个最小工作样本,用于与SQL Server集成身份验证。您应该使用表对象的ConnectionProperties来设置连接参数。

Dim app As New CRAXDDRT.Application
Dim rpt As CRAXDDRT.Report
Dim tbl As CRAXDDRT.DatabaseTable
Dim tbls As CRAXDDRT.DatabaseTables

Set rpt = app.OpenReport("C:
eport
epotest.rpt")

For Each tbl In rpt.Database.Tables
    tbl.ConnectionProperties.DeleteAll
    tbl.ConnectionProperties.Add "Provider", "SQLOLEDB"
    tbl.ConnectionProperties.Add "Data Source", "localhost"
    tbl.ConnectionProperties.Add "Initial Catalog", "testdb"
    tbl.ConnectionProperties.Add "Integrated Security", "True"     cut for sql authentication
     tbl.ConnectionProperties.Add "User Id", "myuser"     add for sql authentication
     tbl.ConnectionProperties.Add "Password", "mypass"    add for sql authentication
Next tbl

 This removes the schema from the Database Table s Location property.
Set tbls = rpt.Database.Tables
For Each tbl In tbls
    With tbl
        .Location = .Name
    End With
Next

 View the report
Viewer.ReportSource = rpt
Viewer.ViewReport
问题回答

干得好!谢谢你的代码!我稍微改了一下,因为这部分没法运行:

 View the report
Viewer.ReportSource = rpt
Viewer.ViewReport

它出现了一个错误,无法找到对象。

所以我就这样做了:

With Me.CRViewer91
    .ReportSource = rpt
    .ViewReport
End With

你使用的是哪个版本的水晶报告?

在.NET世界中,通常像Emoreau在这里所说的那样将数据集传递给报告。

这样,您的连接是从代码设置而不是水晶设置的,并且可以存储在全局连接属性中。但是,那是 .net。我认为您拥有的水晶版本应该具有类似的功能,或者Emoreau可能有一个在您使用的VB6版本中执行此操作的示例。

希望这让你有了开始的动力。

还可以添加此代码段来设置报告的默认提供者。

 Dim MyProvider As Object = logOnInfo.ConnectionInfo.LogonProperties.LookupNameValuePair("Provider")
            If IsNothing(MyProvider) = False Then
                MyProvider.Value = "SQLOLEDB"
            End If




相关问题
热门标签