DOBON.NET DOBON.NETプログラミング掲示板過去ログ

クリスタルレポート

環境/言語:[ういんどーずXP VB.net]
分類:[.NET]

クリスタルレポートを出力できるようにしました。
しかし、プロジェクトを移動させるとクリスタルレポートが開けなくなってしまいました。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim cr1 = New CrystalReport1
CrystalReportViewer1.ReportSource = cr1

End Sub

この書き方はあっていますか?

あと、クリスタルレポートをデータベースに接続しました。
・新しい項目の追加からクリスタルレポートを選択し、レポートギャラリーダイアログボックスでからのレポートを選びOKを押す
・データベースエキスパートダイアログボックスから「OLE DB (ADO)」を選び「Microsoft Jet 4.0 Ole DB Provider」を選び、接続情報のところでデータベース名に「D\VBNET500\Sample.mdb」と入力。
・あとはデータベースエキスパートダイアログボックスで利用可能なデータソースからさっき追加したテーブルを>ボタンで右へ移動。

こんな感じでクリスタルレポートは作りました。私的には接続情報のところでデータベース名に「D\VBNET500\Sample.mdb」と入力されているのがいけないのかと思うんですが、どのようにしたらどこへプロジェクトを持ってきても接続できるようになるのかがわかりません。

初心者でこんなこともわかりません。お手数ですがご教授お願いします。
■No15642に返信(龍平さんの記事)
> この書き方はあっていますか?

移動させたことで出力できなくなったわけですから、
ソースコード上に問題が発生するとすれば、それはパス (ただし相対パス) ぐらいなものです。

> あと、クリスタルレポートをデータベースに接続しました。

もっと落ち着いて書いて頂けませんか...? (;^-^)
第三者の私には、話の関連性が見えません...

> こんな感じでクリスタルレポートは作りました。
> 私的には接続情報のところでデータベース名に「D\VBNET500\Sample.mdb」と入力されているのがいけないのかと思うんですが、
> どのようにしたらどこへプロジェクトを持ってきても接続できるようになるのかがわかりません。

どうして、それがいけないと思ったのですか?
(セミコロンがないようですが) "絶対パス" で指定しているのですから、
アセンブリを移動したからといって問題が生じるものではないと思います。

# 通常は相対パスを使うか、アンバウンド レポートを使いますが。

.............................................................................................................................
じゃんぬ @ わんくま同盟, Microsoft MVP for Visual Developer - C#
http://jeanne.wankuma.com/
http://blogs.wankuma.com/jeanne/
わかりにくかったですね。すみません。

まず最初にクリスタルレポートをデータベースに接続しました。
・新しい項目の追加からクリスタルレポートを選択し、レポートギャラリーダイアログボックスでからのレポートを選びOKを押す
・データベースエキスパートダイアログボックスから「OLE DB (ADO)」を選び「Microsoft Jet 4.0 Ole DB Provider」を選び、接続情報のところでデータベース名に「D;\VBNET500\Sample.mdb」と入力。
・あとはデータベースエキスパートダイアログボックスで利用可能なデータソースからさっき追加したテーブルを>ボタンで右へ移動。

こんな感じでクリスタルレポートは作りました。

フォーム1にCrystalReportViewerを貼り付け、以下のようなコードを書き

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim cr1 = New CrystalReport1
    CrystalReportViewer1.ReportSource = cr1

End Sub

実行してみました。その時は何も問題はなかったのです(ちゃんとレポートが表示されました)が、

このプロジェクトを他の場所において実行しなおしてみたら「データベース ログイン」という画面が出てきてしまいレポートを見ることができなくなりました。
「データベース ログイン」画面には
メインレポート
 テーブル名:
 サーバー名:
 データベース:
 ログインID:
 パスワード:
と書かれていていました。

他の場所へ持っていってもデータベースへ接続ができるようにしたいのです。
どうかよろしくお願いします。
■No15652に返信(龍平さんの記事)
> 「D;\VBNET500\Sample.mdb」と入力。

ドライブ レターの指定がセミコロンになっていますが、正しくは D:\VBNET500\Sample.mdb ですよね。
やはり、バウンド レポートなんですね。

> このプロジェクトを他の場所において

"他の場所" をもっと詳しくお願いします。
これはローカルの別の場所ということでしょうか?

レポートは内部レポートなのですよね。
リソースで持っていると考えると、レポートを再度開けて再接続しなければなりません。(多分)

..............................................................................................................................
じゃんぬ @ わんくま同盟, Microsoft MVP for Visual Developer - C#
 http://jeanne.wankuma.com/
 http://blogs.wankuma.com/jeanne/
> ドライブ レターの指定がセミコロンになっていますが、正しくは D:\VBNET500\Sample.mdb ですよね。
:です。

> やはり、バウンド レポートなんですね。
バウンド レポートとは何ですか?


> "他の場所" をもっと詳しくお願いします。
> これはローカルの別の場所ということでしょうか?

家にある別のパソコンでも見えるようにしたいのです。
どのようにしたらよいのかよくわかりません。
■No15655に返信(龍平さんの記事)
> バウンド レポートとは何ですか?

"やはり" と書いているように、龍平さんが今作成したと言われるようなレポートのことです。
簡単に言えば、データベースからの '縛り' を受けるようなレポートのことです。
直接、データベースまでのパス、テーブル名を指定しているということは縛りを受けるということです。

逆に、「アンバウンド レポート」は、この縛りがありません。
動的に DataSource を作成し、データのみを渡している状態です。

# 詳しくは、調べたいキーワードで検索すればヒットします。

> 家にある別のパソコンでも見えるようにしたいのです。
> どのようにしたらよいのかよくわかりません。

その端末の環境が書かれていません。
この状態では、私は龍平さんのとなりにいるわけではないので、想像でモノを言うことしかできません。

まず、環境を書いて頂けませんか?
それと、開発環境として実行しているのかどうかについても教えてください。

..............................................................................................................................
じゃんぬ @ わんくま同盟, Microsoft MVP for Visual Developer - C#
 http://jeanne.wankuma.com/
 http://blogs.wankuma.com/jeanne/

DOBON.NET | プログラミング道 | プログラミング掲示板