none
Crystal ReportでDBのデータを表示したいのですが RRS feed

  • 質問

  • また、お世話になります。

    VC# 2010 Pro EN + Npgsql + PostgreSQL(FreeBSD) + Windows Vista Ultimate
    VS 2010でダウンロードした(バンドル?版)CrystalReportで開発しています。

    予算の関係上サーバーもWindows系が使えませんので
    こういう構成になっております。
    SQL Serverのようにウィザードの類やデータベースエクスプローラー等が
    使えないので、サンデーPGにはよりいっそう難しいものになっています。

    フォーム:FormReportsUserに
    CrystalReportViewerを設置して
    そこにDBのデータを
    DataSetで表示させようとしているのですが

    デバッグすると
    crystalReportViewer1.ReportSource = ds;
    のところで
    Invalid Report Source.のエラーで止まります。

    DataGridViewのようにFillでデータを表示できないのでしょうか?

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Npgsql;
    using Mono;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.ReportSource;
    using CrystalDecisions.Shared;

    namespace PostgreSQLTEst
    {
        public partial class FormReportsUser : Form
        {

            // メンバ変数
            // データベース接続子
            private NpgsqlConnection m_conn = new NpgsqlConnection
            (
                  "Server=192.168.0.1;"
                + "Port=5432;"
                + "User Id=user;"
                + "Password=pass;"
                + "Database=db;"
                + "Encoding=UNICODE"
            );

            // データアダプタ
            private NpgsqlDataAdapter da = new NpgsqlDataAdapter();

            // データセット
            private DataSet ds = new DataSet();

            public FormReportsUser()
            {
                InitializeComponent();
            }

            private void FormReportsUser_Load(object sender, EventArgs e)
            {

                // データアダプタ構築
                // selectコマンド
                da.SelectCommand = new NpgsqlCommand
                (
                       "select"
                    + " id"
                    + ", first_name"
                    + ", last_name"
                    + ", first_phonetic"
                    + ", last_phonetic"
                    + ", age"
                    + ", g_id"
                    + ", postal_code"
                    + ", address"
                    + ", n_id"
                    + ", flg"
                    + " from"
                    + " users"
                    + " order by id",
                    m_conn
                );
                // データセット生成
                da.Fill(ds, "users");

                if (ds.Tables[0].Rows.Count == 0)
                {
                    MessageBox.Show("No data Found", "CrystalReportUser");
                    return;
                }

                crystalReportViewer1.ReportSource = ds;

            }

        }
    }

    2010年8月21日 9:22

回答

  • レポートのデザインは正しくされましたか? たぶんVS2010でもレポートのデザイン画面において、データテーブルのフィールドをドラッグ&ドロップすれば配置できると思います。実際の画面は私は未だ見ていませんので、具体的なことが言えず、すみません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク oira3ryu 2010年8月26日 12:19
    2010年8月22日 15:09
    モデレータ
  • DataSetは作られていますか? 私はNpgsqlを使ったことがありませんが、以下のページを見るとレポートのデザインが普通にできるように思われます。

    Crystal Report with PostgreSQL
    http://www.c-sharpcorner.com/UploadFile/thabet084/CrystalReport_PostgreSQL08252009111048AM/CrystalReport_PostgreSQL.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク oira3ryu 2010年8月26日 12:19
    2010年8月23日 0:43
    モデレータ

