1

おはようございます、

多数のオンライン チュートリアルを見てドキュメントを読んだ後、Crystal Reports for Visual Studio ランタイムを実際に使用することにしました。SAP Crystal Reports ランタイムは MySQL DB への接続をネイティブにサポートしていないことを理解しているため、DB レコードを Dataset オブジェクトにプルするためにすべてを正しく行ったと思います。データセット内のレコードを確認でき、データベース内のレコードと一致しています。残念ながら、レポートのプレビューを実行すると、日付フィールドを除いてすべてが「意味不明」です。

私は困惑していて、今何をすべきかわかりません。どんな支援も大歓迎です。以下のスクリーンショットは、データセットのレコードとレポートのプレビューを示しています。

ちなみに、サーバーとテーブルの照合は両方とも「Latin1 - Default Collat​​ion 」に設定されています- それが違いを生むかどうかはわかりません。

画像 #1: データセット レコードの表示

ここに画像の説明を入力 画像を拡大するには、ここをクリックしてください: https://dl.dropbox.com/u/55174425/Dataset%20Records.jpg

画像 #2: レポートのデザイン ビュー

ここに画像の説明を入力 画像を拡大するには、ここをクリックしてください: https://dl.dropbox.com/u/55174425/Design%20View%20of%20Report.jpg

画像 #3: レポートのプレビュー

ここに画像の説明を入力 画像を拡大するには、ここをクリックしてください: https://dl.dropbox.com/u/55174425/Preview%20of%20Report.jpg

4

1 に答える 1

3

SOさん、こんにちは。

私はなんとか自分の質問に答えることができ、誰かがこの同じ問題に遭遇した場合に備えて、私の答えを共有することにしました.

Crystal Reports for Visual Studio ランタイムが動作するはずの実際の方法であるため (少なくとも MySQL に関しては)、それほど問題ではありません。私が気付いていなかったのは、VS の CR ランタイムは MySQL データベースへのネイティブ接続をサポートしていないため、Visual Studio を使用して .Net コネクタ (コネクタをインストールします)。

サーバー接続が確立されると、DataSet を作成し、DB からのレコードを取り込むことができました。残念ながら、このデータセットでは、レポート (.rpt ファイル) の設計に必要なフィールド/列を選択できるだけであることに気付きませんでした。さて、ここに私の「ちんぷんかんぷん」の問題がありました。実際、レポートをデザインしているときに CR ランタイムが意図的にランダムなテキスト/文字を使用していることを発見しました。レポートをプレビューすると、これが表示されます。また、アプリケーションをデバッグすると、列ヘッダーのみの空のレポートが得られます。

これに対する解決策は、プログラムで DB にクエリを実行し、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
于 2013-01-14T22:00:50.740 に答える