none
CrystalReport For VS2010 について RRS feed

  • 質問

  • WinXP(SP3) ,  VB2010 Professional  , CrystalReport For VS2010 , Oracle9i R2

    で開発しています。

    やりたいこと:バウンドレポートで管理してレポートの変更に伴うソースの

    再コンパイルをせずに使用したい(現状VB6 CrystalReport8.5でこのように管理しています)

    アンバウンドレポートも考えましたが、レポートに項目の追加をしたら※1ソースのデータ取得部のSQL

    も変更しないといけなくなるのでなるべく開発&管理コストを減らしたいのでなんとかバウンドレポートで

    できないかと思い質問しています。

    ※1レポートにしようしているVIEWを変更することになるので必然的に同じVIEWを使ってデータを

    取得している部分のSQLの変更が必須になります。

     

    質問なのですが レポートで設定した接続先以外の接続先に

    VB2010から接続して CrystalReportViewer で表示したいのですが

    上手くいきません。

    VB2008用では logOnInfo を設定して適用したら出来るみたいなのですが

    VB2010用は違うのでしょうか?

    logOnInfo を設定したら logOnInfo 内の接続先は

    変わるのですがレポートをViewer に出力もしくは

    PrintToPrinter を使用すると

    'CrystalDecisions.CrystalReports.Engine.InternalException' の初回例外が CrystalDecisions.CrystalReports.Engine.dll で発生しました。

     

    接続を開けませんでした。

    ips_hp1_01pr7 {79D6D28E-D1F9-4D48-9D8A-76DA615D4267}.rpt

     

    というエラーが、下記コードで発生します。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim ReportPath As String = "AAA.rpt"

            cry1.Load(ReportPath, CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)

             Dim logOnInfo As New CrystalDecisions.Shared.TableLogOnInfo

             logOnInfo.ConnectionInfo.DatabaseName = "データベース名"

            logOnInfo.ConnectionInfo.ServerName = "サーバー名"

            logOnInfo.ConnectionInfo.UserID = "ユーザーID"

            logOnInfo.ConnectionInfo.Password = "パスワード"

            logOnInfo.TableName = "AAA.rptで設定しているテーブル名"

     

            'ログオン情報を適用

              For Each Table As CrystalDecisions.CrystalReports.Engine.Table In cry1.Database.Tables

                Table.ApplyLogOnInfo(logOnInfo)

            Next

              cry1.PrintToPrinter(1, True, 1, 1)

      End Sub

    上記URLにて質問させて頂いていますが有効な回答を得ることができず
    こちらで質問させて頂きます。
    参考にしたURL
    どうぞ宜しくお願いします。

    2011年9月9日 1:50

回答

  • パスワードが取得されないのはクリスタルレポートの仕様なのかなと思いました。
    接続に使用する ADO の設定にて Persist Security Info=True という指定を追加すればパスワードが返されるようになるかなと思い試してみましたが、関係なさそうでした(指定方法が間違っていたりするかもしれないのですが)。

    パスワードはメインレポート側から引き継がれないようですので、パスワード設定を目的とした ApplyLogOnInfo を行う必要があるようでした。

    'サブレポート側にも必要!
    table.ApplyLogOnInfo(logOnInfo) '(パスワードの反映)
    table.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location

    前回試したときはいらなかったような気がするのですが、違ったようです。
    遠回りさせてしまっているようで申し訳ないです。
    これで解決しますように・・・


    • 編集済み TH01 2011年9月16日 2:48
    • 回答としてマーク fumofumofit 2011年9月16日 6:45
    2011年9月16日 2:38

すべての返信

  • Table.ApplyLogOnInfo(logOnInfo)

    の後に、下記の1行を足してもらっていいですか?

    cry1.Database.Tables.Item(Table.Name).Location = logOnInfo.ConnectionInfo.UserID & "." & Table.Location


    • 編集済み aviator__ 2011年9月9日 2:56 + => & 文字列連結
    2011年9月9日 2:53
  • CrystalReport は使ったことないのですが、SDK のサンプルを見ると下記でできそうに思いました。
    環境がなくて試していませんので、動かなかったらごめんなさい。
    fumofumofit さんのコードとの違いは、各テーブルのオブジェクトから得た LogOnInfo に対して設定している点になります。

    Crystal Reports XI .NET SDK
    Table.ApplyLogOnInfo Method
    http://devlibrary.businessobjects.com/businessobjectsxi/en/en/crystalreports_dotnet_sdk/crystalreports_net_doc/doc/crsdk_net_doc/html/crlrftableclassapplylogoninfomethodtopic.htm

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ReportPath As String = "AAA.rpt"
        cry1.Load(ReportPath, CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)
    
        'ログオン情報を適用
        For Each Table As CrystalDecisions.CrystalReports.Engine.Table In cry1.Database.Tables
            Dim logOnInfo = Table.LogOnInfo
            logOnInfo.ConnectionInfo.DatabaseName = "データベース名"
            logOnInfo.ConnectionInfo.ServerName = "サーバー名"
            logOnInfo.ConnectionInfo.UserID = "ユーザーID"
            logOnInfo.ConnectionInfo.Password = "パスワード"
    
            Table.ApplyLogOnInfo(logOnInfo)
        Next
    
        cry1.PrintToPrinter(1, True, 1, 1)
    End Sub
    
    

    aviator__ さんので解決した場合、上記は見なかったことにしてください。(^^;
    ところで aviator__ さんのコードって、次と同等ですよね?
    (スキーマを明示するということですね。)
    Table.Location = logOnInfo.ConnectionInfo.UserID & "." & Table.Location

     


    • 編集済み TH01 2011年9月15日 12:40 オラクルではデータベース名の指定は不要
    2011年9月9日 4:19
  • aviator_ さん TH01さんアドバイスありがとうございます。

     

    aviator_ さんの

    Table.ApplyLogOnInfo(logOnInfo)

    の後に、下記の1行を足してもらっていいですか?

    cry1.Database.Tables.Item(Table.Name).Location = logOnInfo.ConnectionInfo.UserID & "." & Table.Location

    'System.Runtime.InteropServices.COMException' の初回例外が CrystalDecisions.CrystalReports.Engine.dll で発生しました。

    接続を開けませんでした。

    接続を開けませんでした。

    ips_hp1_01pr7 {C2ABBD67-E360-4288-9DBA-6275373FA901}.rpt

    というエラーが発生しました。

    System.Runtime てことはなにかインストール漏れがあるとか他と競合しているとかでしょうか?

    ちなみにvb6 Professional と vb2005,2008,2010 の Express とvs2010 Professional

    の全てをインストールしている状態です。

     

    TH01さんのコードでは

    Table.ApplyLogOnInfo(logOnInfo) の下に

    Table.Location = logOnInfo.ConnectionInfo.UserID & "." & Table.Location 無しの時は

     

    'CrystalDecisions.CrystalReports.Engine.InternalException' の初回例外が CrystalDecisions.CrystalReports.Engine.dll で発生しました。

    接続を開けませんでした。

    ips_hp1_01pr7 {DB5479B7-D572-4C3D-A83D-63959368600A}.rpt

    というエラーが発生して

    Table.Location = logOnInfo.ConnectionInfo.UserID & "." & Table.Location 有りの時は

    aviator_ さんの時と同じく

    'System.Runtime.InteropServices.COMException' の初回例外が CrystalDecisions.CrystalReports.Engine.dll で発生しました。

    接続を開けませんでした。

    接続を開けませんでした。

    ips_hp1_01pr7 {347341F7-E0D5-4FCD-A68C-612AE22AE049}.rpt

    とエラーが発生して解決には至っておりません

     

    誠に申し訳ないですがよろしかったら

    CrystalReportViewer1への表示も行いたいので CrystalReportViewer1 の logOnInfo の

    設定の仕方等ご教示頂けると幸いです。

    引き続き宜しくお願いします。

    2011年9月9日 5:57
  • テスト環境を作って試してみました。
    VS2010 のクリスタルレポートはダウンロードしたてで、バージョンは 13.0.2000.0 と表示されてます。
    オラクルクライアントは 11gR2 を入れました。

    結果ですが、上記コードにて、接続の変更は問題なく行えました。
    (また、コードは fumofumofit さんのままでも大丈夫でした。。)

    オラクルは複数のデータベースを用意できなかったので、ログインユーザーを変更したテストを行いました。でも、ConnectionInfo.ServerName をデタラメにすると適切なエラーメッセージになったので、別PCに変更するような場合も問題なさそうに思います。
    (ちなみに SQL Server では、別PCに接続を変更するテストも行い、正常でした。)

    一つはまったのですが、レポートを作成した際に記録される SQL 文(メニューの [Crystal Reports] - [データベース] - [SQL クエリーの表示] で確認可)にはスキーマも明示されるので、ログイン情報に加えてスキーマも変更になる場合(普通はなると思います)には aviator__ さんが書かれたように、スキーマも変更指定する必要がありました(KB にもその旨が記載されていました)。
    aviator__ さんの返信を見たとき、そんなの関係あるの?と実は思っていたのですが、重要でした。失礼しました。。。
    (ちなみに、Location を指定する際の注意ですが、テーブル名は大文字小文字が区別されるようです。)

    ということで、fumofumofit さんの方でエラーが発生する理由はわかりませんでした。

    なお、エラー発生時には、私の環境では次のように「データベースベンダーコード」というものが表示されていました。この場合、ORA-12545 になります。
    fumofumofit さんの環境では表示されていないのでしょうか?

    接続を開けませんでした。
    CrystalReport1 {432FB184-B639-48A2-A0FF-196B3CA8CC4B}.rpt
    詳細:  [データベースベンダーコード: 12545 ]

    また、そもそもな話ですが、変更する情報を使って sqlplus 等で接続はできるのでしょうか?
    今回エラーが発生しているのは、開発PCと同じでしょうか?

    それとレポートビューアでの接続先の指定についてですけど、特に不要で、ReportDocument 側(fumofumofit さんの場合、cry1 側)で変更した情報が反映されました。
    もしかすると設定状況によっては、RefreshReport も必要なのかもしれません。

    crystalReportViewer1.ReportSource = cry1
    'crystalReportViewer1.RefreshReport()

    2011年9月12日 13:22
  • TH01さんありがとうございます。

    >テスト環境を作って試してみました。
    >VS2010 のクリスタルレポートはダウンロードしたてで、バージョンは 13.0.2000.0 と表示されてます。
    >オラクルクライアントは 11gR2 を入れました。

    >結果ですが、上記コードにて、接続の変更は問題なく行えました。
    >(また、コードは fumofumofit さんのままでも大丈夫でした。。)

    テスト環境まで作成してくださりありがとうございます。

     

    >なお、エラー発生時には、私の環境では次のように「データベースベンダーコード」というものが表示されていました。この場合、ORA->12545 になります。
    >fumofumofit さんの環境では表示されていないのでしょうか?

    >接続を開けませんでした。
    >CrystalReport1 {432FB184-B639-48A2-A0FF-196B3CA8CC4B}.rpt
    >詳細:  [データベースベンダーコード: 12545 ]

    ですが、データベースベンダーコードは表示されませんでした。

     

    >また、そもそもな話ですが、変更する情報を使って sqlplus 等で接続はできるのでしょうか?
    >今回エラーが発生しているのは、開発PCと同じでしょうか?

    に関しては、sqlplus での接続は正常に行えます。

    今回のエラーは開発PCにて発生しております。

     

    Th01さんの検証を拝見しならが思ったのですが

    ①Crystal Report 8.5, vb6,  vb2005 Express, Crystal Report For vs2010 等複数の開発ソフトをインストールしているのも

    原因の一つでは?

    ②Crestal Report 8.5 で作成したレポートをパージョンアップして使用してるから?(まあこれはあまり考えにくいですが・・)

    の2点です。

    時間がかかるかとは思いますが上記に関して検証をしていきますので結果が出次第

     報告したいと思います。

     アドバイス頂いたコードで正常に動作出来ることが分かっただけでもありがたいです。

    ありがとうございました。

    2011年9月13日 0:19
  • 2についてですが、
    CrystalReports 8.5 は使ったことがあるので、試してみました(おせっかいと思ったけど)。

    8.5 で作成したレポートを 2010 側では何もせずにそのまま今回の検証環境で使ってみましたが、問題なく接続先の変更は反映されました(これまで通り UesrID の変更だけですけど)。
    (8.5 と 2010 は混在させていません。)
    テスト用に作成した1つのテーブルを表示する単純なもので、接続には OLE DB プロバイダーで Microsoft OLE DB Provider for Oracle を使用しました。

    あと一応補足ですが、オラクルの場合、DatabaseName は指定不要です。
    間違った指定をすると、こちらでは「接続失敗: ログオンパラメータが正しくありません。」になりました。
    (追記:@IT の方のコードを拝見すると、DatabaseName を指定されていますね。空にしても同じでしょうか?前に fumofumofit さんのコードでも大丈夫と書いた時には、オラクルにはデータベース名というのはないから空を指定されてると思ってました。)

    1については、環境作るのが大変なので、fumofumofit さんの結果をお待ちしてます。

    • 編集済み TH01 2011年9月13日 1:18
    2011年9月13日 1:06
  • TH01さん さまざまな検証結果ありがとうございます。

    TH01さんの検証結果を踏まえて検証していきたいと思います。

    また何か進展がありましたら報告させて頂きます。

    2011年9月13日 5:50
  • 大したことではありませんが1つだけ検証したので結果報告です。

    >あと一応補足ですが、オラクルの場合、DatabaseName は指定不要です。

    >間違った指定をすると、こちらでは「接続失敗: ログオンパラメータが正しくありません。」になりました。

    >(追記:@IT の方のコードを拝見すると、DatabaseName を指定されていますね。空にしても同じでしょうか?

    >前に fumofumofit さんのコードでも大丈夫と書いた時には、オラクルにはデータベース名というのはないから空を指定されてると思ってました。)

    は DataBaseName を空にしても結果は前と同じエラーが発生しました。

    状況は全く改善されませんでした。

    これから少しずつですが環境の方を検証していきます。

    2011年9月13日 9:13
  • @IT の掲示板の方にサブレポートを使われていると書かれているので、私も試してみたところ、サブレポート側へも設定が必要そうでした。
    でも依然として私は1つのオラクルデータベース環境でのテストになりますので、今回も検証が不十分な気がしていますが、fumofumofit さんも以下のようなコードをお試しいただけますでしょうか?

    '(メインレポートへの接続情報変更の設定後)
    For Each subReport As CrystalDecisions.CrystalReports.Engine.ReportDocument In cry1.Subreports
        For Each table As CrystalDecisions.CrystalReports.Engine.Table In subReport.Database.Tables
            Dim logOnInfo = table.LogOnInfo
    
            'メインレポートでの変更が反映されるため、サブレポートには不要みたい。
            'logOnInfo.ConnectionInfo.ServerName = "..."
            'logOnInfo.ConnectionInfo.UserID = "..."
            'logOnInfo.ConnectionInfo.Password = "..."
            'table.ApplyLogOnInfo(logOnInfo)
    
            'サブレポート側にも必要!
            table.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location
        Next
    Next
    
    

    2011年9月13日 11:11
  • TH01さん サブレポートの件ありがとうございます。

    検証してみます。

    検証結果報告

    環境:Win7  , vb2010 , oracle11g R2  , CrystalReport for Visual Sutudio 2010 (13.0.2000.0)

    で検証したところ WinXP(SP3) ,vb2010 , oralce9i R2 , CrystalReport for Visual Sutudio 2010 (13.0.2000.0)

    の環境と同じエラーが発生しました。

    ということは使用しているレポートがどこかおかしいかもしれないと思い

    新しくレポートをvb2010で作成しようとしたら .rpt ファイルでなく .mht のファイルが出来ました。

    この問題って正式版で解決していないのでしょうか?

    もし解決していないのであれば Crystal Report 2011 の購入を検討しないといけないかも・・・

    CR8.5で作成したのはそのまま使えるとして、新しいレポートを作成するのが困難な状態になるかと思いますが

    間違っていたらご指摘お願いします。

    2011年9月14日 2:19
  • 上記の件はどうもVS2010を評価版から正規版にしたのが原因みたいです。

    評価版の時はフォームに貼り付けたCrystalReportViewerを選択して

    移動したらサイズ変更したりできていたのですが正規版にしてから

    選択すらできなくなり、ツールバーにもでなくなりました。

    いちどVS2010を入れなおしてみます。

    2011年9月14日 3:10
  • もしかして、"Crystal Reports" のすぐ下にある "HTML ページ" を間違って選択されていないでしょうか?(拡張子は .mht ではなく .htm ですけど)

    訂正の追記:
    違いました。検索すると同様の話が見つかりますね。
    クリスタルレポートは別途ダウンロードする必要があります。
    http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp

    それと、ツールバー(ツールボックス?)に表示されないのは、対象のフレームワークが ".NET Framework 4 Client Profile" になっているからではないでしょうか?


    • 編集済み TH01 2011年9月14日 7:51 追加した1行目を削除...
    2011年9月14日 7:15
  • TH01さんありがとうございます。

    全くその通りでした

    評価版から正規版にする際にVS2010自体を再インストールする必要が

    あるのかと思いCrystalReport自体を削除してからまたインストールしたのですが

    どうもそれがCrystalRport本体ではなくランタイムでした^^;

    本体をインストールしたらWinXPでもWin7でもレポートが作成出来るようになりました。

    お騒がせしました。

    で、本題の検証結果です。

    結論から言うとどうもCR8.5で作成したレポートに問題があるようです。

    検証環境:WinXP(SP3), Oracle9i R2, vb2010 (vs2010 Professional)

                他のインストール状況: vb6,vb2005 Express,vs2008 Express,vs2010 Express

    試しにエラーが発生するレポートが使用しているViewと同じViewを設定した

    レポートを新規作成して、レイアウトは適当で検証してみました。

    そうしたら何の問題もなく接続先が変更できました。

    しかもCrystalReportViewerへの出力も問題なくできました。

    (CrystalReportViewerのLogOnInfoの設定も無しでいけました)

    ということはエラーが発生しているレポートに問題があるのではないか?

    という結論に達しました。

    そして下記がエラーが発生した時のLogOnInfo.CinnectionInfoです。

    AllowCustomConnection           False

    Attributes                                  {CrystalDecisions.Shared.DbConnectionAttributes}

    DatabaseName LogOnInfoに設定したデータベース名

    DBConnHandler                       0

    EncodePassword                     {Length=13}

    IntegratedSecurity                  False

    IsLogonPropertiesModified      True

    LogonProperties                      Count=0

    Password                                 LogOnInfoに設定したパスワード

    ServerName                             LogOnInfoに設定したサーバー

    Type                                         Unknown{0}

    UserID                                      LogOnInfoに設定したユーザー

    Utype                                        0

    とLogOnInfoを見る限りでは大丈夫なようで、なぜ接続できないのか

    分かりません。

    もっと違うパラメータを見ないと分からないのでしょうか?

    何かあればアドバイスお願いします。

    Win7 , vb2010 環境での検証はこれから行います。

    そして、クリスタルレポートの最終目的はCR8.5からVS2010用への移行(Win7に対応)です。

    ので、最悪上記の原因が不明のままでも CR8.5のレポートのレイアウトをコピペで vb2010で

    作成した新しいレポートに移して表示ができたら良しとしようと思っています。

    以上現状報告とこのスレの最終目的の報告です。

     

    2011年9月15日 1:09
  • > レポートを新規作成して、レイアウトは適当で検証してみました。
    > そうしたら何の問題もなく接続先が変更できました。

    新規作成されたのは、2010 版を使ってでしょうか? CR8.5 版でしょうか?
    (2010 版だと思いますけど、念のため)
    私の環境では、先の返信に書きました通り、CR8.5 で作成したレポートを手を加えずに VS2010 環境で接続先を変更するテストは成功しています。

    fumofumofit さんのその問題のレポートは、接続に使用されてるプロバイダーはどうなってますでしょうか?
    私は前述のとおり OLE DB プロバイダーで Microsoft OLE DB Provider for Oracle を使用してテストしました。
    そのあたりの設定を念のため、VS2010 環境で再設定されてみてはいかがでしょうか?
    CR8.5 にはオラクルへのネイティブ接続用のプロバイダなど、いくつか選択肢がありますが、そのあたりに VS2010 側に互換性のないものがあるのかなと想像しました。
    (なのでベンダーエラーコードが表示されないのかな、とか)

    ちなみに、私のこれまでの返信に矛盾したことを書いてるので補足させてもらいます。
    最初の返信の際、クリスタルレポートは使ったことないと書いてますが、CR8.5 は少しだけありました。でも .NET 環境では全く使用経験がなかったので的外れな返信になっていても大目に見てもらえるかなと思ったので使ってないことにしました。
    どうでもいいことですけど・・・


    • 編集済み TH01 2011年9月15日 5:18
    2011年9月15日 5:16
  • サブレポート以外は検証が終了しました。

    CR8.5で作成していたレポートが接続できなかったのは

    どうもODBC (RDO) で接続していたからのようです

    ODBC接続をOralceサーバに変更したら接続先の変更が出来て

    レポートが表示できました

    いろいろアドバイスありがとうございました。

    サブレポートの件ですが下記コードでエラーが発生しました^^;

       Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

            Dim PrintDocument1 As ReportDocument = New ReportDocument

            Dim ReportPath As String = "サブレポートを含んだレポート"

            cry1.Load(ReportPath, CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)

     

            Me.CrystalReportViewer1.ReportSource = cry1

     

            Dim logOnInfo As New CrystalDecisions.Shared.TableLogOnInfo

     

            logOnInfo.ConnectionInfo.DatabaseName = "データベース名"

            logOnInfo.ConnectionInfo.ServerName = "サーバ名"

            logOnInfo.ConnectionInfo.UserID = "ユーザ名"

            logOnInfo.ConnectionInfo.Password = "パスワード"

     

            'ログオン情報を適用

            For Each Table As CrystalDecisions.CrystalReports.Engine.Table In cry1.Database.Tables

                Table.ApplyLogOnInfo(logOnInfo)

                Table.Location = logOnInfo.ConnectionInfo.UserID & "." & Table.Location

            Next

     

            For Each subReport As CrystalDecisions.CrystalReports.Engine.ReportDocument In cry1.Subreports

                For Each table As CrystalDecisions.CrystalReports.Engine.Table In subReport.Database.Tables

     

                    'サブレポート側にも必要!

                    table.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location

                Next

            Next

            '作成したレポートドキュメントをセット()

            Form2.CrystalReportViewer1.ReportSource = cry1

            '倍率をページ全体に設定

            Form2.CrystalReportViewer1.Zoom(2)

            '印刷プレビュー画面表示

            Form2.Show()

    上記のtable.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location の箇所で

    ログオンに失敗しました。

    Database Connector エラー: ''

    Database Connector エラー: ''

    ログオンに失敗しました。

    ファイル ips_H30_01pr5 {9AECEDB7-F4AD-46B6-9424-8708B58E093F}.rpt のエラー:

    接続失敗: ログオンパラメータが正しくありません。

    というエラーがでます。

    logOnInfo.ConnectionInfoを見ても全てメインレポートと同じで

    sqlplusでも問題なく接続できます。

    お手数ではございますが宜しくお願いします。

     

    2011年9月15日 12:04
  • > 接続失敗: ログオンパラメータが正しくありません。

    DatabaseName を指定されているからではないでしょうか?

    2011年9月15日 12:38
  • すみません。

    説明不足でした

    サブレポートの設定の

            For Each subReport As CrystalDecisions.CrystalReports.Engine.ReportDocument In cry1.Subreports

                For Each table As CrystalDecisions.CrystalReports.Engine.Table In subReport.Database.Tables

     

                    'サブレポート側にも必要!

                    table.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location

                Next

            Next

    のtable.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location

    でエラーが発生します。

    >DatabaseName を指定されているからではないでしょうか?

    サブレポートの接続先変更設定処理のlogOnInfoにDatabaseNameを指定しているのが

    間違っているということでしょうか?

    2011年9月16日 0:57
  • >DatabaseName を指定されているからではないでしょうか?

    勘違いしてました^^;

    メインレポートの接続先設定からDatabaseName は要らないのですね^^;

    DatabaseNameの指定をコメントにして実行してみると

    ログオンに失敗しました。

    詳細:  [データベースベンダーコード: 1005 ]

    ログオンに失敗しました。

    詳細:  [データベースベンダーコード: 1005 ]

    ファイル ips_H30_01pr5 {8CC1BF7E-89F3-4510-892D-06302463E35B}.rpt のエラー:

    接続失敗: ログオンパラメータが正しくありません。

    というエラーが出てORA-01005を調べたところ

    「パスワードにNULLが入力されました。ログオンは拒否されました。」

    となっていたので

    table.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location

    のtable.logOnInfo.ConnectionInfoの情報を見たらPasswordが入っていませんでした。

    変数で宣言しているlogOnInfoの中にはPasswordが入っています。

    メインレポートもサブレポートもOracle サーバで接続サーバ、ユーザ、パスワードは

    同じにしてあります。

    2011年9月16日 1:53
  • パスワードが取得されないのはクリスタルレポートの仕様なのかなと思いました。
    接続に使用する ADO の設定にて Persist Security Info=True という指定を追加すればパスワードが返されるようになるかなと思い試してみましたが、関係なさそうでした(指定方法が間違っていたりするかもしれないのですが)。

    パスワードはメインレポート側から引き継がれないようですので、パスワード設定を目的とした ApplyLogOnInfo を行う必要があるようでした。

    'サブレポート側にも必要!
    table.ApplyLogOnInfo(logOnInfo) '(パスワードの反映)
    table.Location = logOnInfo.ConnectionInfo.UserID & "." & table.Location

    前回試したときはいらなかったような気がするのですが、違ったようです。
    遠回りさせてしまっているようで申し訳ないです。
    これで解決しますように・・・


    • 編集済み TH01 2011年9月16日 2:48
    • 回答としてマーク fumofumofit 2011年9月16日 6:45
    2011年9月16日 2:38
  • TH01さんありがとうございます。

    無事表示することができました^^

    表示はできたのですが、サブレポートに設定している

    条件付書式が有効になっていないのです。

    (ある列の値が一定の範囲内の時は背景を灰色に設定)

    クリスタルレポートのオブジェクトの書式設定→境界線タブ→色枠の背景に設定しています

    接続先は関係ないようです。

    レポートに設定した接続先でも違う接続先でも背景の色は変わっていませんでした。

    これもどこかレポートの設定なのでしょうか?

    調べてみます。

    それと誠に申し訳ないですが、メインレポートのみのレポートで

    レポートで作成した式の値でソートしたいのでご教示おねがいします。

    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19409&forum=7

    を参考にしたのですが上手くいきません。

    「CrystalReport ソート」でググってもこれ!といったところが出てきません

    どうぞ合わせて宜しくお願いします。

    2011年9月16日 5:04
  • サブレポートの条件付書式設定の件ですが

    メインレポートをデザインする画面からプレビューを表示してもサブレポートの条件付書式が

    有効になっていませんでした。

    どうしたら有効に出来るか引き続き調査していきます。

    2011年9月16日 6:23
  • サブレポートの条件付書式設定の件は自己解決しました。

    サブレポートでの条件値とデータの値がなぜかCR8.5の時から微妙に

    変化していたために色を塗る条件からはずれて色が塗られていなかったようです。

    ちなみに条件のなかに「~」という文字が入っていてこれがCR8.5の時と微妙に

    違っていました。

    これで後はソートのみになりました。

    引き続き調査していきます。

    2011年9月16日 6:34
  • 接続の件、解決してよかったです。

    新たなご質問でしたらこのスレッドは閉じ、
    別スレッドとして新規投稿(今回の2つのご質問を別々に投稿)された方がいいと思います。

    その方が別の人が見てくれる可能性が高くなって回答がつきやすくなりますし、
    片方だけわかる人も回答しやすくなりますし、
    後で検索する人がタイトルを見て内容を把握しやすくなりますので。

    時間ができたら私も確認してみようと思ってます。
    (追記:両方とも自己解決されそうですね(^^; なによりですけど)

    • 編集済み TH01 2011年9月16日 6:36
    2011年9月16日 6:34
  • 了解しました^^

    解決までいろいろなアドバイスありがとうございました^^

    ソートの件はもう少し自分で調べてから質問したいと思います。

    本当にありがとうございました。

    2011年9月16日 6:45