C#のCrystal Reportsのチュートリアル

C#のCrystal Reportsのチュートリアル

http://apps.hi.baidu.com/share/detail/24298108

Crystal Reportsは強力なレポートツールです、それは今(以下、VS2005と呼ばれる)のMicrosoft Visual Studio 2005の統合されています。Crystal Reportsの友人のように、あなたは簡単に使用することができます。私はあなたの参考のために、Crystal Reportsが使用VS2005をまとめて置きます。
;マイクロソフトのSQLのMicrosoftのVisual Studio 2005:私が最初に使用したソフトウェア環境に導入 Server 2005の
[例]データ
SQLEXPRESSの:サーバー
データベース名:テスト
データベーステーブル:Tを

[説明]
クリスタルアプリケーション部門に二つの方法、すなわちプルモード(PULL)、プッシュモード(PUSH)を報告します。モードを引い:生成されたCrystal Reportsのソース・データがデータベースからCrystal ReportsのドキュメントSQL文から抽出されたときに、SQL文を書き換えずにプログラミングする場合、しかし、(後述する具体的な方法を、)ログイン情報を追加します。プッシュモード:データソースは、Crystal Reportsは、プログラミング上の画像データセットによって生成されたSQL文を書き換え、Crystal Reportsの生成。言い換えれば、プッシュモードは、Crystal Reports組み立てデータセットです。
クリスタルは、コンポーネントの導入を報告します。VS2005でのCrystal Reportsが、二つの成分があり、プロジェクトはWEBであるがCrystalReportSource、のCrystalReportViewerです。プロジェクトはcrystalReport、のCrystalReportViewerどこFORMです。
CrystalReportSource、crystalReport Crystal Reportsは、データプロバイダである;のCrystalReportViewerブラウザのCrystal Reports。また、水のレポートファイルを教えすることはRPTファイル拡張子で、ファイルをVS2005で生成することができます。
以下に、操作の特定の方法を説明:
プルモード(PULL):
利用条件パラメータようにプルモードでのCrystal Reports {としてSQL文に結合されましたか?実施形態を所与}パラメータ名。例: "選択T1、T2、T3 、T1 = 'T'から{PARM}? '" PARMのパラメータ名であります

次の例では、Crystalレポートファイルを使用するSQL文で使用されている「を選択し、T1、T2、T3 FROM T T1 = 『』 {?PARM} 『』」PARMは、 パラメータ名です。
[次] WEBの方法
CrystalDecisions.Sharedを使用して、
使用CrystalDecisions.CrystalReports.Engine;
    /// <まとめ>
    ///関数:プルモード抽出Crystal Reportsの
   ///プロファイル:HTTP://www.dzend.com/
    / // </要約>
    /// <PARAM NAME = "SENDER"> </ PARAM>
    /// <PARAM NAME = "E"> </ PARAM>
    保護されたボイドButton_pull_Click(SENDERオブジェクト、のEventArgs E)
{
// CrystalReportクリスタルレポートの.rptは、ファイルの名前です。CrystalReportSource1は、ページ上の水晶レポートの画像にデータソースからツールボックスに追加されます。

        CrystalReportSource1.ReportDocument.Load(Server.MapPathの(「CrystalReport.rpt」));
// SetDatabaseLogonプルモードは、ログイン情報を設定するには、このメソッドを使用する必要があり、パラメータ:ユーザー名;パラメータII:パスワード;三つのパラメータ:サーバー;四つのパラメータ:データベース名
        CrystalReportSource1.ReportDocument.SetDatabaseLogon( "SYWZSWL \ SQLEXPRESS" @ "SA"、 "123456"、 "テスト");
//クリスタルレポート、パラメータにパラメータを渡す:パラメータ名、パラメータII:パラメータ値;
        CrystalReportSource1.ReportDocument.SetParameterValue( "タイトル"、 "これは、テストレポートである");
        CrystalReportSource1.ReportDocument.SetParameterValue( "PARM"、 "1");
//バインドクリスタルレポートのデータソース。
        CrystalReportSource1.DataBind();
// CrystalReportViewer1は、Crystalレポートビューア、である上、画像上のブラウザに割り当てられている以下の
        CrystalReportViewer1.ReportSource = CrystalReportSource1;
        CrystalReportViewer1.DataBind();

    }ウェイ形で]
//コードをWebフォームの方法と同様に、crystalReportコントロールとCrystalReportSource置換;のCrystalReportViewerで置き換えのCrystalReportViewerを、両方のコントロールをツールボックスに見出すことができます。同時にプログラミング時にDataBind()メソッドを削除します。
        Form1_Loadプライベート(SENDERオブジェクト、EventArgsのE)を無効
        {

            crystalReport1.Load(Application.StartupPath + "CrystalReport.rpt");

            crystalReport1.SetDatabaseLogon( "SA"、 "123456"、 "SYWZSWL \ SQLEXPRESS"、 "テスト" @)。

            crystalReport1.SetParameterValue( "これはテストレポートである" "タイトル");
            crystalReport1.SetParameterValue( "PARM"、 "1");
            crystalReportViewer1.ReportSource = crystalReport1。

        }


:モード(PUSH)プッシュ
プッシュモードでのSQLステートメントのフィールド内のCrystal Reportsと一致するようにSQL文でフィールドに組み立てられたデータセットのプログラミングを。単純に、Crystal Reportsのプッシュモードは、レポートデザイナーに良い形後の設定、テンプレートで、配置し、DataSetがレポートを生成することができます組み立て。


[道の下] WEB

CrystalDecisions.Sharedを使用しました。
CrystalDecisions.CrystalReports.Engineを使用しました。
System.Data.SqlClientを使用します。
       保護されたボイドButton_push_Click(オブジェクト送信者、のEventArgs電子)
    {
        文字列のSQL = "SELECT T1、T2、T1 = '' '' T FROM T3"。
        文字列DBConfig_sql = @ "データソース= SYWZSWL \ SQLEXPRESS;初期カタログ=テスト;ユーザID =寺;パスワード= 123456";
        データセットDS =新しいデータセット();
            SqlConnectionのsqlCon =新しいSqlConnectionオブジェクト(DBConfig_sql)。
            SqlCommandオブジェクトのsqlcmd =新しいSqlCommandオブジェクト(SQL、sqlCon)。
            SqlDataAdapterオブジェクトsqlAd =新しいSqlDataAdapterオブジェクト();
            sqlAd.SelectCommand = SQLCMD。
            sqlAd.Fill(DS、 "SQL");
        CrystalReportSource1.ReportDocument.Load(Server.MapPathの(「CrystalReport.rptは」));   
        //それ以外の場合は、プロンプトが表示されます、ここで必要なデータセット内のテーブルの名前を指定することに注意してください「あなたはより多くの情報を要求されたレポートが必要とされている。」
CrystalReportSource1.ReportDocumentを。 SetDataSource(ds.Tables [ "SQL"]);
//は、割り当てられた値が機能しない場合でも、パラメータを割り当てることができません{?}。
       CrystalReportSource1.ReportDocument.ParameterFields // [ "PARM"] CurrentValues.AddValue( "1234567");.
        ( "レポートのサンプルは、モードを押して!")CrystalReportSource1.ReportDocument.ParameterFields [ "タイトル" ] CurrentValues.AddValue;
        CrystalReportSource1.DataBind();

        CrystalReportViewer1.ReportSource = CrystalReportSource1。
         CrystalReportViewer1.DataBind();
    }
【FORMの方式の下】
プライベートボイドForm1_Load(オブジェクト送信者、のEventArgs電子)
        {
            //推模式
            文字列のSQL = "SELECT T1、T2、T1 = '' '' T FROM T3"。
            文字列DBConfig_sql = @ "データソース= SYWZSWL \ SQLEXPRESS;初期カタログ=テスト;ユーザID =寺;パスワード= 123456";
            データセットDS =新しいデータセット();
            SqlConnectionのsqlCon =新しいSqlConnectionオブジェクト(DBConfig_sql)。
            SqlCommandオブジェクトのsqlcmd =新しいSqlCommandオブジェクト(SQL、sqlCon)。
            SqlDataAdapterオブジェクトsqlAd =新しいSqlDataAdapterオブジェクト();
            sqlAd.SelectCommand = SQLCMD。
            sqlAd.Fill(DS、 "SQL");
            crystalReport1.Load(Application.StartupPath + "CrystalReport.rpt");
            crystalReport1.SetDataSource(ds.Tables [ "SQL"]);
{?} //パラメータができません割り当て、割り当てられた値が機能しない場合でも。
            CrystalReportSource1.ReportDocument.ParameterFields // [ "PARM"] CurrentValues.AddValue( "1234567");.
            ( "レポートのサンプルは、モードを押して!")CrystalReport1.ParameterFields [ "タイトル" ] CurrentValues.AddValue;

            crystalReportViewer1.ReportSource = crystalReport1。
}


