goo blog サービス終了のお知らせ 

いしもち通信

お魚大好き人間の情報交換。旅先の思い出情報交換。
サーバー管理。学校でのAccess利用。PC関連情報。
社会問題。

データベースプログラミング5

2018-04-13 15:43:15 | Weblog

独自機能の追加

1 氏名による検索(前方・後方一致あいまい検索)

BindingSourceのスマートタグ(右上の三角)から「クエリの追加」を行う。

「条件検索ビルダー」が起動するので、クエリテキストを次のように変更する。

Sql文がうまく書けない人は、SQLSeverManagementStudioでビューを作成するときのようなグリッド形式のGUIも使うことができる。

——————————————————————-

SELECT Id, Name, 〒No, Address, Tel, Email FROM  table名

WHERE Name LIKE ‘%’+  @パラメータ名  +  ‘%’

——————————————————————-

SQL 文では文字列をシングルクォーテーションで挟む。パラメータクエリのパラメータの前後に、シングルクォーテーションで挟んだ「%」の文字列を加えると、部分一致のクエリになる。%田%であれば、田中・中田・小田原などが検索対象となる。

クエリが完成すると

BindingNavigatorの下に、パラメータ名のラベルとパラメーター入力用のテキストボックス、クエリ名のボタンが配置されたfillByToolStripが貼りつく。

パラメータを入れ、ボタンをクリックすると以下のイベントハンドラーが呼び出される。

(注:fillByの引数等は設定で異なる)

 

private void fillByToolStripButton_Click(object sender, EventArgs e)

{

try

{

this.テーブル名TableAdapter.FillBy(this. データセット名DataSet.Table, textToolStripTextBox.Text);

                   }

                   catch (System.Exception ex)

                   {

                   System.Windows.Forms.MessageBox.Show(ex.Message);

                   }

}

これを参考に、独自にTextBox、Buttonを配置してデザインすることも可能、先に示した画面サンプルではデフォルトで貼りついたもののデザイン(fontやtext)を変更して見やすくしただけのもの。

 

2 住所による検索

 例えば、「東京」都在住、「大阪市」在住などを検索するために、1のNameをAddressに変更すれば

よいことになる。完成したらもう一つfillByToolStripが貼りつく。

これも独自にフォームのデザインをしてもよい。

 

3 検索結果の解除(全件表示に戻る)

 検索結果を確認したら、元に戻す必要がある。そのためのボタンとクリックイベントを記述する。

 画面サンプルでは、1つ目のfillByToolStripにボタンを追加して「検索解除」のボタンとして配置した。もちろん独自にボタンをフォーム上に配置してもよい。

コードは以下の通り。Fillを使っていることがわかる。

private void fillToolStripButton_Click(object sender, EventArgs e)

{

try

                   {

                   this. テーブル名TableAdapter.Fill(this.データセット名DataSet.Table);

                   }

                   catch (System.Exception ex)

                   {

                   System.Windows.Forms.MessageBox.Show(ex.Message);

                   }

 

}

 

住所録の基本機能としてはこんなところか。変更や更新の確認など、細かい点は最後にする。

次回は、〒番号の検索である。イメージは何となく分かっていたものの、AccessのVBAでは経験したことのない落とし穴にはまることになるとは、予想もしなかった。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

データベースプログラミング4

2018-04-13 13:58:43 | Weblog

 さて、細かいコードの説明の前に、データベースとのやり取りをする仕組みの概略を理解しておく。

3で述べたように、最初にデータ接続があった。

これは、データベースに接続するための設定情報を含むAdapterと呼ばれるプログラムとConnectionと呼ばれるプログラムなどデータベースに接続するための必要なプログラムの総称である。VisualStudioを使ってデータベースおよびテーブルを作成すると自動的にデータ接続が設定される。

 その後、データソースを追加したが、これがデータセットDataSetである。

データセットはデータベースのコピーのようなものでメモリ上に展開される。直接データベースとやり取りするのではなく、メモリ上のデータセットとやり取りして、全てが終了するときに、データベースへ変更結果を書き込むようにするのである。メモリ上の処理なので高速であること等のメリットがある。

 横文字のコンポーネントがいくつか登場しました。改めて確認しておく。

tableBindingNavigator フォーム上のインターフェース、独自デザインで自作も可能。

tableBindingSource フォーム上のコントロールとデータベースを接続する機能

tableTableAdapter データの取得や変更の通知を管理、テーブルへのデータをDataSetに格納。

tableAdapterManagerデータを関連するデータテーブルに保存する機能を提供するコンポーネント。

tableTableAdapterとtableAdapterManagerの違いはよくわからない。しかし、Managerの登場が後なので、データの更新にはこちらを使うようである。UpdateAllメソッドがそれ。

tableTableAdapterの方はUpdateメソッドで、こちらでも更新は可能。ただし、エラーが発生する場合があるため、アダプターの Update メソッドを呼び出すコードは try/catch ブロック内に配置する必要がある。

 自動生成されるtableBindingNavigatorSaveItem_ClickイベントはManagerよるUpdateAllで更新。try/catch ブロックはない。

 初期設定のまま、実行するとデータグリッドにテーブルの全データが表示される。

これにはAdapterのFillメソッドが使われている。FillはSELECTコマンドの実行結果を格納している。検索には、これにフィルターを付加して実行させる。詳細は次回とする。

内部を理解するには結構大変である。

ここまである程度理解して、独自の機能を追加してコードを記述していく。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする