以下の内容がプログラムコードです。
VS.Net で Crystal Reports を学ぶ前、友人と私は、この複雑なものを Web アプリケーションに追加する方法に非常に興味がありました。 1 週間後、たくさんの「HOWTO」ドキュメントを読んだ後、いくつかの簡単なレポートを Asp.net プログラムに追加することに成功し、いくつかのヒントを得ました。
この記事では、.Net Web アプリケーションで Crystal Reports を使用する方法を説明し、学習プロセスでの回り道を避けるのにも役立ちます。最良の結果を得るには、読者は Asp.Net データベース アクセスに関する基本的な知識と、VS.Net を使用した開発経験を持っている必要があります。
導入
Crystal Reports はさまざまな方法で取得できます。そのうちの 1 つは、実行時にプロパティとメソッドを操作できる非常に豊富なモデルを提供する VS.Net を使用して作成する方法です。 VS.Net を使用して .Net プログラムを開発している場合、他のソフトウェアはすでに VS.Net に組み込まれているため、他のソフトウェアをインストールする必要はありません。
アドバンテージ:
VS.Net Crystal Reports には次の主な利点があります。
迅速なレポート開発
複雑なインタラクティブなグラフにエクスポートする機能
Webフォームで他のコントロールとともに使用可能
レポートを .pdf、.doc、xls、html、rtf およびその他の形式に動的にエクスポートできます。
構造:
Crystal Reports の 2 層構造を構成するいくつかのコンポーネントは次のとおりです。
クライアント:
クライアントに必要なのは、aspx ページに埋め込まれたレポートにアクセスできるブラウザーのみです。
サーバ:
- クリスタル レポート エンジン (CREngine.dll)
レポート ファイル内のデータの結合、レポートの他の形式への変換など、いくつかのタスクを実行できます。 Asp.Net の Crystal Reports を通常の HTML 形式に変換できるのは、まさにレポート エンジンのおかげです。
- クリスタル レポート デザイナー (CRDesigner.dll)
Crystal レポートはデザイナーで作成され、タイトルのデザイン、データ、式、グラフ、サブレポートなどの挿入を行うことができます。
- .rptレポートファイル
レポートを実行する最初のステップは、Crystal Report Designer インターフェイスでこのレポートを作成することです。Microsoft は、デフォルトのインストールで既製の .rpt サンプルをいくつか提供しています。
- データソース
.rpt ファイルからデータベースを取得する方法は、選択した方法によって異なります。コードを使用せずに Crystal Reports にデータ自体を選択させることも、DataSet を手動で組み立ててレポート ファイルに転送することもできます。 。
- Crystal Report Viewer Web フォーム コントロール (CRWebFormViewer.dll)
Crystal Report View コントロールは WebForm コントロールであり、レポートを .aspx ページに保存するコンテナとみなすことができます。 注: 一部の複雑な操作では、レポート サーバーと Web サーバーが同じ物理ホスト上になく、Web サーバーが HTTP 要求をレポート サーバーに送信することがあります。 Crystal Reports は WebService として実行することもできます。
Crystal Reports から実行モードでデータを取得するには、次の方法を使用します。
- プルモード:
要求されると、Crystal Reports は指定されたドライバに基づいてデータベースに直接接続し、データを組み立てます。
- プッシュモード:
このとき、開発テーブルは、データを接続して DataSet を組み立て、同時にレポートに転送するための独自のコードを記述する必要があります。このような場合、接続共有を使用し、レコード コレクションのサイズを制限することで、レポートのパフォーマンスを最大化できます。
レポートの種類:
Crystal Report Designer は、レポートをプロジェクトに直接組み込むことも、独立したレポート オブジェクトを使用することもできます。
- 厳密に型指定されたレポート:
レポート ファイルをプロジェクトに追加すると、そのレポートは「厳密に型指定された」レポートになります。このような場合、レポート オブジェクトを直接作成できるため、コードが削減され、ある程度のパフォーマンスが得られます。
- 入力されていないレポート:
ここでのレポートはプロジェクトに直接含まれていないため、「型なし」レポートと呼ばれます。この場合、Crystal Reports の「ReportDocuemt」オブジェクトを使用してインスタンスを作成し、レポートを「手動」で使用する必要があります。
その他の注意事項
- Crystal Report Viewer には、ズームやページ ナビゲーションなどの優れた機能がいくつかあります。ただし、印刷機能は提供されていないため、ブラウザの印刷機能を呼び出す必要があります。
・VS.NetのCrystal Reportが登録されていない場合、30回までしか利用できません。30回を超えると「保存」機能が使用できなくなります。これを回避するには、この製品をhttp://www.crystaldecions.com/で登録しないでください。 (そうではないようです。登録しなくても長期間使用できるようですが、サポートは受けられません)
- Crystal Reports のデフォルトのインストールでは、5 ユーザーのみをサポートできます。それ以上のユーザーをサポートするには、 http://www.crystaldecions.com/でライセンスを購入する必要があります。
感じてみましょう - Asp.net で既製の Crystal Report ファイルを使用する 1) Crystal Report Viewer コントロール (Crystal Report Viewer) を Web フォーム ツールバーから .aspx ページにドラッグします。
2) Crystal Report Viewer コントロールのプロパティ ウィンドウを呼び出します。
3) [...] ボタンをクリックして「Data Binding」プロパティを表示すると、DataBinding ウィンドウがポップアップ表示されます。
4) 左側の「バインド可能なプロパティ」領域から「レポート ソース」を選択します。
5) [カスタム バインディング式] ラジオ ボタンを選択し、右側の下部ウィンドウで .rpt ファイルのファイル名とパスを指定します。例: 「C:\Program Files\Microsoft Visual Studio.NET\」 Crystal Reports\Samples\Reports\General Business\World Sales Report.rpt」を選択し、「OK」をクリックします。
注: 「World Sales Report.rpt」ファイルは、VS.Net のインストール中に作成されます。インストール プロセス中に別のディレクトリを指定した場合は、この時点でパスが正しいことを確認することをお勧めします。
上記の手順では、実際に次のコードを Asp.Net ファイルに挿入します。
同様に:
id="CrystalReportViewer1"
runat="サーバー" 幅="350px" 高さ="50px"
レポートソース=''>
注: 私の VS.Net 正式バージョンで自動的に生成されたコード内の ReportSource によって生成されたスタイルは、次のようなものではありません。
レポートソース = "
これは間違っており、次の 2 つのエラー メッセージが表示されます。
この記事で紹介されている形式に従って手動で変更する必要があります。これは VS.Net のバグと考えられます。
6) Page_Load メソッドで DataBind メソッドを呼び出します。 (コードはVB.Netです)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
データバインド()
エンドサブ
7) ページを保存してコンパイルします。 これで、Crystal Reports が埋め込まれた WebForm ページが作成されました。
注: 実際の開発では、最初に inetsrv ディレクトリにアクセスできないというエラーが発生します。解決するには、User ユーザーが書き込み権限を持つようにディレクトリのセキュリティ属性を変更します。フライング ナイフ .Net システムが提供するソリューションは役に立たないことがわかりました。これは、Windows.Net オペレーティング システムを使用していることが原因である可能性があります。
Asp.Net での Crystal Reports の使用 (パート 2)
www.dotnet8.com 2002-9-6 DotNet Bar
次の内容はプログラム コードです。
プル モードの使用 次の手順を使用して、Crystal Reports をプル モードで実行します。
1. まず rpt ファイルを作成し、Crystal Report デザイン インターフェイスを使用して必要なデータ接続をいくつか設定します。
2. CrystalReportViewer コントロールを aspx ページにドラッグ アンド ドロップし、そのプロパティを設定して、前の手順で作成した .rpt ファイルを指定します。
3. コード内で DataBind メソッドを呼び出します。
.rpt ファイルを作成します。
1) 「ソリューション ブラウザ」を右クリックし、ポップアップ メニューで「追加」--「新しい項目の追加」--> 「クリスタル レポート」を選択します。
2) 「Crystal Report Library」で「As Blank Report」ラジオボタンを選択し、最後に「OK」をクリックします。
3) Crystal Report Designer がここに表示されます。
4) レポートの「詳細エリア」を右クリックし、「データベース」→「データベースの追加/削除...」を選択します。
5) ポップアップ「データベース エキスパート」で、「OLE DB(ADO)」オプションを展開すると、別の「OLE DB(ADO)」ウィンドウがポップアップ表示されます。
6) [OLE DB (ADO)] ポップアップ ウィンドウで、[Microsoft OLE DB Provider for SQL Server] を選択し、[次へ] をクリックします。
7) 接続する情報サーバーを指定します: ASPCN (マシンの名前を何でも書きます)
ユーザーID:sa
パスワード:
データベース: パブ
8) 「次へ」をクリックし、最後に「完了」ボタンをクリックします。
9) この時点で、[データベース エキスパート] ウィンドウに選択したデータベースが表示されます。
10) 「Pubs」データベースを展開し、「Table」を展開し、「Stores」テーブルを選択して「選択したテーブル」領域に追加し、「OK」ボタンをクリックします。
11) [フィールド リソース ブラウザ] の左側の [データベース フィールド] 領域に、選択したテーブルとテーブル内のフィールドが表示されます。
12) 必要なフィールドをレポートの「詳細」エリアにドラッグ アンド ドロップします。フィールド名は「ヘッダー」領域に自動的に表示されます。ヘッダーのテキストを変更する場合は、[ヘッダー] 領域のテキストを右クリックし、[テキスト オブジェクトの編集] オプションを選択して編集します。
13) 保存して、Crystal Report ファイルを作成します。
CrystalReportViewer コントロールを作成する
14) 前の Web フォームに戻り、Crystal Report Viewer コントロールをページにドラッグ アンド ドロップします。
15) Crystal Report Viewer コントロールのプロパティ ウィンドウを呼び出し、「DataBindings」領域を選択して [...] をクリックします。
16) [Crystal Report Viewer データ バインディング ウィンドウ] で、右側の [バインド可能なプロパティ] で [ReportSource] を選択し、右下隅の [カスタム バインディング式] を選択して .rpt ファイル パスを指定します。
17) この時点で、Crystal Report Viewer コントロールから、いくつかの仮想データで構成されるレポート ファイルのプレビューが表示されます。
注: 上記の例では、この時点でデータが保存されているため、CrystalReportViewer は設計時に実際のデータを直接呼び出すことができます。この場合、設計時にデータが保存されていないと、データを表示できません。代わりに、いくつかのダミー データが表示され、実際のデータは実行時にのみ選択されます。
コードビハインドプログラミング
18) Page_Load メソッドで DataBind メソッドを呼び出します。
プログラムを実行する
19) プログラムを作成して実行します。
ページ ナビゲーション、ズームなど、Crystal Reports の一部の組み込み機能を Web ページ上で直接使用できるようになりました。
Asp.Net での Crystal Reports の使用 (パート 2)
www.dotnet8.com 2002-9-6 DotNet
[HTML] プッシュ モードを使用して Crystal Reports を実行するには、次の手順を使用します。
1. データセットを設計する
2. .rpt ファイルを作成し、前の手順で作成した DataSet に割り当てます。
3. CrystalReportViewer コントロールを aspx ページにドラッグ アンド ドロップし、前の rpt ファイルに接続します。
4. コードでデータベースにアクセスし、データを DataSet に保存します。
5. DataBind メソッドを呼び出します。
データセットを設計する
1) [ソリューション ブラウザ] を右クリックし、[追加] -- [新しい項目の追加] --> [データセット] を選択します。
2) 「サーバー エクスプローラー」の「SQL Server」から「Stores」テーブル (PUBS データベース内にあります) をドラッグ アンド ドロップします。
3) この時点で、データセット内に Stores テーブルの構造図が存在します。
- .xsd ファイルには構造図のみが含まれており、データは含まれません。
.rpt ファイルを作成します。
4) 上記で紹介した方法を使用してこのファイルを作成します。唯一の違いは、前の直接接続データの代わりにデータ セットを使用することです。
5) .rpt ファイルを作成した後、「詳細」->「データベースの追加/削除」を右クリックします。
6) [データベース エキスパート] ウィンドウで、[プロジェクト データ] (以前の OleDb を置き換える) を展開し、[ADO.Net データ セット] -- [DataSet1] を展開し、[ストア] テーブルを選択します。
7) 「Stores」テーブルを「選択したテーブル」に追加し、「OK」をクリックします。
8) PULL モードのメソッドを使用して WebForm を作成します
Crystal Report Viewer コントロールを作成する
9) Crystal Report Viewer コントロールを作成し、そのプロパティを設定します。これは PULL モードと一致します。
コードビハインドコード:
10) Page_Load メソッドで次のサブ関数を使用します。
VB.Net コード:
SubBindReport()
myConnection を新しい SqlClient.SqlConnection() として薄暗くする
myConnection.ConnectionString= "server= (ローカル)NetSDK;database=pubs;Trusted_Connection=yes"
MyCommand を新しい SqlClient.SqlCommand() としてディムします
MyCommand.Connection = myConnection
MyCommand.CommandText = "ストアから * を選択"
MyCommand.CommandType = CommandType.Text
MyDA を新しい SqlClient.SqlDataAdapter() として暗くする
MyDA.SelectCommand = MyCommand
myDS を新しい Dataset1() として暗くする
'これはデザイン モードで使用する DataSet です
MyDA.Fill(myDS, "ストア")
'以前の DataSet と同じ名前を使用する必要があります。
Dim orpt As New CrystalReport1()
'クリスタルレポートバインディング
oRpt.SetDataSource(myDS)
'Crystal Report の ReportSource を設定します
CrystalReportViewer1.ReportSource = oRpt
エンドサブ
C# コード:
プライベート void BindReport()
{
string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
CrystalReport1 oCR = 新しい CrystalReport1();
データセット 1 ds = 新しいデータセット 1();
SqlConnection MyConn = 新しい SqlConnection(strProvider);
MyConn.Open();
string strSel = "ストアから * を選択";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"stores");
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = oCR;
}
注: 上記のコードでは、oRpt が「厳密に型指定された」レポート ファイルであることに注意する必要があります。 「UnTyped」レポートを使用する必要がある場合は、ReportDocument オブジェクトを使用してからレポート ファイルを呼び出す必要があります。
プログラムを実行します。
11) プログラムを実行します
レポート ファイルを他の形式にエクスポートする
レポート ファイルを次の形式にエクスポートできます。
1. PDF(ポータブルドキュメント形式)
1. 2. DOC (MS Wordドキュメント)
2. 3. XLS (MS Excel スプレッドシート)
3. 4. HTML (ハイパー テキスト マークアップ言語 - 3.2 または 4.0 準拠)
4. 5. RTF (リッチ テキスト フォーマット) は、
プル モードを使用してレポートをエクスポートします。プル モードを使用して作成されたファイルをエクスポートする場合、Crystal Reports は必要なデータを正確に開きます。エクスポート機能を実行するためのコードは次のとおりです。
C# コード:
VB.Net コード:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Button1.Click を処理します
myReport を CrystalReport1 = New CrystalReport1() として薄暗くする
注: ここでは、厳密に型指定された Crystal Report インスタンスを作成します。
CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions() として DiskOpts を暗くする
myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile
' このオプションは、他のファイルにエクスポートする場合にも必要です
' Microsoft Exchange、MAPI など。
myReport.ExportOptions.ExportFormatType = CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat
'ここでは .pdf 形式のファイルにエクスポートします。上記の他の種類のファイルを選択することもできます
DiskOpts.DiskFileName = "c:Output.pdf"
' 正確なディレクトリを指定しない場合、ファイルは [Windows]System32 ディレクトリに保存されます。
myReport.ExportOptions.DestinationOptions = DiskOpts
'Crystal Report ファイルには直接の FileName プロパティが含まれていないため、保存されたファイル名を直接指定することはできません
'したがって、DiskFileDestinationOptions オブジェクトを使用し、その DiskFileName プロパティを設定する必要があります
' 必要なパスについて、最後に Crystal Reports の DestinationsOptions プロパティを上記の DiskFileDestinationOption として指定します。
myReport.Export()
' 上記のコードはエクスポート ジョブを実行します。
エンドサブ
PUSH モードを使用した Crystal Report のエクスポート エクスポートされたレポートを PUSH モードで作成する場合、最初の手順は、接続を確立し、プログラミングを通じて DataSet を組み立て、レポートの SetDataSource プロパティを設定することです。次の手順はプル モードと同じです。
[/HTML]
.NET 環境での Crystal Reports の使用の概要
: Crystal Reports は優れたレポート開発ツールであり、一般的な管理システムを開発していたときは、そのシンプルさ、使いやすさ、強力な機能により、Crystal Reports を使用していました。もっと見る クリスタルレポートはノートを使用して全員に提示されます。
1. 内蔵の Crystal Report を使用する場合は、登録してください。登録しないと、
Crystal Report は 30 回しか使用できません。登録番号: 6707437608。
パスワード:AAP5GKS0000GDE100DS
2. CrystalReportViewer をプレビューに使用します。
CrystalReportViewer コントロールを使用すると、アプリケーションで Crystal Report を表示できます。 ReportSource プロパティは、表示するレポートを設定します。このプロパティを設定すると、レポートがビューアに表示されます。レポート ソースには、ReportDocument、レポート ファイルのパス、または厳密に型指定されたレポートを指定できます。
1. 「ツールボックス」を開き、CrystalReportViewer をフォームにドラッグします。これに rptVew という名前を付けます。
2. ドラッグ アンド ドロップを使用して、Windows フォーム ビューアーのサイズを希望のサイズに変更し、希望の位置に移動します。
3. アプリケーションを実行すると、ビューアにレポートが表示されます。
3. 新しいレポートを作成します。
1. [追加] をポイントし、[新しい項目の追加] をクリックします。
2. [新しい項目の追加] ダイアログ ボックスで、[テンプレート] 領域から Crystal Report を選択し、レポートに rptClient という名前を付けて、[開く] をクリックします。
3. Crystal Report ギャラリーで、次のオプションのいずれかを選択します。
· レポート エキスパートの使用 - レポート作成プロセスをガイドし、選択内容を Crystal Report Designer に追加します。
· 空のレポートとして - Crystal Report Designer を開きます。
· 既存のレポートから - 指定した別のレポートと同じデザインで新しいレポートを作成します。
注 Crystal Report ライブラリには、いくつかの特定の種類のレポートの作成をガイドできる専門家が含まれています。どのレポート作成方法がニーズに適しているかを判断するために、専門家に最初のレポートを作成してもらうことをお勧めします。
4. [OK]ボタンをクリックします。
レポート エキスパートの使用を選択した場合は、データ エクスプローラーとともに [レポート エキスパート] ダイアログ ボックスが表示されます。各フォルダーに必要なデータを選択し、[レポート エキスパート] タブ インターフェイスで操作を完了し、[完了] をクリックして Crystal Report Designer とレポートにアクセスします
。 4. データ ソースを動的に設定する必要がありますか?
Crystal Reports は、データベース ドライバーを介してデータベースに接続します。各ドライバーは、特定のデータベース タイプまたはデータベース アクセス テクノロジを処理するように作成されています。
プル モデルとプッシュ モデル 開発者に最も柔軟なデータ アクセス方法を提供するために、Crystal Reports データベース ドライバは、データ アクセスのプル モデルとプッシュ モデルの両方を提供するように設計されています。
プルモデル
プル モデルでは、ドライバーはデータベースに接続し、必要に応じてデータを「プル」します。このモデルを使用すると、データベースへの接続とデータを取得するために実行される SQL コマンドの両方が Crystal Reports 自体によって処理され、開発者がコードを記述する必要はありません。実行時に特別なコードを記述する必要がない場合は、プル モデルを使用します。
プッシュモデル
対照的に、プッシュ モデルでは、開発者はデータベースに接続するコードを作成し、SQL コマンドを実行してレポート内のフィールドと一致するレコードセットまたはデータセットを作成し、オブジェクトをレポートに渡す必要があります。この方法を使用すると、接続共有をアプリケーションに組み込んで、Crystal Reports がデータを受信する前にデータをフィルタリングして除外できます。
4. ADO.NET データ セットからレポートを作成し、
データベースからデータ セット オブジェクトを作成します。
1. プロジェクトに新しいスキーマ ファイルを作成します。
a. ソリューション エクスプローラーでプロジェクト名を右クリックし、[追加] をポイントします。次に「新しい項目を追加」をクリックします。
b. [新しい項目の追加] ダイアログ ボックスの [カテゴリ] 領域で、フォルダーを展開し、[データ] を選択します。
c. [テンプレート] 領域で [データセット] を選択します。
d. デフォルト名 Dataset1.xsd を受け入れます。
これにより、後で厳密に型指定されたデータセットを生成するために使用される新しいスキーマ ファイル (Dataset1.xsd) が作成されます。スキーマ ファイルが ADO.NET データセット デザイナーに表示されます。
2. データベースの場所を指定します:
a. サーバー エクスプローラーで、[データ接続] を右クリックし、[接続の追加] を選択します。
b. [データ リンク プロパティ] ダイアログ ボックスで、[プロバイダ] タブをクリックし、プロバイダ (Microsoft OLE DB Provider for SQL Server など) を選択します。
c. [接続] タブをクリックし、データベースの場所を指定します。必要に応じてサーバーとログイン情報を入力します。
d. 「OK」ボタンをクリックします。
データベースとそのテーブルとフィールドがサーバー エクスプローラーのデータ接続ノードの下に表示されます。
3. ソリューション エクスプローラーで、Dataset1.xsd をダブルクリックします (まだアクティブなビューでない場合)。
Dataset1.xsd が [データセット] タブに表示されます。
4. データセットをスキーマ化するには、必要なテーブルをサーバー エクスプローラーから Dataset1.xsd の [データセット] タブにドラッグします。
5. 「Save Dataset1.xsd」をクリックして、Dataset1.xsd ファイルを保存します。
6. [生成] メニューの [生成] をクリックして、プロジェクトのデータセット オブジェクトを生成します。
ADO.NET DataSet オブジェクトは、Crystal レポートにテーブルを追加できるデータの説明を提供します。 Crystal Report Designer のデータベース エキスパートを使用して、ADO.NET データセット オブジェクトからテーブルを追加します。
レポート エキスパートを使用して新しいレポートを作成する場合は、データベース エキスパートに電話してください。または、ADO.NET を使用して作成されたレポートからデータベース エキスパートにアクセスするには、レポート デザイナーで右クリックし、[データベース] をポイントして、[データベースの追加と削除] をクリックします。
レポートを ADO.NET データセット オブジェクトに接続する
1. データベース エキスパートで、[プロジェクト データ] フォルダを展開します。
2. 「ADO.NET データセット」フォルダーを展開します。
3. 必要なデータセット オブジェクトを選択します。
たとえば、プロジェクト「WindowsApplication1」のスキーマ ファイル「Dataset1.xsd」から生成されたデータセット オブジェクトを使用している場合は、「WindowsApplication1.Dataset1」を選択する必要があります。
4. 他のデータ ソースの場合と同様に、レポートに追加するテーブルを選択します。
5. 動的に変化するデータソースのコード
Dim dsdataSet As New DataSet()
Dim oRpt As New rptClient() '確立されたレポート rptClient では、
読者がデータ セット dsdataSet を自分で入力する必要があります
。'「レポート エンジン」オブジェクト モデルを使用して、入力されたデータ セットをレポート
oRpt に渡します。 SetDataSource(dsdataSet.Tables(0))
'データを含むレポート オブジェクトを Windows フォーム ビューアー、rptVew (CrystalReportViewer コントロール) にバインドします。
rptVew.ReportSource = oRpt
FillDataSet メソッドは、指定されたデータベースに接続し、データを抽出してから、データベースを切断します。データベース内の複数のテーブルをレポートに追加する場合は、SQL JOIN ステートメントを使用してこれらのテーブルを結合し、FillDataSet メソッドで結果テーブルを指定します。
6. マスター/詳細レポートの作成
レポートには、多数のレポートがあります。マスター/詳細テーブル構造 (注文と注文製品の詳細など)。注文は 1 つのテーブルのレコードであり、エントリは別のテーブルの複数のレコードです。この種類のレポートは、グループ化関数の実装を使用できます。 :
1. 新しいプロジェクトを作成します
。 2. CrystalReportViewer コントロールを FORM1 に追加します。
3. サービス リソース マネージャーで SQL SERVER 2000 上の Northwind データベースに接続します
。 4. データ セット Dataset1 を追加し、注文と注文の詳細がデータに追加されます。セット。
5. Crystal Report を追加し、レポート エキスパートを使用し、プロジェクト データで「ADO.NET データ セット」を選択し、テーブル Orders と Order Detail を挿入します。「Link」は関連するフィールドへのリンクで、表示するフィールドを選択します。 「フィールド」 メイン テーブルと詳細テーブルのフィールドの場合、グループ内のグループ選択の基準は、Orders テーブルの OrdersID フィールド、合計、グラフ、選択 (フィルタリング可能)、スタイル (レポート タイトルを設定可能)、および自分で設定してください。設定後、「完了」をクリックします。
6. レポートデザイナーで表示するフィールドの位置や幅などを調整します。
7. ウィンドウにコードを追加します。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) MyBase.Load
Dim oRpt As New CrystalReport1()
Dim dsdataSet As New Dataset1()
Dim CN As New Data.SqlClient.SqlConnection("データ ソース = PMSERVER;初期カタログ = Northwind;ユーザー ID = sa;パスワード = sa")
CN.Open()
Dim daOrders As New Data.SqlClient.SqlDataAdapter("select * from注文", CN)
daOrders.Fill(dsdataSet, "注文")
Dim daDetails As New Data.SqlClient.SqlDataAdapter("select * from [注文詳細]", CN)
daDetails.Fill(dsdataSet, "注文詳細")
'「レポート エンジン」オブジェクト モデルを使用して、設定されたデータ セットをレポートに渡します。
oRpt.SetDataSource(dsdataSet)
CrystalReportViewer1.ReportSource = oRpt
End Sub
8. プログラムを実行します。
7. プログラムを使用してレポート内のテキストを変更します。
コードは次のとおりです。
Dim GetTextObject As TextObject
' ReportObject を名前で取得し、TextObject に変換して、このオブジェクトを返します。
GetTextObject = orpt.ReportDefinition.ReportObjects.Item("text13")
GetTextObject.Text = "XXXX システム"
概要: Crystal Reports は非常に強力な機能を備えており、WORD、EXCEL、RTF などのファイルをエクスポートでき、複雑で美しいグラフを生成することもできます。WEB および WINDOWS のレポート開発に強力なツールです。
(この記事の情報の一部は MSDN からのものです)
著者: Li Honggen
E-MAIL: [email protected]
私には次のような考えがあります。
1. 接続クエリを通じて SQL データベース関連データを取得します。
2. DataSet に配置します。
3. Crystal Reports (線形または縦棒テンプレート) を呼び出してレポートを生成します。
4. EXCELドキュメントを出力・生成します。
英雄の皆さん、上記のアイデアを実現する方法を教えてください。 (例があればもっと良いです)
どうもありがとうございます!
-------------------------------------------------- -------------
1. 新しいプロジェクト DataSet をプロジェクトに追加し、データベースに接続し、必要なデータ テーブルまたはストアド プロシージャを追加します。
この DataSet にドラッグし、DataSet をコンパイルします。
2. Vs.net に付属の Crystal Report を使用して、DataSet をデータ ソースとして使用するレポートを作成します。
3. プログラムのこのレポートにデータをプッシュします
4.Crystal Report には Excel に出力するオプションがあり、プログラムを通じても実現できます。
SqlConnectionとしてのDim conn
SqlDataAdapter としてのディム
文字列としての Dim strSQL
conn = 新しい SqlConnection()
conn.ConnectionString = "ユーザー ID = sa; PWD = 1234; データ ソース = xxxx; 初期カタログ = xxxx"
conn.Open()
strSQL = "テーブル名から * を選択"
da = 新しい SqlDataAdapter(strSQL, conn)
Dim ds As New DataSet()
da.Fill(ds, "テーブル名")
Dim RptDoc As New ReportName()
RptDoc.SetDataSource(ds)
'RptDocのデータを指定し、
CrystalView1.ReportSource = RptDoc 'CrystalView のデータを指定します
CrystalView1.DataBind()
conn.Close()
5. 複数のテーブルに関連付けられたフィールドを表示する必要がある場合は、ストアド プロシージャを使用して DataSet を作成するのが最善です。
-------------------------------------------------- -------------
次のコードを参照してください。
文字列 strconn=接続文字列;
SqlConnection myconn=new SqlConnection(strconn);
文字列strcmd=@"選択ステートメント";
SqlCommand mycmd=new SqlCommand(strcmd,myconn);
SqlDataAdapter myda=new SqlDataAdapter(strcmd,myconn);
DataSet myds=new DataSet();
myconn.Open();
myda.Fill(myds,"レポート名");
レポート名 myrpt =新しいレポート名();
myrpt.SetDataSource(myds);
this.CrystalReportViewer1.ReportSource=myrpt;
EXCEL にエクスポート:
myrpt.ExportOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
myrpt.ExportOptions.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.Excel;
CrystalDecisions.Shared.DiskFileDestinationOptions opt=new CrystalDecisions.Shared.DiskFileDestinationOptions();
opt.DiskFileName=@"ファイル名";
myrpt.ExportOptions.DestinationOptions =opt;
myrpt.Export();
Crystal Reports 9 の中国語ヘルプのダウンロード:
http://www.ourfly.com/download/download.aspx
http://www.enwell.net/soft/
http://www.fast8.com/news.asp
Crystal Reports for Visual Studio .NET
PictureObject メンバーは、「」を参照してください。
PictureObject クラス | CrystalDecisions.CrystalReports.Engine 名前空間のパブリック インスタンス プロパティ
Border(ReportObject から継承) 境界線。 Border オブジェクトを取得します。
高さ (ReportObject から継承) Int32。オブジェクトの高さをツイップ単位で取得または設定します。
Kind (ReportObject から継承) ReportObjectKind。レポートオブジェクトのタイプを取得します。
左 (ReportObject から継承) Int32。オブジェクトの左上隅の位置をツイップ単位で取得または設定します。
名前 (ReportObject から継承) 文字列。オブジェクト名を取得します。
ObjectFormat (ReportObject から継承) ObjectFormat。 ObjectFormat オブジェクトを取得します。
上 (ReportObject から継承) Int32。オブジェクトの上部の位置をツイップ単位で取得または設定します。
幅 (ReportObject から継承) Int32。オブジェクトの幅を twip 単位で取得または設定します。
見る
PictureObject
ClassImports CrystalDecisions.CrystalReports.Engine
Dim picObject As PictureObject
picObject = oRpt.ReportDefinition.ReportObjects.Item("picture1")
出典: http://expert.csdn.net/Expert/topic/1896/1896874.xml?temp=.78677
Web フォームに基づいて Crystal Reports を使用する場合、インターネット上の「A Dao」メソッドに従うだけであれば、あなた: ログインに失敗しました。
この問題については、Crystal Reports のヘルプ ファイルを 1 日かけて調べ、最終的に解決策を見つけました。
私は保守的な人間ではありませんが、私と同じようにこの問題の研究にエネルギーを費やしているネットユーザーはたくさんいると思います。
このソリューションを実装するために私が行ったいくつかの手順を次に示します。心配しないで、ゆっくり読んでいただければ非常に役立ちます。
ステップ 1: サンプル ファイルを確認します。Crystal Reports にはサンプル ファイルが付属しており、データベースにアクセスできます (パスワードなし)。最初にサンプル ファイル (Webform と winform に基づく) を実行したところ、「フライング ナイフ」の例と同様に、正しいレポートが表示されました。
そこで、自分でレポート ファイルと .aspx ファイルを作成しましたが、結果はログインに失敗しました。しかし、レポート ファイルをサンプル レポート ファイルに変更したところ、エラーは発生しなくなりました。
何が問題ですか?レポートフォーマットファイルにログイン許可の設定がされているのではないでしょうか?追跡とデバッグを通じて、レポート ファイルとサンプル レポート ファイルを比較および分析しましたが、違いは見つかりませんでした。問題はレポートファイルにあるわけではないようです。
データベースの問題でしょうか?アクセスを作成したら、ログインに失敗しました。
それはデータベースの問題ではないでしょうか (私自身のデータベースにはパスワードなしでアクセスできます。ヘルプのデータベースにも同じことが当てはまります)。レポート形式ファイルの問題ではないでしょうか(両者の元のコードは同じであることをよく分析しました)。
では、どこで問題が発生するのでしょうか?理解できない!
ステップ 2: ヘルプ ファイルを見つける そこで、もう一度ヘルプを求めました。 Crystal Reports の助けを借りて検索し、最終的に「Access Secure Database [C#]」という単語を見つけ、次の段落を見つけました。
Crystal Reports for Visual Studio .NET を介して安全なデータベースにアクセスするプロセスは、Web フォームと Windows フォームで異なります。 Windows フォームでは、ダイアログ ボックスが自動的にユーザー名とパスワードの入力を求めます (テストは簡単に成功します)。 Web フォームでは、ユーザーからこの情報を取得するためのフォームを設計する必要があります。どちらの場合も、コードを使用してユーザー名とパスワードを指定することができ、アプリケーションのすべてのユーザーに同じレベルのセキュリティを提供します。
そこで、同じデータベースを使用しました (最初はヘルプの例で access データベースを使用し、後で作成した access データベースを使用しました)。同じレポート ファイルに対して、winform では成功が表示されるが、Webform では依然としてログイン失敗が表示されることがわかりました。ということで、なんとなく意味が分かりました!
どうやら権限設定に問題があるようです。
ステップ 3: 助けを求めて調べ、最終的に成功します。
ヘルプで「データベース ログイン パラメータの設定」という言葉を見つけました。これは、後で非常に役立つことがわかったいくつかの情報を提供します。
次の例は、ログイン パラメータをレポート テーブルに渡す方法を示しています。この例では、安全な SQL Server データベースへの接続を使用します。
新しいプロジェクトを開始し、Button と 4 つの TextBox コントロールをフォームに追加します。
テキスト ボックス コントロールに、serverNameTxt、dbNameTxt、userNameTxt、およびpasswordTxtという名前を付けます。
Button コントロールをダブルクリックして、Click イベントのコードを指定します。使用する言語に基づいて適切なコードを挿入します。
[C#]
// 必要な変数を宣言します。
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;
// レポート内の各テーブルをループします。
for (i=0;i == Report.Database.Tables.Count - 1;i++)
{
//現在のテーブルの接続情報を設定します。
logOnInfo.ConnectionInfo.ServerName = サーバー名Txt.Text;
logOnInfo.ConnectionInfo.DatabaseName = dbNameTxt.Text;
logOnInfo.ConnectionInfo.UserID = userNameTxt.Text;
logOnInfo.ConnectionInfo.Password = パスワードTxt.Text;
Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
}
Microsoft AccessやParadoxなどのパスワードで保護されたPCデータベースもこの方法を使用していますが、logoninfo.servernameおよびlogoninfo.databasenameは空のままにする必要があります。
だから私はこのように試してみて、エラーメッセージを受け取りました:TableLogoninfoとレポートは見つかりませんでした。
その後、TableLogonInfoがCrystaldecisions.shared NameSpaceのメンバーであることを発見しました。だから私は見積もりを追加しました:
Crystaldecisions.sharedを使用しています。
今回は問題が報告書で発生しました。
報告?これは何ですか?しかし、そのような機能やクラスはありません!
[真剣に!この問題は長い間私を悩ませてきました!私はレポートが何であるかを探しています! Waterscape Report Companyも非常に役立ち、詳細に書かれていません!戦う時が来ました! ! ! 】
最終的に、私は最終的に、レポートがシステム自体のオブジェクトではなく、ユーザー定義のオブジェクトであることを発見しました。
私が混乱したとき、私は突然、レポートの背後にあるデータベースを見てみませんか?
ReportDocument orpt = new ReportDocument();
レポートは、DocumentCrystaldecisions.crystalReports.engineクラスのメンバーです。
コードを変更し、参照を追加します
Crystaldecisions.shared; // TableLogoninfoクラスの解釈を担当します
Crystaldecisions.CrystalReports .Engineを使用; // ReportDocumentクラスのprivate void page_load(object sender、system.eventargs e)を解釈する責任
{
tableLogonInfo logoninfo = new TableLeLogonInfo();
// reportdocumentオブジェクトレポートは事前に宣言する必要があり、データレポートを同時にロードする必要があります。
ReportDocument orpt = new ReportDocument();
orpt.load( "c:\ inetpub \ wwwroot \ exer \ pagelet \ crystal \ cr1.rpt"); //独自に変更//正しい場所
//セキュリティ情報を作成します
// Microsoft AccessやParadoxなどのパスワード保護されたPCデータベースもこの方法を使用しますが、logoninfo.servername //およびlogoninfo.databasenameを空のままにしておく必要があります
logoninfo.connectioninfo.servername = "www";
logoninfo.connectioninfo.databasename = "archives";
logoninfo.connectioninfo.userid = "sa";
logoninfo.connectioninfo.password = "123456
"
;
CrystalReportViewer1.ReportSource = orpt;
}
レポートファイルがついに表示されます!
うわー、私はとても幸せでした。
ステップ4:上記のコードの最終バージョンには、システムのスケーラビリティと柔軟性がありません。 2つの欠点があります。
(1)データレポート形式ファイルは絶対パスを使用します
(2)データベースアクセス許可が設定されると、特に顧客のSQLサーバーがデバッグに基づいてデバッグと同じになることはできません。 2つのより良いことを紹介します。
(1)、server.mappath関数
(2)web.configを読む(この例では、web.config構成ファイルの操作方法も説明します)
最終的な変更は次のとおりです。(完全なコード)データベースはsql server2000です
Crystaldecisions.shared; // TableLogoninfoクラスの解釈を担当します
Crystaldecisions.CrystalReports .Engineを使用; // ReportDocumentクラスの
private void page_load(object sender、system.eventargs e)
を解釈する責任
{
tableLogonInfo logoninfo = new TableLogoninfo();
// reportdocumentオブジェクトレポートは事前に宣言する必要があり、データレポートを同時にロードする必要があります。
ReportDocument orpt = new ReportDocument();
// .rptファイルの実際のパスを取得します
文字列path1、path2;
path1 = server.mappath( " \ exer \ pagelet ");
path2 = path1+" \ crystal \ cr1.rpt ";
//orpt.load( "obuntpub wwwoot\ \pageletcrystalcr1.rpt");
orpt.load
(path2);
文字列A、B、C、D;
// servernameを取得します
a = system.configuration .configurationsettings .appsettings ["servername"];
// databasenameを取得します
b = system.configuration .configurationsettings .appsettings ["database"];
// userIdを取得します
c = system.configuration .configurationsettings .appsettings ["userid"];
//パスワードを取得します
d = system.configuration .configurationsettings .appsettings ["pass"];
// logoninfoパラメーターを設定します
logoninfo.connectioninfo.servername = a;
logoninfo.connectioninfo.databasename = b;
logoninfo.connectioninfo.userid = c;
=
d
;
CrystalReportViewer1.ReportSource = orpt;
}
デモンストレーションプロセス全体の説明:
1.レポートファイルを保存する必要があるソリューションエクスプローラーで、新しいアイテムを追加します:CrypleReportレポート、Cr1.rptという名前
2.その後表示される「レポートエキスパート」でデータソースを選択するときは、OLE DBを選択し、データベースの要件に従って対応する駆動エンジンを選択してください。
SQL Server:SQL Server用のMicrosoft OLE DBプロバイダー
アクセス:Microsoft Jet.4.0
3.正しいデータベース接続を入力してください。
4.データレポートを作成し、CR1.RPTファイルを保存します
5。WebForm1.aspxを開きます。 CrystalReportViewerコントロールを追加:名前:CrystalReportViewer1
6. webform1.aspx.csのpage_loadイベントに上記のコードを追加します:
(注:引用することを忘れないでください!)
************************************************* ****
以下は、web.configのこのコンテンツに関連する詳細です
<アプリ設定>
<key = "servername" value = "www"/>を追加します
<key = "database" value = "Archives"/>を追加します
<key = "userid" value = "admin"/>
<key = "pass" value = "123456"/>を追加します
</アプリ設定>
*** <add key = "pass" value = "123456"/>はパスです。したがって、それは同じでなければなりません
//パスワードを取得します
d = system.configuration .configurationsettings .appsettings ["pass"]; appsettings ["pass"]の「パス」は一貫しています。 もちろん、好きな名前を選択できますが、一貫している必要があります。
http://www.cnblogs.com/zhangyd1080/2006/11/15/561770.html