-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------


使用するCrystal Reportsのプログラム

1.グループヘッダーを作る方法を、同じグループに表示される各ページ
     のグループに挿入された場合には、共通のオプションページで、「各ページに繰り返しグループヘッダー」を選択 
パラメータを渡す方法2. ......のCrystalReportViewerとReportDocumentを 
     、のCrystalReportViewer
             CrystalReportViewer.ParameterFieldInfo属性によって......
            1、ののCrystalReportViewer部材
                  パブリックインスタンスプロパティ
                  (CrystalReportViewerbaseから継承)ParameterFieldInfo ParameterFields。パラメータフィールドのコレクションを取得または設定します。 
     ReportDocumentを二つ、
             ReportDocument.DataDefinition.ParameterFieldsプロパティで......
            1、のReportDocumentをメンバー
            パブリックインスタンスプロパティ
            データ定義データ定義。データ定義オブジェクトを取得します。 
            2、データ定義のメンバ
            パブリック・インスタンス・プロパティ
            ParameterFields ParameterFieldDefinitions。ParameterFieldDefinitionsコレクションを取得します。 
     第三に、カスタムパラメータフィールド(のCrystalReportViewer)を実行
             参考:
            設定パラメータを| Windowsはビューア結合オプションフォーム| Webフォームのオプションを結合ビューアは、 
            Crystalレポートのパラメータを介してユーザの入力をサポートしています。このようなパラメータは、複数の用途があります。たとえば、次の 
            パラメータは、データベースに基づいて、ユーザがレポート内のデータをフィルタリングするために、フィールドの値を指定することを可能にすること。 
            パラメータフィールドは、レポートのフォーマット条件に適用されます。 
            ソート順を定義するためのパラメータフィールド。 
            次の例では、実行時にコード・フィールド値を介してパラメータを設定する方法を示しています。この例では、2つの異なるパラメータを設定する方法について説明:最初の多値離散パラメータであり、2番目のパラメータが領域です。 
