SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

組み合わせの達人

組み合わせの達人-データ処理機能とUIの強化

第6回 ComponentOne Studioを利用して簡単な売上管理アプリケーションを作成する

  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (4.8 MB)

データベースの接続先を指定する

 前回までは、データベースの接続先をプログラム内にハードコーディングしていました。しかしこれでは、接続先のデータベースが変更になるたびにプログラムを修正する必要がでてきてしまいます。そこで、アプリケーションの設定ファイルを作成し、データベースの接続先を変更できるようにしておきましょう。

 アプリケーションの設定ファイル(configファイル)の作成は、次のような手順になります。

  1. ソリューションエクスプローラのPropertiesフォルダを開き、Settings.settingsをダブルクリックします。
  2. プロパティ名を設定します。
  3. プロパティ値を設定します。
  4. 値の設定を行うと、プロジェクトの構成ファイルとしてapp.configファイルが作成されます。

 サンプルでは、プロパティ名称を「ConnectionString」に設定し、値には接続文字列を設定しています。

 プログラムをコンパイルすると、実行フォルダに「実行ファイル名称.config」ファイルが作成されます(※サンプルの場合は「WindowsFormsApplication1.exe.config」ファイル)。後は、プログラム内で設定値の値を接続文字列として利用するだけです。

// コネクションの生成
SqlConnection connection = new SqlConnection();

// 接続文字列として設定ファイルの値を設定する。
connection.ConnectionString = Properties.Settings.Default.ConnectionString;

 このようにすることで、アプリケーションを実行するときにconfigファイルの設定値を取得するようになります。接続先を変更するときはconfigファイルの中身を変更するだけでよく、再度コンパイルしなおす必要がありません(※サンプルアプリケーションを実行する際は、実際の環境に合わせて接続文字列を変更してください)。

C1Reportコントロールを使った帳票の出力条件を設定する

 次は帳票出力に関する部分です。これまで、C1Reportコントロールを利用して作成した帳票は、レポート定義ファイルに設定されていたRecordSourceに合わせてデータが出力されていました。今回は、さらなる機能拡張として出力するデータ条件を設定してみましょう。

 すぐに思いつくのは、検索条件を設定する画面を用意し、入力された条件に合わせてデータ取得するSQLを変更する、というような流れの方法です。ソースコードはこんな感じになるでしょうか。

// 条件設定画面の表示

// 条件内容に基いてSQL文を作成

// RecordSourceプロパティにSQL文を設定
this.c1Report1.DataSource.RecordSource = "SQL文";

// ドキュメントをプレビュー表示する。
this.c1PrintPreviewControl1.Document = this.c1Report1.Document;

 しかしこのやり方だと、日付の範囲指定など簡単な条件を指定させる場合などでも、検索条件の入力画面を作成する必要があります。

 そこで、ここでは同様の機能をプログラムなしで実現するために、C1Reportコントロールに用意されているパラメータクエリー機能を利用します。そのためにはC1Reportデザイナ上で、SQL構文を設定する際にパラメータを合わせて設定しておく必要があります。

 前回までの場合、下記のSQL構文が設定されていました。

パラメータなしのSQL構文
パラメータなしのSQL構文

 これに日付の範囲指定を行えるようにしましょう。まず、取得するデータの条件としてWHERE句に日付の範囲指定のSQLを書き加えます。この中に検索条件値にあたるものとして「パラメータ」を記述します。

WHERE Sales.Date Between [パラメータ1] And [パラメータ2]

 そして、[パラメータ1][パラメータ2]の「パラメータ名称」「データ型」「デフォルト値」を指定します。指定するには、SQL構文よりも前でPARAMETERS句を宣言します。

PARAMETERS [Beginning Date] DateTime 1/1/2008,[Ending Date] DateTime 1/1/2010;
SELECT

    ・・・・

FROM

    ・・・・

WHERE Sales.Date Between [Beginning Date] And [Ending Date]

    ・・・・
パラメータありのSQL構文
パラメータありのSQL構文

 以上で準備は終了です。では前回までと同じように実行してみましょう。

レポートパラメータの入力
レポートパラメータの入力

 プレビュー画面が表示される前に、「レポートパラメータの入力」ダイアログが表示されました。パラメータを入力後、OKボタンをクリックすると、条件に合うデータのみが表示されたかと思います。

 このように簡単な条件指定の場合、C1ReportコントロールのRecordSourceプロパティに直接パラメータを設定することにより、プログラムなしでの絞り込みを行うことができるようになります。また、「レポートパラメータの入力」ダイアログはパラメータの数やデータ型に合わせて動的に生成されます。

 なお、接続先のデータベースについては、「データベースの接続先を指定する」の項と同様に、ConnectionStringプロパティに設定ファイルの値を設定することで変更が可能です。

// ConnectionStringプロパティに設定値を設定する
this.c1Report1.DataSource.ConnectionString = "設定ファイルの設定値";

次のページ
画面リサイズ時にコントロールサイズを自動調整する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
組み合わせの達人連載記事一覧

もっと読む

この記事の著者

高山 昌悟(タカヤマ ショウゴ)

今までは主に、Windowsアプリケーションの開発を行ってきました。最近はWebアプリケーションの開発を行っています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3830 2009/04/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング