- PR -

CrystalReportでログオンに失敗する

投稿者投稿内容
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-06-10 16:14
お世話さまです。

CrystalReportで検索してヒットしたログは全部漁ってみたのですが、
どーしても現状を打破できないのでご相談します。

XP Professionalの入ったPCにIISとVS.NETをインストールし、
ASP.NET(VB)で開発しています。

過去ログ(http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1572&forum=7)
のうりゅうさんの手順に沿ってWEBフォームにCrystalReportViewerを
貼り付けて作成したレポート(CRep.rpt)を表示しようとすると、
”ログオンに失敗しました”と出ます。

で、WEBフォームのPage_Loadプロシジャーには下記のように記述しました。

CrystalReportViewerRep.ReportSource = cachedCRep1…@

CrystalReportViewerRepのDataBindingsプロパティの
ReportSourceプロパティで単純連結のPageでcachedCRep1を指定もしてあります。

@の直下に
CrystalReportViewerRep.LogOnInfo.Item("テーブル名").ConnectionInfo.Password = ""…A

を指定しても”ログオンに失敗しました”のままです。

("テーブル名")を("データベース名.テーブル名")や
("データベース名.dbo.テーブル名")とすると
”指定された引数は、有効な値の範囲内にありません”となります。

Aの前に
CrystalReportViewerRep.LogOnInfo.Item("テーブル名").ConnectionInfo.ServerName = "XXX"
CrystalReportViewerRep.LogOnInfo.Item("テーブル名").ConnectionInfo.DatabaseName = "YYY"
CrystalReportViewerRep.LogOnInfo.Item("テーブル名").ConnectionInfo.UserID = "sa"

を記述してもやっぱり”ログオンに失敗しました”のままです。

ご教示頂けると幸いです。
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-06-10 16:40
こんにちは。
スレッド見ました。

プログラムの内容で悪い部分とかは分かりませんが、私の場合は、こんな感じです。

Dim objReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument()
Dim objLogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo()

'データベースログイン
With objLogOnInfo
.ConnectionInfo = objReport.Database.Tables.Item("XXXX").LogOnInfo.ConnectionInfo
.ConnectionInfo.DatabaseName = "???"
.ConnectionInfo.ServerName = "???"
.ConnectionInfo.Password = "???"
.ConnectionInfo.UserID = "???"

objReport.Database.Tables.Item("XXX").ApplyLogOnInfo(objLogOnInfo)
End With
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-06-10 17:29
===>Mr.タナカさん

こんにちは!
先日はありがとうございました。

早速のレス、ありがとうございます。

この通りにコーディングして実行してみましたところ、
”レポートファイルパスが無効です。”と出て、
.ConnectionInfo = objReport.Database.Tables.Item("XXXX").LogOnInfo.ConnectionInfo
の部分が赤く表示されます。


データベースログインの直前に
CrystalReportViewer1.ReportSource = cachedCRep
を入れて実行してみたところ
”オブジェクト参照がオブジェクトインスタンスに設定されていません。”と出て、
CrystalReportViewer1.ReportSource = cachedCRep
の部分が赤く表示されます。

それと、Item("XXXX")のXXXXの部分は当該レポートで参照するテーブル名で
いいんですよね?

レポートが複数のテーブルを参照している場合はテーブルの数だけ
(DBname,ServerName等の)一連の設定必要になると考えて宜しいんでしょうか?
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-06-10 17:51
こんにちは。
スレッド見ました。

私の説明不足でした、すみません。m(__)m
ご指摘通り「"XXXX"」はテーブル名です。

引用:


'データベースログイン
With objLogOnInfo
.ConnectionInfo = objReport.Database.Tables.Item("XXXX").LogOnInfo.ConnectionInfo
.ConnectionInfo.DatabaseName = "???"
.ConnectionInfo.ServerName = "???"
.ConnectionInfo.Password = "???"
.ConnectionInfo.UserID = "???"

objReport.Database.Tables.Item("XXX").ApplyLogOnInfo(objLogOnInfo)
End With




あと、この記述の上に...

'レポートをロード
objReport.Load(MapPath("CrystalReport.rpt"))

がいるかもしれません。
上記の命令はクリスタルレポートのパスを指定して、オブジェクトに設定しています。
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-06-10 18:05
度々お世話さまです。m()m

objReport.Load(MapPath("CrystalReport.rpt"))
を追加して実行してみましたところ、
”レポートファイルパスが無効です。”のエラーはでなくなったのですが、
CrystalReportViewerがポツンと表示されたダケのフォームが表示されました。^^;

で、内容を表示するにはやはりReportDocumentが必要なのだろうと思い、
Load文の前と後に
CrystalReportViewer1.ReportSource = cachedCRep
を配置してそれぞれ実行してみたのですが、そうするとやはり
”オブジェクト参照がオブジェクトインスタンスに設定されていません。”
と出てしまいます。

ReportDocumentにも何らかの操作が必要なのでしょうか?
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-06-10 18:29
こんにちは。
スレッド見ました。

私はPDFに出力しているので、そのままでいけると思ったんですが...甘かったみたいです。
いろいろと混乱させて、すみません。m(__)m

プログラムですが、実際に作ってみました。
「CrystalReportViewer」があるフォームの、「Page_Load」の個所です。
こんな感じです。

CrystalReportViewer1.ReportSource = cachedCrystalReport11

With CrystalReportViewer1
.LogOnInfo.Item("XXXX").ConnectionInfo.Password = "????"
End With

ReportDocumentですが、貼り付けた時にダイアログが表示されたと思いますが、そこで作成したCrystalReportを指定します。

「CrystalReportViewer」のプロパティ「DataBindings」を開きます。
「ReportSource」の部分に「Page」内に「ReportDocument」のIDが表示されると思います。
それを選択して「OK」を押下します。
これで設定は問題ないと思います。

[ メッセージ編集済み 編集者: Mr.タナカ 編集日時 2003-06-10 18:33 ]
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-06-10 18:52
とことんお世話さまです。^^;

やってみたのですが、やはり
”ログオンに失敗しました。”となります。

SQLサーバのユーザ(sa)にパスワードは設定してないので
Password = ""でOKだと思うのですが…

うーん、なんでだろ?
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-06-10 19:47
こんにちは。
スレッド見ました。

SQLServerですか?
私のはOracle9iなんです...(>_<)
ただADO.NETなので、データベースは関係ないと思います。
同じMicrosoftの製品なので、SQLServerの方が相性は良いと思うんですがね。

前の書き込みで「複数のテーブルを参照している」って書いてありましたが、とりあえず単一のテーブルのデータで簡単な帳票を作ってみては、どうでしょうか?

スキルアップ/キャリアアップ(JOB@IT)