私は、従来、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# のサンプルで問題ありません。