FlexReportDesigner アプリケーションの最も強力な機能の 1 つは、Microsoft Access(.mdb)や Crystal Reports(.rpt)で作成したレポートをインポートできることです。
レポートをインポートするには、[ファイル]メニューをクリックし、メニューから[インポート]を選択します。インポートするファイルの名前の入力を求めるダイアログボックスが表示されます。
Microsoft Access ファイルをインポートするには、Microsoft Access ファイル(MDB または ADP)を選択します。デザイナがファイルをスキャンし、インポートするレポートを選択するためのダイアログボックスが表示されます。
このダイアログボックスで、インポート処理を開始する前に、現在定義されているすべてのレポートを消去するかどうかも指定できます。
インポート処理は、ソースレポートのほとんどの要素を処理できます。ただし、次に挙げる要素は例外です。
Access レポートは、VBA、マクロ、およびフォームを使用してレポートを動的に書式設定できます。C1FlexReport でも動的な書式設定が可能ですが、C1FlexReport では VBScript だけが使用されるため、レポートのコードはすべて手作業で変換する必要があります。
フォーム指向のフィールドタイプ
Access レポートには、デザイナのインポートプロシージャによって処理されないフィールドが含まれていることがあります。サポートされていないフィールドタイプは、Chart、CommandButton、ToggleButton、OptionButton、OptionGroup、ComboBox、ListBox、TabCtl、および CustomControl です。
VBScript の予約語を使用するレポート
Access は VBScript を使用しないため、レポートオブジェクトやデータセットフィールド名の識別子として VBScript の予約語を使用するようなレポートが設計されている可能性があります。その場合は、VBScript エンジンが式を評価するときに問題が発生し、レポートが正しくレンダリングされない原因になります。
識別子として使用できない予約語には、Date、Day、Hour、Length、Minute、Month、Second、Time、TimeValue、Value、Weekday、Year などがあります。完全なリストについては、VBScript のリファレンスを参照してください。
These limitations affect a relatively small number of reports, but you should preview all reports after importing them, to make sure they still work correctly.
上のような制限を受けるレポートは比較的少ないですが、レポートをインポートしたら、すべてのレポートをプレビューし、正しく動作するかどうかを確認してください。
デザイナが実際に行う処理の例として、C1NWind.mdb ファイルをインポートしてみます。これには、次の 13 のレポートが含まれます。(C1FlexReport に付属する NWind.xml ファイルには、以下で説明する変更がすべて行われています。)
処理は不要です。
処理は不要です。
処理は不要です。
このレポートには、手作業で変換する必要があるコードが含まれます。Group 1 のヘッダーの OnPrint プロパティには、次のコードを割り当てます。
Visual Basic でコードを書く場合
Visual Basic |
コードのコピー
|
---|---|
If SalespersonTotal > 5000 Then ExceededGoalLabel.Visible = True SalespersonLine.Visible = True Else ExceededGoalLabel.Visible = False SalespersonLine.Visible = False End If |
C# でコードを書く場合
C# |
コードのコピー
|
---|---|
if (SalespersonTotal > 5000) { ExceededGoalLabel.Visible = true; SalespersonLine.Visible = true; } else { ExceededGoalLabel.Visible = false; SalespersonLine.Visible = false; } |
Invoice(請求書)
処理は不要です。
Products by Category(カテゴリ別製品)
処理は不要です。
Sales by Category(カテゴリ別売上高)
このレポートには、インポートされないグラフコントロールが含まれます。レポートにグラフを追加するには、グラフフィールドを使用します。
Sales by Category Subreport(カテゴリ別売上高サブレポート)
処理は不要です。
Sales by Year(年度別売上高)
このレポートには、手作業で変換する必要があるコードおよび Form オブジェクトへの参照が含まれます。[Data]パネルの Form オブジェクトを置き換えるには、ShowDetails パラメータを追加します。その DataType プロパティを Boolean に、Value プロパティを False に設定します。
レポートの OnOpen イベントで新しいパラメータを使用します。
Visual Basic でコードを書く場合
Visual Basic |
コードのコピー
|
---|---|
Dim script As String = _ "bDetails = [Show Details]" & vbCrLf & _ "Detail.Visible = bDetails" & vbCrLf & _ "[Group 0 Footer].Visible = bDetails" & vbCrLf & _ "DetailsLabel.Visible = bDetails" & vbCrLf & _ "LineNumberLabel2.Visible = bDetails" & vbCrLf & _ "Line15.Visible = bDetails" & vbCrLf & _ "SalesLabel2.Visible = bDetails" & vbCrLf & _ "OrdersShippedLabel2.Visible = bDetails" & vbCrLf & _ "ShippedDateLabel2.Visible = bDetails" & vbCrLf & _ "Line10.Visible = bDetails" C1FlexReport1.Sections.Detail.OnPrint = script |
C# でコードを書く場合
C# |
コードのコピー
|
---|---|
string script = "bDetails = [Show Details]" + "Detail.Visible = bDetails\r\n" + "[Group 0 Footer].Visible = bDetails\r\n" + "DetailsLabel.Visible = bDetails\r\n" + "LineNumberLabel2.Visible = bDetails\r\n" + "Line15.Visible = bDetails\r\n" + "SalesLabel2.Visible = bDetails\r\n" + "OrdersShippedLabel2.Visible = bDetails\r\n" + "ShippedDateLabel2.Visible = bDetails\r\n" + "Line10.Visible = bDetails"; c1FlexReport1.Sections.Detail.OnPrint = script; |
最後に、2 行のコードを書き換える必要があります。
Visual Basic でコードを書く場合
Visual Basic |
コードのコピー
|
---|---|
Sections ("Detail").OnPrint = _ "PageHeader.Visible = True" Sections("Group 0 Footer).OnPrint = _ "PageHeader.Visible = False" |
C# でコードを書く場合
C# |
コードのコピー
|
---|---|
Sections ("Detail").OnPrint = "PageHeader.Visible = true"; Sections("Group 0 Footer).OnPrint = "PageHeader.Visible = false"; |
Sales by Year Subreport(年度別売上高サブレポート)
処理は不要です。
Sales Totals by Amount(金額別総売上高)
このレポートには、手作業で変換する必要があるコードが含まれます。ページヘッダーの OnPrint プロパティには、次のコードを割り当てます。
Visual Basic でコードを書く場合
Visual Basic |
コードのコピー
|
---|---|
PageTotal = 0 |
C# でコードを書く場合
C# |
コードのコピー
|
---|---|
PageTotal = 0; |
詳細の OnPrint プロパティには、次のコードを割り当てます。
Visual Basic でコードを書く場合
Visual Basic |
コードのコピー
|
---|---|
PageTotal = PageTotal + SaleAmount HiddenPageBreak.Visible = (Counter = 10) |
C# でコードを書く場合
C# |
コードのコピー
|
---|---|
PageTotal = PageTotal + SaleAmount; HiddenPageBreak.Visible = (Counter = 10); |
Summary of Sales by Quarter(四半期別売上高のサマリー)
処理は不要です。
Summary of Sales by Year(年度別売上高のサマリー)
処理は不要です。
以上をまとめると、NorthWind データベースからインポートされる 13 のレポートのうち、編集の必要がないレポートが 9 つ、コードを変換する必要があるレポートが 3 つ、グラフフィールドを追加する必要があるレポートが 1 つです。
Crystal Reports 定義ファイル(.rpt)からレポートをインポートするには内部または外部データソースに連結されたレポートは、元のデータソースパスに変更を行う必要なく、インポートして実行できます。
FlexReportDesigner アプリケーションは、Crystal Reports をインポートする際に、次の変換をサポートします。
セクション/サブセクション
フィールド
特殊なフィールド
機能
書式設定
次の画像は、FlexReportDesigner にインポートされた Crystal Report を示します。
次の画像は、CRReportDesigner にインポートされた Crystal Report を示します。
Crystal オブジェクトモデルで公開されていない要素や C1FlexReport でサポートされていない要素などの少数の例外を除くと、ソースレポートの大部分の要素がこのインポートプロセスによって処理されます。C1FlexReportDesigner アプリケーションでまだサポートされていない変換は、次のとおりです。ただし、次回の 2016 リリースには組み込まれる予定です。