Access(ADP & VBA)とMSDEで作るクライアントサーバーシステム(c/s)

 
実践テクニック、Accessで作るクラサバシステム



2006/01/03配信
 

第6コース  第6回 「担当者マスタの作成」




 

 担当者マスタの作成、6回目です。

 早速、はじめましょう。

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

 1.カナ名の処理

  1-1.カナ名_AfterUpdateについて

If mojisu = Int(0) Then
[カナ名] = ""
Set Me.Recordset = Nothing
Me![担当者コード].ControlSource = ""
Me![担当者名].ControlSource = ""
Me![担当者名].ControlSource = ""
Exit Sub
End If

If ftKeyCode = 120 Then
Exit Sub
End If

If ftKeyCode = 118 Then
Exit Sub
End If

If ftKeyCode = 116 Then
Exit Sub
End If

If ftKeyCode = 35 Then
Exit Sub
End If

If mojisu >= Int(1) Then

'◎ポイント解説 1 -----*-----*-----*-----

Call 検索処理
Exit Sub
End If

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

  [カナ名]がNullまたは空白なら、mojisu = Int(0)をいれます。
  各項目をクリアしてこの処理をせずに抜けます。

  何かしら文字があれば、mojisu = Len([カナ名])で処理します。
  Len 関数は、バイト数を返してくれます。
  If mojisu >= Int(1) Then なら、担当者を表示させます。

  中ごろにftKeyCode = 120、118、116、35があります。
  これは、formのKeyDownで記述しています。

  全表示(F9)     → 120
  btn1字消去(F5)  → 116
  btn全消去(F5)  → 118
  終了(END)      →  35

  これらのボタンが押されたときに、Call 検索処理をさせていません。
  では、ないとどうなるのか?
  実験して見てください。

  ファンクションキーに処理を割り解けると簡単に操作ができます。

  ファンクションキーにどんな数字が割り付けているのかを調べる
  方法は、Form_KeyDownにftKeyCode = KeyCodeのところです。

  1.そこにブレイクモードの設定をします。
   すると茶色にかわります。
  2.何かしらのファンクションキーを押します。
  3.そこで止まりますのでKeyCodeの内容をクイックウォッチで
   調べます。

  ftKeyCodeに退避させて、その数値でさせたい処理を他の所で
  記述すれば簡単にできます。
  試してみて下さい。


 1-1.◎ポイント解説 1 について

   担当者マスタ読み込んで詳細に表示させます。

   それが、 Call 検索処理 です。

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

 2.検索処理について

   Subで検索処理()を作成します。


'◎ポイント解説 2 -----*-----*-----*-----

Set rs = New ADODB.Recordset
SqlStr = ""
SqlStr = "SELECT 担当者マスタ.担当者コード, 担当者マスタ.担当者名 _
,営業所マスタ.営業所名 "
SqlStr = SqlStr & " FROM 営業所マスタ INNER JOIN 担当者マスタ _
ON 営業所マスタ.営業所コード = 担当者マスタ.営業所コード "
SqlStr = SqlStr & " where 担当者マスタ.カナ名 Like "
SqlStr = SqlStr & "'" & [カナ名] + "%" & "'"
SqlStr = SqlStr & " order by 担当者マスタ.カナ名, _
担当者マスタ.担当者コード"


rs.Open SqlStr, cn, adOpenStatic

If rs.BOF Then

'◎ポイント解説 3 -----*-----*-----*-----

Set Me.Recordset = Nothing
Me![担当者コード].ControlSource = ""
Me![担当者名].ControlSource = ""
Me![営業所名].ControlSource = ""
Else

'◎ポイント解説 4 -----*-----*-----*-----

Set Me.Recordset = rs
Me![担当者コード].ControlSource = rs![担当者コード].name
Me![担当者名].ControlSource = rs![担当者名].name
Me![営業所名].ControlSource = rs![営業所名].name
End If

rs.Close
Set rs = Nothing

