プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 ·...

13
VB 2005 VB 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要 事務処理に於いて、集計結果等を印刷 して、確認等を行う事も多い為、ペー パーレスオフィスが推奨される昨今 に於いても、矢張り印刷に関する技術 は必要で有る。 Visual Basic から印刷を行う方法 は、 .NET 以降、 PrintDocument オブ ジェクトを使用する方法が、標準機能 と仕て一般的で有るが、Professional 版等では ReportViewer コントロール CrystalReport を利用する事も可 能で有る。亦、Power Packs 2 では視 覚的確認が容易な FormPrint が機能 を向上させて復活して居る。 此処では、 Access のデータを、 Professional 版等で提供されて居る ReportViewer コントロールを用いて印刷を行う。 印刷Ⅷ VB 2005 データソース接続と DataTable の定義(データセットの追加) クエリビルダの利用(TableAdapter 構成ウィザード) レポートのデザイン(レポートの追加) ReportViewer コントロールの利用(ReportViewer コントロールの追加) ReportViewer コントロールに依る印刷(ReportViewer コントロールのツールバー) 今回の課題項目 データソース接続と DataTable の定義(データセットの追加) クエリビルダの利用(TableAdapter 構成ウィザード) レポートのデザイン(レポートの追加) ReportViewer コントロールの利用(ReportViewer コントロールの追加) ReportViewer コントロールに依る印刷(ReportViewer コントロールのツールバー) 今回の重点項目

Upload: others

Post on 08-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-1-

プログラムの概要

事務処理に於いて、集計結果等を印刷

して、確認等を行う事も多い為、ペー

パーレスオフィスが推奨される昨今

に於いても、矢張り印刷に関する技術

は必要で有る。

Visual Basic から印刷を行う方法

は、.NET以降、PrintDocumentオブ

ジェクトを使用する方法が、標準機能

と仕て一般的で有るが、Professional

版等ではReportViewerコントロール

や CrystalReport を利用する事も可

能で有る。亦、Power Packs 2では視

覚的確認が容易な FormPrint が機能

を向上させて復活して居る。

此処では、Access のデータを、

Professional版等で提供されて居る ReportViewerコントロールを用いて印刷を行う。

印刷Ⅷ

VB 2005 ⑧

□ データソース接続と DataTableの定義(データセットの追加)

□ クエリビルダの利用(TableAdapter構成ウィザード)

□ レポートのデザイン(レポートの追加)

□ ReportViewerコントロールの利用(ReportViewerコントロールの追加)

□ ReportViewerコントロールに依る印刷(ReportViewerコントロールのツールバー)

今回の課題項目

□ データソース接続と DataTableの定義(データセットの追加)

□ クエリビルダの利用(TableAdapter構成ウィザード)

□ レポートのデザイン(レポートの追加)

□ ReportViewerコントロールの利用(ReportViewerコントロールの追加)

□ ReportViewerコントロールに依る印刷(ReportViewerコントロールのツールバー)

今回の重点項目

Page 2: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-2-

■ ReportViewerの利用 ■

■ 新しいWindowsアプリケーションプロジェクトの作成

① [新しいプロジェクト] ダイアログの [テンプレート] ペインで、[Windowsアプリケーション] を選

択してMicrosoft Windowsアプリケーションを作成する。

② [新しいプロジェクト ] ダイアログの [プロジェクト名 ] ボックスに、プロジェクト名を

ReportViewerPrintと入力する。

③ [Form1.vb] ファイルのプロパティで、ファイル名を ReportViewerPrint.vbに変更する。

④ [総てを保存] ボタンをクリックして表示される [プロジェクトの保存] ダイアログボックスの [場

所] ボックスにプロジェクトを保存するディレクトリを入力するか、[参照] をクリックしてディレ

クトリを選択して、ソリューションを保存する。

※ 此処迄は、通常のWindowsアプリケーションのプロジェクトの作成の場合と同じで有り、特に問題

は無いと思うが、プロジェクト名に、ProjectViewerと謂う様な既存のクラス名(コントロール名等

も含む)を付けると、誤動作の原因と成るので、絶対に避ける様にする必要が有る。此れは、特に

ReportViewerコントロールを使用する場合に限らず、全般的に謂える事で有る。

■ データソース接続と DataTableの定義

① ソリューションを保存したディレクトリ下の bin¥Debugフォルダに data.mdbを格納する。

② ソリューションエクスプローラで、ReportViewerPrint と謂う名前のプロジェクト(ソリューショ

ンではない)を右クリックし、[追加] をポイントし、[新しい項目] を選択する。

Page 3: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-3-

