トップ回答者
Crystal ReportでDBのデータを表示したいのですが

質問
-
また、お世話になります。
VC# 2010 Pro EN + Npgsql + PostgreSQL(FreeBSD) + Windows Vista UltimateVS 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;
}
}}
回答
-
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
すべての返信
-
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をアンインストールして
再度、インストールしてみても設定できるような箇所は出てこず
インストールは成功しますが、同じエラーの繰り返しです。
なにか、対策はありますでしょうか?
-
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/ -
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本で使い果たしました...) 他に印刷手段は何かあるのでしょうか? -
いろいろとまだ問題がありそうですね。私はまだ試していないので検索しただけですが、以下で一応は動くようなことが書いてあります。
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
-
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
-
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
-
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し
右上に表示される設定用の矢印マークをクリックして開くダイアログで表示用のレポートを選択して
デバッグすると表示されました。
説明が一部省略されているところなどあると思いますが、このような方法でできました。
-
一応、手順のまとめとして画像を含めたものを作ってみましたので
もし、参考にしたい方がおられましたらご覧下されば幸いです。
もし、間違った記述等あれば訂正させていただきますのでコメントしてください。