-*-------*-------*-------*-------*-------*-------*-------*-------*-

 では、詳しく解説します。

 2-1.◎ポイント解説 2 について

   ここでは、ストアドプロシージャで作成しませんでした。

   ここのポイントは、1、2となります。
   1. 担当者マスタ.カナ名 Like [カナ名]%
   2. order by 担当者マスタ.カナ名,担当者マスタ.担当者コード
   

   Like演算子を使いワイルドカード検索をします。

  *注意
   メルマガでは、半角カタカナは不正文字となりますので
   全角文字で解説します。
   カナ名に入る文字は半角カタカナとなります。

   [カナ名]に"オオ"のいれた場合を考えてみましょう。

   デバッグモードで調べるとSqlStrには、Like オオ% と
   記述されている箇所があります。

   これは、"オオ"ではじまるものは全て抽出しなさいと
   命令しています。

   以下のデータがあったとします。

   岡山太郎    カナ名"オカヤマタロウ"
   大分一郎    カナ名"オオイタイチロウ"
   大分二郎    カナ名"オオイタジロウ"
   大分三郎    カナ名"オオイタサブロウ"

   Like オオ%で表示されるものは、以下のとおりです。

   大分一郎    カナ名"オオイタイチロウ"
   大分三郎    カナ名"オオイタサブロウ"
   大分二郎    カナ名"オオイタジロウ"
   表示はこの順番で現れます。


   岡山太郎    カナ名"オカヤマタロウ"
   "オカ"なので岡山太郎は表示されません。
   Like オ%であれば、全て表示されます。

   大分一郎    カナ名"オオイタイチロウ"
   大分三郎    カナ名"オオイタサブロウ"
   大分二郎    カナ名"オオイタジロウ"
   岡山太郎    カナ名"オカヤマタロウ"
   この順番になります。

   それとorder byによって担当者マスタ.カナ名順に表示されます。
   五十音順だと探しやすいためこのような形にします。
   カナ名が同じ場合は、コードの昇順に表示されます。

   order byは、昇順、降順を指定できます。
   ここでは、省略しているのでデフォルトで昇順(ASC)となります。

   降順にする場合は、DESCを付けます。
   order by 担当者マスタ.カナ名 DESC となります。

 2-2.◎ポイント解説 3 について

   まったくデータがない場合は各項目をクリアします。

   Me![担当者コード].ControlSource = ""
   Me![担当者名].ControlSource = ""
   Me![営業所名].ControlSource = ""

 2-3.◎ポイント解説 4 について

   Me![担当者コード].ControlSource = rs![担当者コード].name
   Me![担当者名].ControlSource = rs![担当者名].name
   Me![営業所名].ControlSource = rs![営業所名].name

   通常だと、ひとつのデータを取り出してそれを表示させる
   それをある条件になるまで繰り返すというパターンを取るのですが、
   この詳細にデータを送る場合は、一気に送る形となります。

   それが、
   ”データ名.name”から”表示名.ControlSource”となります。

   余計なデータがあるとそれらもいっしょに表示されますので
   SQL文は大変重要となります。

   SQL文をパンチしながら作るのは大変な作業です。
   SQL文を簡単に作る方法は、クエリ(ビュー)で作ってみることです
   そうすれば、確認しながら作れます。

   思い通り表示できたらSQL文を少し加工します。
   VBAまたはストアドプロシージャに貼り付ければ効率的に
   作り上げることができます。

 次回は、担当者マスタの作成の最終となります。
 担当者問い合せのボタンの処理を説明します。


 次回も、担当者マスタの作成です。

===================================================================

                ◆ 実践テクニック、Accessで作るクラサバシステム ◆

  編集・構成:高橋浩
  提供・発行:ティウェア

http://www.1tware.com/index.html

Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築

※当メールマガジンに掲載された記事を許可なく転載することを禁じます。

===================================================================

実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)

SEが10年以上の開発ノウハウを惜しみなく完全公開!

Mail:  (半角英数字)     Powered byまぐまぐ


HOME / お客様の声 / メルマガ / 販売管理ソフト教材 / 会社概要/ 特定商取引法/ お申し込み
 お問い合わせ / メルマガのご意見ご感想 / メルマガのバックナンバー/ プライバシーポリシー
 


 Copyright (c) 2001 ティウェア All rights reserved.