③ [新しい項目の追加] ダイアログボックスで、[データセット] をクリックした後、データセットの名

前(ReportViewerDataSet)を入力して [追加] をクリックする。

此れに依り、新しい XML スキーマファイルで有る ReportViewerDataSet.xsd(ファイル名の拡張

子は .xsd)がプロジェクトに追加され、データセットデザイナが開く。

④ データセットデザイナモードでツールボックスより、[TableAdapter] をデータセットデザイン画面

にドラッグする。然うすると、TableAdapter構成ウィザードが開く。

データセットデザイナモードに成ると、ツールボックスには、自動的に DataSet のセクションが表

示される。

ドラッグ

Page 4: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-4-

⑤ [データ接続の選択] ページで、[新しい接続] をクリックする。

⑥ [接続の追加] ダイアログボックスの [データソース] で [Microsoft Access データベース] を選択

する(既定)。[データベースファイル名] に、bin¥Degugに格納した data.mdbを指定する。

此の時点で、[接続の確認] ボタンをクリックして、[テスト接続に成功しました] メッセージボック

スが表示される事を確認して、[OK] ボタンをクリックする。

⑦ 元の画面に戻るので、[次へ] ボタンをクリックして、ウィザードの次のページに進む。[選択された

接続は、現在のプロジェクトには無い…云々] ダイアログボックスが表示されるが、此処では [いい

え] ボタンをクリックする。

Page 5: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-5-

⑧ [接続文字列をアプリケーション構成ファイルに保存する] ページで、接続文字列の名前を入力する

か、既定の [dataConnectionString] の儘で、[次へ] ボタンをクリックする。

⑨ [コマンドの種類を選択する] ページで [SQL ステートメントを使用する] を選択し、[次へ] ボタン

をクリックする(此れ以外に選択肢は無い筈で有る)。

⑩ [SQL ステートメントの入力] ページで、[data.mdb] データベースからデータを取得する為の次の

SQLクエリを入力し、[完了] をクリックする。

SELECT 本.ID,本.タイトル,カテゴリ.カテゴリ名,著者.著者名,本.価格,本.購入日

FROM ((本 INNER JOIN カテゴリ ON 本.カテゴリ ID = カテゴリ.ID)

INNER JOIN 著者 ON 本.著者 ID = 著者.ID)

※ [クエリビルダ] ボタンをクリックし、クエリビルダを使用してクエリを作成し、[クエリの実行] ボ

タンを使用してクエリをチェックする事も出来る。

Page 6: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-6-

■ クエリビルダの利用(TableAdapter構成ウィザードの⑩で [クエリビルダ] を選択した場合)

① [テーブルの追加] ダイアログボックスに表示された総てのテーブル(本、カテゴリ、著者)を追加

して、[閉じる] ボタンをクリックする。

② 一旦、総てのリレーションを解除し、下図の様にリレーションを付け直す。リレーションを解除す

るには、連結棒の菱形を右クリックして、[削除] を選択する。亦、リレーションを付けるには、連

結する項目を、連結先にドラッグする(例えば、本.カテゴリ IDをカテゴリ.IDにドラッグ)。

③ 選択するフィールド名の左側のチェックボックスに、選択する順番に、チェックを付けて行く。他

にも、上図のフィールド名を、下図の列欄にドラッグする方法や、又は、下図のテーブル欄のコン

ボボックスでテーブルを、列欄のコンボボックスでフィールドを選択する方法も有る。

エイリアスや並べ替えの種類等は、必要に応じて、適宜設定する。

Page 7: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-7-

④ 上記の様に設定すれば、SQL文は、下図の様に成る。

⑤ [クエリの実行] ボタンをクリックして、希望の結果が表示されゝば、[OK] ボタンをクリックする。

Page 8: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-8-

■ レポートのデザイン

① ソリューションエクスプローラで、ReportViewerPrint と謂う名前のプロジェクト(ソリューショ

ンではない)を右クリックし、[追加] をポイントし、[新しい項目] を選択する。

② [新しい項目の追加] ダイアログボックスで、[レポート] をクリックした後、レポートファイルの名

前(ReportViewerReport)を入力して [追加] をクリックする。

此れに依り、新しいレポートファイルで有る ReportViewerReport.rdlc(ファイル名の拡張子

は .rdlc)がプロジェクトに追加され、レポートデザイナが開く。

③ レポートデザイナモードでツールボックスより、[テーブル] をレポートデザイン画面にドラッグす

る。

レポートデザイナモードに成ると、ツールボックスには、自動的にレポートアイテムのセクション

が表示される。

ドラッグ

Page 9: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-9-

