什么可能导致Visual Studio 2010中的Crystal报表显示胡言乱语?

时间:2013-01-12 06:59:54

标签: mysql vb.net visual-studio-2010 crystal-reports

早上好,

在观看大量在线教程并阅读文档后,我决定开始使用Crystal Reports for Visual Studio运行时。据我所知,SAP Crystal Reports运行时本身不支持与MySQL数据库的连接,因此我相信我已经完成了所有操作,将数据库记录拉入数据集对象。我可以在数据集中看到记录,它们与数据库中的记录相匹配。不幸的是,当我运行报告预览时,除了日期字段外,一切都是“乱码”。

我很难过,现在不知道该怎么做,我们将非常感谢任何帮助。下面的屏幕截图显示了数据集中的记录以及报告预览。

顺便说一下,服务器和表上的排序规则都设置为“ Latin1 - Default Collat​​ion ” - 不确定是否有任何区别。

图片#1:数据记录视图

enter image description here 点击此处查看大图:https://dl.dropbox.com/u/55174425/Dataset%20Records.jpg

图片#2:报告的设计视图

enter image description here 点击此处查看大图:https://dl.dropbox.com/u/55174425/Design%20View%20of%20Report.jpg

图像#3:预览报告

enter image description here 点击此处查看大图:https://dl.dropbox.com/u/55174425/Preview%20of%20Report.jpg

1 个答案:

答案 0 :(得分:2)

你好,

我设法回答了我自己的问题并决定分享我的答案,以防有人遇到同样的问题。

嗯,这不是一个问题,因为它是Crystal Reports for Visual Studio运行时的实际应用方式(至少在涉及到MySQL时)。我没有意识到的是,因为VS的CR运行时不支持与MySQL数据库的本机连接,所以必须使用Visual Studio使用.Net连接器创建服务器连接(在以后可用你安装连接器。)

一旦建立了服务器连接,我就可以创建一个DataSet并用DB中的记录填充它。不幸的是,我没有意识到这个数据集只允许选择设计报告所需的字段/列(.rpt文件)。现在,这就是我的“胡言乱语”问题所在。事实上,我发现CR运行时在设计报表时有目的地使用随机文本/字符,如果您预览报表,您将看到这一点。此外,如果您调试应用程序,您将获得一个仅包含列标题的空白报告。

解决方法是以编程方式查询数据库,创建并填充DataTable,并将其分配给刚刚创建的报告的新实例作为其数据源。而中提琴,报告现在显示了我正在寻找的信息。所以,这是我最终在运行时使用的代码,以便让我的报告显示我正在寻找的数据:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Try
        'Define the MySQL Connection String.
        Dim myConnectionString As String = "Server=server_address;Port=3306;Uid=user_id;Password=password;Database=schema_name;"

        'Create a new MySqlConnection object and assign the Connection String to it.
        Dim dbConn As New MySqlConnection(myConnectionString)

        'Define your Query.
        Dim dbQuery As String = "SELECT * FROM users"

        'Create a new MySqlDataAdapter object and assign the Query and Connection String objects to it.
        Dim dbAdapter As New MySqlDataAdapter(dbQuery, dbConn)

        'Create a new DataTable object and fill it with the contents of the MySqlDataAdapter object.
        Dim dbTable As New DataTable
        dbAdapter.Fill(dbTable)

        'Create a new instance of the report you previously designed and set its DataSource to the DataTable.
        Dim report As New rptUserList
        report.SetDataSource(dbTable)

        'Set the ReportSource of the CrystalReportViewer control to your report.
        CrystalReportViewer1.ReportSource = report
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub