1

私は、従来、LAN SQL Server データベースに対して Crystal レポートを実行していた既存の .Net winforms アプリケーションに取り組んでいます。Azure クラウド データベースで動作させようとしています。

既存のアプリは、ログイン時にユーザーが指定したサーバー名を使用して接続し、レポート内の各テーブルの場所などを設定するため、レポートが設計されたデータベースに対してのみ機能するのではなく、任意のデータベース サーバーに対してレポートを実行できます。うまくいけば、これは Windows アプリで Crystal Reports を使用したことのある人にとってはなじみのある概念です。これは、レポートの各テーブルとサブレポートをループして、レポートのサブレポートをループする次のようなコードを持つ 2 番目の会社です。すべて指定されたサーバーを指しています:

For Each crTable In crTables
        CrtableLogoninfo = crTable.LogOnInfo
        CrtableLogoninfo.ConnectionInfo = App._CrConnectionInfo
        crTable.ApplyLogOnInfo(CrtableLogoninfo)
        crTable.Location = App.DBName & ".dbo." & crTable.Location.Substring(crTable.Location.LastIndexOf(".") + 1)
    Next
    crSections = CrReportDocument.ReportDefinition.Sections
    For Each crSection In crSections
        crReportObjects = crSection.ReportObjects
        For Each crReportObject In crReportObjects
            If crReportObject.Kind = ReportObjectKind.SubreportObject Then
                crSubreportObject = CType(crReportObject, SubreportObject)
                subRepDoc = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName)
                crTables = subRepDoc.Database.Tables
                For Each crTable In crTables
                    CrtableLogoninfo = crTable.LogOnInfo
                    CrtableLogoninfo.ConnectionInfo = App._CrConnectionInfo
                    crTable.ApplyLogOnInfo(CrtableLogoninfo)
                    crTable.Location = App.DBName & ".dbo." & crTable.Location.Substring(crTable.Location.LastIndexOf(".") + 1)
                Next
            End If
        Next
    Next

これは、さまざまな LAN データベースに対して何年も機能していますが、Azure では機能しないようです。Crystal は実行時に、コードによって設定されたパラメータをユーザーに要求する必要があると判断します。これは、接続に問題が発生したことを示しているようです。パラメータ値を入力すると、特定のフィールドに不平を言うエラーは存在しません。

上記のコードの直前に _CrConnectionInfo.LogonProperties.Set("Connection String", "SomeConnectionString") へのさまざまな呼び出しを試してみましたが、せいぜい「操作はまだ実装されていません」というところまで進みます。

Crystal Reports から直接クラウドに接続しようとしたところ、SQL Server Client 11 接続タイプを使用して動作しました。アプリケーションで、への呼び出しまたは同様のバリエーションを介して SQL クライアント接続を作成すると、_CrConnectionInfo.LogonProperties.Set("Connection String", ""Provider=SQLNCLI;Server=tcp:theAzureDBInstanceName;Password=thePassword;Persist Security Info=True;User ID=thelogin;Initial Catalog=theDBName;Encrypt=yes;")")まだ機能しません。

Crystal を .Net アプリから直接 Azure データベースに接続する方法を知っている人はいますか? コードの提案がある場合は、VB.Net または C# のサンプルで問題ありません。

4

2 に答える 2

0

これは、USEステートメントがサポートされていないことが原因である可能性があります。コードを変更して、次のことを確認してください。

  1. 接続文字列はデータベースを直接参照します。...;Initial Catalog=myDataBase;...
  2. コードで、次のように置き換えます(データベースへの直接参照を削除してみてくださいApp.DBName & ".dbo." & ...".dbo." & ...
于 2012-10-09T21:47:19.510 に答える
0

Crystal Reports (最新の CR 2013 SP4 であっても) は、まだ Azure SQL をサポートしていません。

出典: http://scn.sap.com/thread/3430662

ローカルの MSSQL データベースでレポートを設計すると、上でリンクしたスレッドで述べたように、実行時に Azure SQL データベースでレポートを正常に実行できます (テーブルの場所を適切に設定している場合)。ストアド プロシージャには注意点があります。レポート オプションの [最初の更新時にストアド プロシージャを検証する] をオフにする必要があります。

Azure SQL のサポートが必要な場合は、「アイデア プレイス」のアイデアに投票してください: https://ideas.sap.com/ct/ct_a_view_idea.bix?idea_id= {91C7DF6B-4BDA-4DB4-90DB-9695ADCCF09B }

これが SAP によって対処されていない理由について、私はまだ唖然としています。

注: Crystal Reports で「操作がまだ実装されていません」という別の一般的な原因は、クライアントでは使用できないが、レポートで使用されているフォントを使用したレポートであることがわかりました。「無効なフォント」メッセージがあればよかったのに :)

于 2014-11-06T11:14:16.107 に答える