④ [データソース] ウィンドウから DataTable1 を展開して列を表示する。[タイトル] フィールドをテ

ーブル内の最初の列の中央の行にドラッグする。中央の行は詳細行で有る。詳細行を指定すると、

ヘッダー行が自動的に入力される。

⑤ [カテゴリ名] フィールドを 2列目の詳細行にドラッグして、[タイトル] フィールドの右横に成る様

にする。

⑥ [著者名] フィールドを 3列目の詳細行にドラッグして、[カテゴリ名] フィールドの右横に成る様に

する。

⑦ 3列目の最上行を右クリックし、[右に列を挿入] をクリックする。新しく出来た列の詳細行に [価格]

フィールドをドラッグする。

⑧ 4列目の最上行を右クリックし、[右に列を挿入] をクリックする。新しく出来た列の詳細行に [購入

日] フィールドをドラッグする。

⑨ 必要に応じて、最初の行の左側の [テーブルヘッダー] アイコンをクリックし、[プロパティ] で書式

スタイルと仕て [太字] を選択する(Font – FontWeight – Bold)。

ドラッグ

Page 10: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-10-

■ アプリケーションへの ReportViewerコントロールの追加

① ReportViewerPrint.vb(Form1.vb)をクリックしてデザインモードでフォームを開く。

② Visual Studio のツールボックスの [データ] セクションから [ReportViewer] アイコンをフォーム

にドラッグする。フォーム幅と ReportViewerコントロール幅を必要に応じて調整する。

③ 右上隅の三角形(グリフ)をクリックして、ReportViewerコントロールのスマートタグパネルを開

く。 [ レポートの選択 ] ドロップダウンリストをクリックし、 [ReportViewerPrint.

ReportViewerReport.rdlc] を選択する。レポートを選択すると、其のレポートで使用されて居るデ

ータソースのインスタンスが自動的に作成される。DataSet(DataTable の ADO.NET コンテナ)、

TableAdapter コンポーネント、及び、レポートで使用されて居る各データソースに対応する

BindingSourceオブジェクトのインスタンスを作成するコードが生成される。

※ Visual Basic 2005 Proffecional で、上記の通り設定しても、実行時に例外が発生する。此等の例外

を解消するには、次項に記述した解消法を参照され度い。

ドラッグ

Page 11: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-11-

■ Access データベース操作時の例外の解消法 ■

訂正を行うファイルは、総て自動的に生成されるコードで、総てのファイルを表示しなければ、編集す

る事は出来ない。

■ XMLエディタで行う訂正

settings.settingsを右クリックして、[ファイルを開くアプリケーションの選択] をクリックする。表示

されたダイアログボックスで、XMLエディタを選択して、[OK] ボタンをクリックする。

下記の部分を変更する。

Settingタグ内の ScopeプロパティをUserに変更

Valueタグ内の Data Source項目を data.mdbに変更(パスを削除)

app.configに付いても、同様に仕て XMLエディタで、下記の部分を変更する。

addタグ内の connectionStringプロパティの Data Source項目を data.mdbに変更(パスを削除)

■ コードエディタで行う訂正

ReportViewerPrint.Designer.vb に付いては、コードエディタで、下記の部分を変更する。

エラー一覧に表示されるエラー行で ReportViewerPrint. の名前空間を削除

Settings.Designer.vbに付いても、コードエディタで、下記の部分を変更する。

ConnectionStringプロパティ内の Data Source項目を data.mdbに変更(パスを削除)

以上の訂正を加えると、ビルトし、実行する事が出来る。

Page 12: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-12-

ReportViewerクラス

此のコントロールは、レポートやレポートに関連付けられて居るユーザーインターフェイスを表示する。

コントロールのデザイン時には、パラメータ エリア、空白の見出しマップ、ツール バー、およびレポ

ート領域を表示できます。

ReportViewerクラスに含まれる主なパブリックプロパティは、下記の通りで有る。

名前 説明

BackColor コントロールのレポート領域の背景色を取得・設定する。

BackgroundImage ReportViewerコントロールの背景画像を取得・設定する。

BackgroundImageLayout ReportViewerコントロールの背景画像のレイアウトを取得・設定す

る。

BorderStyle ReportViewerコントロールの罫線のスタイルを取得・設定する。

CurrentPage ReportViewer コントロールのアクティブなレポートの現在のペー

ジを取得・設定する。

DocumentMapCollapsed 折り畳まれた状態の見出しマップを取得・設定する。

DocumentMapWidth 見出しマップのピクセル単位の幅を取得・設定する。

IsDocumentMapWidthFixed 閲覧者が見出しマップのパネルのサイズを変更する際に、其のサイ