すべての返信

  • 流れとしては以下のような感じになります。

    var myReport = new HogeReport();
    myReport.SetDataSource(dataSet);
    crystalReportViewer1.ReportSource = myReport;


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答の候補に設定 山本春海 2010年8月26日 6:49
    2010年8月21日 15:20
    モデレータ
  • trapemiyaさん、おはようございます。

    var myReport = new HogeReport();

    HogeReportの指すものは、何でしょうか?

    (レポート名?)

    参照を探しているのですが、すいません。

    2010年8月21日 22:36
  • 説明不足でした。すみません。拡張子rptのレポートクラスです。レポートを作成し、それにデータが流れ込んで、ReportViewerで表示される流れになります。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2010年8月21日 23:19
    モデレータ
  • trapemiyaさん、ありがとうございます。

                var myReport = new CrystalReport1();

                myReport.SetDataSource(ds);

                crystalReportViewer1.ReportSource = myReport;

    で、今度は

     

    ファイルまたはアセンブリ 'file:///C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

    というエラーが出て

    crdb_adoplus.dll についてgoogleで検索したところ

    https://forums.sdn.sap.com/message.jspa?messageID=6488052

    のフォーラムがあって対処法が示されているのですが

    Crystal Reportsをアンインストールして

    再度、インストールしてみても設定できるような箇所は出てこず

    インストールは成功しますが、同じエラーの繰り返しです。

    なにか、対策はありますでしょうか?

    2010年8月22日 5:13
  • VS2010からCrystal Reportsはバンドルされなくなり、別途ダウンロードして使用する形になりました。現在もベータ版のままのようですが、これを入れられているのでしょうか?

    SAP Crystal Reports for Visual Studio
    http://www.sdn.sap.com/irj/sdn/crystalreports-dotnet

    #7月ぐらいに正式リリースされるような記事をどこかで読んだ気がするんですが探せません・・・


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2010年8月22日 5:57
    モデレータ
  • trapemiyaさん、いつもありがとうございます。
    現在もベータ版のままのようですが、これを入れられているのでしょうか?
    はい、そうなんです。 ノートPCにVS 2010 Pro JPを デスクトップにVS 2010 Pro ENを 入れてあるので試したところ JPの方は、.rptを作る際に.mhtができしまうバグ?で使えませんので ENの方は、今回のcrdb_adoplus.dllにまつわるエラーで使えず。
    #7月ぐらいに正式リリースされるような記事をどこかで読んだ気がするんですが探せません・・・
    SAPのダウンロードページはBeta 2のままです。 いっそのことCrystal Reportsはあきらめて 代替手段があればそれでもいいのですが Active Reportは、もう予算が無いので無理です。(VS2本で使い果たしました...) 他に印刷手段は何かあるのでしょうか?
    2010年8月22日 8:35
  • いろいろとまだ問題がありそうですね。私はまだ試していないので検索しただけですが、以下で一応は動くようなことが書いてあります。

    CRVS2010 Beta - file not found error crdb_adoplus.dll  
    https://forums.sme.sap.com/thread.jspa?threadID=1665437&start=0&tstart=57


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答の候補に設定 山本春海 2010年8月26日 6:50
    2010年8月22日 9:27
    モデレータ
  • trapemiyaさん、ありがとうございます。

    app.configを

     

    <?xml version="1.0" encoding="utf-8" ?>
    
    <configuration>
    
    <startup useLegacyV2RuntimeActivationPolicy="true">
    
    <supportedRuntime version="v4.0"/>
    
    </startup>
    
    </configuration>

    のように書き加えることでとりあえずエラーは無くなり

    Crystal Reportsが表示されるようになりました。

    でも、レコードが表示されない。なぜ?

    • 回答の候補に設定 山本春海 2010年8月26日 6:50
    2010年8月22日 13:02
  • レポートのデザインは正しくされましたか? たぶんVS2010でもレポートのデザイン画面において、データテーブルのフィールドをドラッグ&ドロップすれば配置できると思います。実際の画面は私は未だ見ていませんので、具体的なことが言えず、すみません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク oira3ryu 2010年8月26日 12:19
    2010年8月22日 15:09
    モデレータ
  • trapemiyaさん、おはようございます。

    VC# 2010 Pro EN + Npgsql + PostgreSQL(FreeBSD) + Windows Vista Ultimate
    VS 2010でダウンロードした(バンドル?版)CrystalReportで開発しています。

     

    Npgsqlを使った接続のためかDatabase Expert等が使えません。

    コードで設定させる方法・参考Web Page等があればご指導ください。

    2010年8月22日 23:10
  • DataSetは作られていますか? 私はNpgsqlを使ったことがありませんが、以下のページを見るとレポートのデザインが普通にできるように思われます。

    Crystal Report with PostgreSQL
    http://www.c-sharpcorner.com/UploadFile/thabet084/CrystalReport_PostgreSQL08252009111048AM/CrystalReport_PostgreSQL.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク oira3ryu 2010年8月26日 12:19
    2010年8月23日 0:43
    モデレータ
  • trapemiyaさん、ありがとうございます。

    やっと、CrystalReportsのCrystalReportsViewで
    PostgreSQLのデータを表示させることができました。

    ほぼ参考サイト
    http://www.c-sharpcorner.com/UploadFile/thabet084/CrystalReport_PostgreSQL08252009111048AM/CrystalReport_PostgreSQL.aspx
    の手順どおりでできました。

    たぶんうまくいかなかった原因は、trapemiyaさんのご指摘どおり

    データセットが作られていないことだったんだろうと思います。

    「プロジェクト」-「新しい項目の追加」-右側のテンプレートから「データセット」を選択して
    ファイル名をuser.xsdとして、データセットを作成して、ここでいったん保存して

    データセットに任意のカラムを作成して、データセット名を付けてさらに保存し。

    「プロジェクト」-「新しい項目の追加」-右側のテンプレートから「Crystalレポート」を選択し

    その上で右クリックしてDatabase Expertでデータセット選択してレポートにカラムを作成。

    表示用の空フォームへTool Boxより「CrystalReportViewer」をDrug & Dropし

    右上に表示される設定用の矢印マークをクリックして開くダイアログで表示用のレポートを選択して

    デバッグすると表示されました。

    説明が一部省略されているところなどあると思いますが、このような方法でできました。

     

     

    2010年8月26日 12:19
  • 一応、手順のまとめとして画像を含めたものを作ってみましたので

    もし、参考にしたい方がおられましたらご覧下されば幸いです。

    もし、間違った記述等あれば訂正させていただきますのでコメントしてください。

    http://d.hatena.ne.jp/oira3ryu/20100827/1282912011

    2010年8月28日 3:15