FlexReport for WinForms
レポートのインポート

FlexReportDesigner アプリケーションの最も強力な機能の 1 つは、Microsoft Access(.mdb)や Crystal Reports(.rpt)で作成したレポートをインポートできることです。

 

Import option in designer

レポートをインポートするには、[ファイル]メニューをクリックし、メニューから[インポート]を選択します。インポートするファイルの名前の入力を求めるダイアログボックスが表示されます。

Microsoft Access レポートのインポート

Microsoft Access ファイルをインポートするには、Microsoft Access ファイル(MDB または ADP)を選択します。デザイナがファイルをスキャンし、インポートするレポートを選択するためのダイアログボックスが表示されます。

このダイアログボックスで、インポート処理を開始する前に、現在定義されているすべてのレポートを消去するかどうかも指定できます。

Note that importing Microsoft Access report requires Access to be installed on the computer. Once the report is imported into the Designer, Access is no longer required.

インポート処理は、ソースレポートのほとんどの要素を処理できます。ただし、次に挙げる要素は例外です。

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 ファイルのインポート

デザイナが実際に行う処理の例として、C1NWind.mdb ファイルをインポートしてみます。これには、次の 13 のレポートが含まれます。(C1FlexReport に付属する NWind.xml ファイルには、以下で説明する変更がすべて行われています。)

  1. Alphabetical List of Products(製品のアルファベット順リスト)

    処理は不要です。

  2. Catalog(カタログ)

    処理は不要です。

  3. Customer Labels(顧客ラベル)

    処理は不要です。

  4. Employee Sales by Country(国別従業員売上高)

    このレポートには、手作業で変換する必要があるコードが含まれます。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;               
    
    }
    
    

  5. Invoice(請求書)

    処理は不要です。

  6. Products by Category(カテゴリ別製品)

    処理は不要です。

  7. Sales by Category(カテゴリ別売上高)

    このレポートには、インポートされないグラフコントロールが含まれます。レポートにグラフを追加するには、グラフフィールドを使用します。

  8. Sales by Category Subreport(カテゴリ別売上高サブレポート)

    処理は不要です。

  9. 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";
    
    

  10. Sales by Year Subreport(年度別売上高サブレポート)

    処理は不要です。

  11. 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);
    
    

  12. Summary of Sales by Quarter(四半期別売上高のサマリー)

    処理は不要です。

  13. Summary of Sales by Year(年度別売上高のサマリー)

    処理は不要です。

以上をまとめると、NorthWind データベースからインポートされる 13 のレポートのうち、編集の必要がないレポートが 9 つ、コードを変換する必要があるレポートが 3 つ、グラフフィールドを追加する必要があるレポートが 1 つです。

Crystal Reports 定義ファイル(.rpt)からレポートをインポートするには
  1. [ファイル]メニューをクリックして、[インポート]を選択します。[レポート定義のインポート]ダイアログボックスが表示され、インポートするファイル名の入力を求められます。
  2. Crystal Reports 定義ファイル(.rpt)を選択します。FlexReportDesigner アプリケーションが、レポートを FlexReport 形式に変換します。
  3. レポートを保存します。これで、Crystal Report が FlexReport に変換されました。

内部または外部データソースに連結されたレポートは、元のデータソースパスに変更を行う必要なく、インポートして実行できます。

FlexReportDesigner アプリケーションは、Crystal Reports をインポートする際に、次の変換をサポートします。

セクション/サブセクション

フィールド

特殊なフィールド

機能

書式設定

次の画像は、FlexReportDesigner にインポートされた Crystal Report を示します。

Crystal Report Import in FlexReportDesigner

次の画像は、CRReportDesigner にインポートされた Crystal Report を示します。

Crystal Report Import in CRDesigner

メモ: レポートをインポートする前に、Crystal Reports のバージョンが 13.0.14.xxxx 以上であることを確認してください。このバージョンの Crystal Reports は、システムにインストールされている Visual Studio と互換性があります。また、システムに Crystal Reports 2013 バージョンがインストールされている場合に、Crystal Reports を C1FlexReport に変換し、そのレポートを実行するには、xtreme.mdb へのデータベースパスを手動で変更する必要があります。

Crystal オブジェクトモデルで公開されていない要素や C1FlexReport でサポートされていない要素などの少数の例外を除くと、ソースレポートの大部分の要素がこのインポートプロセスによって処理されます。C1FlexReportDesigner アプリケーションでまだサポートされていない変換は、次のとおりです。ただし、次回の 2016 リリースには組み込まれる予定です。