ズを変えない様にするか、又は、変更するかを指定する。

LocalReport ReportViewerコントロールのローカルレポートを返す。

ProcessingMode ReportViewerコントロールの処理モードを取得・設定する。

PromptAreaCollapsed ReportViewerコントロールのプロンプト領域を折り畳むか、元に戻

す。

ServerReport ReportViewerのサーバーレポートを取得する。

ShowBackButton コントロールに [戻る] ボタンを表示するか何うかを示す。

ShowContextMenu ショートカットメニューを表示するか何うかを指定する。

ShowCredentialPrompts ユーザー資格情報のプロンプトを表示するか何うかを示す。

ShowDocumentMapButton コントロールに [見出しマップ] ボタンを表示するか何うかを示

す。

ShowExportButton コントロールに [エクスポート] ボタンを表示するか何うかを示

す。

ShowFindControls コントロールに [検索] テキストボックスを表示するか何うかを示

す。

ShowPageNavigationControls ページ ナビゲーションコントロールを表示するか何うかを示す。

ShowParameterPrompts パラメータプロンプトを表示するか何うかを示す。

ShowPrintButton [印刷] ボタンを表示するか何うかを示す。

ShowProgress レポート処理時に進行状況を示すアニメーションを表示するか何う

かを示す。

ShowPromptAreaButton [プロンプト領域] ボタンを表示するか何うかを示す。

ShowRefreshButton [最新の情報に更新] ボタンを表示するか何うかを示す。

ShowStopButton [停止] ボタンを表示するか何うかを示す。

ShowToolBar ツールバーを表示するか何うかを示す。

ShowZoomControl [ズーム] テキストボックスを表示するか何うかを示す。

ZoomMode コントロールのズームモードを取得・設定する。

ZoomPercent レポートの表示に使用されるズームの比率を取得・設定する。

Page 13: プログラムの概要 - xdomainjunko036.html.xdomain.jp/pdf/printing/vb08.pdf · 2017-10-27 · vb 2005 ⑧ 【vb 2005 実用Ⅱ ユーティリティ noa】 -1- プログラムの概要

VB 2005 ⑧ 【VB 2005 実用Ⅱ ユーティリティ noa】

-13-

ReportViewerクラスに含まれる主なパブリックメソッドは、下記の通りで有る。

名前 説明

CancelRendering レポートのバックグラウンド処理を停止する。

Clear レポートビューをクリアし、コントロールの背景色でビューを塗り潰す。

Find レポート内の指定されたテキスト文字列を検索する。

FindNext レポート内の指定されたテキスト文字列の検索を続行する。

JumpToBookmark 指定されたブックマークにレポートを移動する。

JumpToDocumentMapId 見出しマップの指定された領域に移動する。

PerformBack ReportViewerのコントロールをドリルスルーレポートから親レポートに

戻す。

PrintDialog [印刷] ダイアログボックスを表示する。

RefreshReport ReportViewerで現在のレポートが処理され、表示される。

Reset コントロールを既定値にリセットする。

SetDisplayMode コントロール表示を標準のプレビューモード、又は、印刷プレビューモー

ドに設定する。

ReportViewerクラスに含まれる主なパブリックイベントは、下記の通りで有る。

名前 説明

Back ユーザーがドリルスルーレポートから親レポートに移動する時に発生す

る。

BookmarkNavigation ユーザーがレポート内のブックマークに移動した時に発生する。

DocumentMapNavigation 見出しマップノードが選択された時に発生する。

Drillthrough レポートでドリルスルーアイテムが選択された時に発生する。

Hyperlink ユーザーがレポート内のハイパーリンクをクリックすると発生する。

PageNavigation ユーザーがレポート内のページを変更した時に発生する。

Print ユーザーがレポートを印刷する時に発生する。

RenderingBegin ReportViewerでレポートの表示が開始される時に発生する。

RenderingComplete レポートの表示が終了した時に発生する。

ReportError レポートでエラーが発生した時に発生する。

ReportExport ユーザーが [エクスポート] ボタンをクリックした時に発生する。

ReportRefresh レポートが更新された時に発生する。

Search 此のイベントは、ユーザーが [検索] ボタン、又は、[次を検索] ボタン

をクリックした時に発生する。

Sort ユーザーが並べ替えを実行した時に発生する。

Toggle ユーザーがレポートアイテムの表示を切り替えた時に発生する。

ViewButtonClick ユーザーが [表示] ボタンをクリックした時に発生する。

ZoomChange ユーザーが ReportViewerコントロールのズームレベルを変更した時に

発生する。