実行時にパラメータフィールドを変更し
、[C#の] 
//にパラメータを渡すの文
//ビューアコントロール必要な変数。
=新しい新しいParameterFields paramFields ParameterFields();
ParameterField paramField ParameterField新しい新=();
ParameterDiscreteValue discreteVal新しい新ParameterDiscreteValue =();
=新規新しいParameterRangeValue rangeVal ParameterRangeValue();
//最初のパラメータは、離散的な複数の値を持つパラメータです。
//パラメータフィールドの名前を設定し、それがなければならない
//パラメータとマッチレポート。
paramField.ParameterFieldName =「顧客名」;
//は、第1の離散値を設定し、このパラメータに渡します。
= discreteVal.Value「AIC子供」;
paramField.CurrentValues.Add(discreteVal);
//第2の離散値を設定し、このパラメータに渡します。
以前の設定をするように// discreteVal変数は、新しい値に設定されている
//対象外となります。
=新しい新しいParameterDiscreteValue discreteVal();
discreteVal.Value = "アルバスポーツ";
paramField.CurrentValues.Add(discreteVal);
//パラメータフィールドのセットにパラメータを追加します。
; paramFields.Add(paramField)
領域について//第2のパラメータ値。paramField変数の
以前の設定はカバーされないように//は、新しい値に設定されています。
= ParameterField新しい新paramField();
//パラメータフィールドの名前を設定し、その必要があります
//パラメータとマッチレポート。
paramField.ParameterFieldName =「顧客ID」、
合格する範囲と範囲を設定//起動と終了値
//このパラメータを。
= 42 rangeVal.StartValueある
rangeVal.EndValue = 72;
paramField.CurrentValues.Add(rangeVal);
//パラメータフィールドセットの2番目のパラメータを追加します。
paramFields.Add(paramField);
//ビューアコントロールへのパラメータフィールドのセット。
crystalReportViewer1.ParameterFieldInfo = paramFields;
詳細は、以下をご覧ください:HTTP://www.devedu.com/develop/2005-4-8/12305/default.aspx
3.設定Crystalレポートビューアが見え
     設定Crystalレポートビューアのプロパティを:
     BestFitPageブール値。ページビューがスクロールバーを持つ適切なサイズや作物で取得または設定します。
     この場所は、後に、falseに設定され、スクロールバーを削除することができますCrystalレポートビューアあなたの幅を設定します。
     説明:2つのデバイスを表示するWebフォームから印刷するときに問題があるだろうという状況があり
     、「真」(すなわち、無垂直または水平スクロールバー)のデフォルト値にBestFitPage属性が、PageZoomFactor 100よりも大きいが。 
     BestFitPageは「偽」に設定され、閲覧者のWebフォームページの高さは、(垂直スクロールバーを持つ、すなわち、)レポートの高さよりも小さく、ビューアは、レポートのページ幅(すなわち、無水平スクロールバー)の幅以上です。
     セット幅で、達成するための高さには、ギャップなしのスクロールバーを示しませんでした!
     DisplayGroupTreeブール値。ツリービューを表示するか非表示で取得または設定します。 
    DisplayPageブール値。ツールバーを表示・非表示のある取得または設定します。 
    DisplayToolbarブール値。取得またはツールバーを表示・非表示のある上のセットは、ページボタンに移動します。 
    PageZoomFactorのInt32。取得またはレポートのズーム倍率を設定します。 

    SeparatePagesブール値。レポートページが分離または接続されている取得または設定します。
    PageToTreeRatioのfloat64。レポートセットのサイズと、ツリービューの間の比率を提供します。
4.コントロールツールバーボタン:
    Crystalレポートビューアのプロパティを設定します。
    HasGotoPageButtonブール値。取得または設定ページのボタンの可視性に行きます。 
    HasLevelUpButtonブール値。ツールバー上の[戻る]ボタンを表示するか非表示で取得または設定します。 
    HasPageNavigationButtonsブール値。ツールバーにページナビゲーションボタンを取得または設定し表示するか非表示です。 
    HasRefreshButtonブール値。ツールバーの更新ボタンを表示するか非表示で取得または設定します。 
    HasSearchButtonブール値。ツールバーの検索ボタンを表示するか非表示で取得または設定します。 
    HasZoomFactorListブール値。ツールバーのズーム倍率の一覧を表示するか非表示で取得または設定します。
Webページのレイアウト:
    「デザインビュー」で、のCrystalReportViewer幅、高さプロパティを変更します。
    「HTML表示」スタイル属性の変更を形成するように切り替えます。
<CR:のCrystalReportViewer ID = "CrystalReportViewer1 "スタイル= "Z-INDEX:101; LEFT:8px;位置:絶対; TOP:8px"にrunat = "サーバ"幅= "350px"高さ= "は50px" EnableDrillDown = "FALSE" = DisplayGroupTree> </ CR「偽」:>のCrystalReportViewer
6.他の会社のクリスタルレポートロゴが
    ......結晶を交換するか、または削除されます、会社のロゴファイルは
    、それが結晶を運んで使用されている場合(1)VS.NET報告
はC:\マイクロソフトのVisual Studio .NETでファイルをプログラム\ \視聴\ Crystalレポートは、ロイヤリティーフリー\ツールバーの\ logo.gifをを\
    (2)あなたは水晶を使用している場合は、9.2報告
C:\ Program Files \ Commonファイル\クリスタルディシジョンロイヤリティーフリー\ツールバー\ 2.0 \ crystalreportviewers \を\ crlogo。

    あなたはVS.NETを使用している場合、(1)でのCrystal Reportsに付属している
C:のMicrosoft Visual Studioで\プログラムファイル\ .NETは\ Crystal Reportsの\ビューアは\ロイヤリティーフリー
    (2)あなたはクリスタルが9.2レポートを使用している場合は
C:\ Program Files \ Commonファイルを\ロイヤリティーフリー\ 2.0 \ crystalreportviewers \クリスタルディシジョン
8.インストールされているプラグインに印刷する場合:
    クリスタルレポートの更新バージョンでは、あなたが印刷モードを指定するには、新しいCrystalReportViewer.PrintMode属性を使用することができます。ActiveXとPDF:これは2つのオプションが含まれています。 
   プロパティがPrintMode.PDFに設定されている場合は、レポートをPDFなどのWebサーバー上でエクスポートされ、その後、ブラウザへのデータストリームは、ユーザーがプリンタに直接印刷するためのオプションを使用することができます。このオプションは、クロスプラットフォームの互換性があります。
プロパティがPrintMode.ActiveXに設定されている場合、ActiveXコントロールは、ユーザーがローカルプリンタに直接印刷するレポートを印刷することができ

http://support.businessobjects.com/CRforVS2005/PrintControl.cabダウンロードするには、独自のサーバーに置きます。

Visual Studio 2005のWebサイトのCrystal Reportsでタクシーのパッケージを表示するには、web.configファイル次の文は、XMLサイトに参加する必要性は(<設定のxmlns =「http://schemas.microsoft.com/.NetConfiguration/v2に追加する必要があります。 0 ">後に、前に):
<configSections>
<sectionGroup名="のBusinessObjects ">
   <sectionGroup名=" CrystalReports ">
    <セクション名=" PrintControlは"タイプの=" System.Configuration.NameValueSectionHandler、システム、バージョン= 1.0.3300.0、カルチャニュートラル、PublicKeyToken = = b77a5c561934e089、カスタム= NULL "/>
   </ sectionGroup>
</ sectionGroup>
</ configSections>
<のBusinessObjects>
<CrystalReports>
   <PrintControlは>
    <追加キー=" URL "の値=" HTTP ://192.168.88。91 / PrintControl.cab「/> -パッケージがの.cabするように配置されているアドレス
   </ PrintControlは>
</ CrystalReports>
</のBusinessObjects>
注:Internet ExplorerのみがActiveXモードをサポートします。Internet Explorer以外のブラウザ(FirefoxやSafariの、Mozillaの、など)から印刷する場合、PDFのポップアップダイアログボックスに復元されます。

その後、印刷されたページの層を追加したり、直接メインフォームで、そして層に次のコードを追加する(他の手段を用いてもよい)
<オブジェクトID =「CrystalPrintControl」のClassID =「CLSID:BAEE131D-290A-4541-A50A-8936F159563A」
    =コードベース"http://192.168.88.91/printcontrol.cab"高さ= "0PX"バージョン= "10,2,0,1078"
    VIEWASTEXT = ""幅= "0PX">
</ OBJECT>
バージョンは、バージョン番号でありますあなたはそれを変更するには、バージョン番号の他のバージョンがある場合。
9.プロセスは、レポート処理ジョブの最大数を設定するには、システム管理者が制限に達している
   :ソリューションを
   具体的には以下の2つのキーの値を変更します。
   HKEY_LOCAL_MACHINE、SOFTWARE、クリスタルディシジョン; 10.0;レポートアプリケーション
   サーバ;のInprocServer32; PrintJobLimitが1000に変更
   し、HKEY_LOCAL_MACHINE、SOFTWARE;
   サーバー、サーバー、PrintJobLimitも1000に改訂された 
   私はCで見つかった:\ WINDOWS \ Tempにはクリスタルファイルは、コンピュータが再起動しない場合には、それはしませんが、一度に複数のファイルが生成されますレポートの一時ファイルがたくさんあることを削除され、円が、それはこの非常にあいまいな答えに直面していたが、ちょうど言う水晶レポートはあなたが我々が見ることができ、ここからロード閉鎖するドキュメント見つかっ内無用のファイルの多くは、Google検索に表示されるようにヒューマンエラーは、プログラマにようにする必要があります。
    次のように具体的な解決策は以下のとおりです。
          1.ReportDocumenインスタンスは、クラスのメンバーである必要があります    
             )(=プライベートPRTP ReportDocumentをReportDocumentを新しい新;   
          2.エンドクリスタルレポートファイルは、Windowsが一時的なものではないだろう、このように閉じなければなりません内部生成されたファイル。
              プライベートボイドPage_Unload(SENDERオブジェクト、のEventArgs E)
              {
                    prtp.Dispose();
              }
             ページが完全に表示されたときPage_Unloadイベントが実行され、この方法で解決しました。

おすすめ

転載: www.cnblogs.com/itchenguo/p/11026446.html