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

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



2007/07/31配信
 

第10コース  第9回 「得意先残高初期入力の作成」




 

 ■メニュー

   1.得意先残高初期入力の作成(4回目)

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

 こんにちは、ティウェアの高橋です。

 得意先残高初期入力の作成の4回目です。

 では、はじめましょう。

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


 得意先問い合わせからの処理です。

 1.カナ名の処理

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

If mojisu = Int(0) Then
[カナ名] = ""
Set Me.Recordset = Nothing
Me![営業所コード].ControlSource = ""
Me![得意先コード].ControlSource = ""
Me![得意先名].ControlSource = ""
Me![住所1].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 営業所コード,得意先コード,得意先名,住所1 from _
得意先マスタ 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 = ""
Me![住所1].ControlSource = ""
Else

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

Set Me.Recordset = rs
Me![営業所コード].ControlSource = rs![営業所コード].name
Me![得意先コード].ControlSource = rs![得意先コード].name
Me![得意先名].ControlSource = rs![得意先名].name
Me![住所1].ControlSource = rs![住所1].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 = ""
Me![住所1].ControlSource = ""

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

Me![営業所コード].ControlSource = rs![営業所コード].name
Me![得意先コード].ControlSource = rs![得意先コード].name
Me![得意先名].ControlSource = rs![得意先名].name
Me![住所1].ControlSource = rs![住所1].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.