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

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



2005/04/19配信
 

第4コース  第12回 「名称マスタの作成」




 

 前回に引き続き名称マスタの作成です。

 では、ストアドプロシージャの説明をします。

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

1.名称_更新のストアドプロシージャ

           upd_modeが"0"の場合sp_名称マスタ_insの ストアドプロシージャを
     行います。

           upd_modeが"1"の場合sp_名称マスタ_updの ストアドプロシージャを
     行います。


  1-1.新規登録時にsp_名称マスタ_insを実行します。

    sp_名称マスタ_insの記述

ALTER Procedure sp_名称マスタ_ins
(
@名称区分コード smallint,
@名称コード smallint,
@名称名 varchar (70),
@納品書区分 smallint,
@区分1 smallint,
@区分2 smallint,
@見出し varchar (40),
@色 varchar (2),
@名称区分コード文字 varchar (2),
@名称コード文字 varchar (3)
)
As
insert into 名称マスタ (名称区分コード,名称コード,名称名,納品書区分,
区分1,区分2,見出し,色,名称区分コード文字,名称コード文字)
values (@名称区分コード,@名称コード,@名称名,@納品書区分,@区分1,
@区分2,@見出し,@色,@名称区分コード文字,@名称コード文字)
return


  1-2.変更登録時にsp_名称マスタ_insを実行します。

    sp_名称マスタ_insの記述


ALTER Procedure sp_名称マスタ_upd
(
@名称区分コード smallint,
@名称コード smallint,
@名称名 varchar (70),
@納品書区分 smallint,
@区分1 smallint,
@区分2 smallint,
@見出し varchar (40),
@色 varchar (2),
@名称区分コード文字 varchar (2),
@名称コード文字 varchar (3)
)
As
update 名称マスタ
set 名称区分コード=@名称区分コード,名称コード=@名称コード,名称名=@名称名,納品書区分=@納品書区分,区分1=@区分1,区分2=@区分2,見出し=@見出し,色=@色,名称区分コード文字=@名称区分コード文字,名称コード文字=@名称コード文字
return


説明が前後しましたが、読み込みの処理を説明します。

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

2.名称区分コードのGotFocus

 フォーカスが名称区分コードにある場合、コンボボックスを
 ドロップダウンするようにします。

 その命令が SendKeys "{DOWN}" となります。
 これで、"大分類"、"中分類"、"納品書見出し"、"請求書見出し"
       "納品書備考"、"請求書備考"、"回収方法"、"単位"
 の項目が自動で表示されます。

Private Sub 名称区分コード_GotFocus()

From_Clr_btn

[名称区分コード].Dropdown

If IsNull([名称区分コード]) Or Trim([名称区分コード]) & "" = "" Then
SendKeys "{DOWN}"
End If

End Sub

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

2.名称コードのLostFocus

 コンボボックスで何が選択されたかで名称マスタにセットし
 読み込みをしています。

 名称区分コードNullでない、または桁数はオーバーしてないか等の
 チェックをします。

 必要な項目のみ入力させる処理をします。

 読み込んだ後は名称名にセットフォーカスしています。

 納品書見出し、請求書見出しを選択した場合に納品書、請求書に
 描かれる線に色をつけることができるようにしています。
 カラープリンターがあれば見栄えのよい納品書、請求書が
 出来上がります。

Private Sub 名称コード_LostFocus()

'処理モード(0:登録、1:変更、削除)
syorimode = 0

'名称コードNullチェック
If IsNull(Me![名称コード]) Or Trim(Me![名称コード]) & "" = "" Or _
[名称コード] = 0 Then
[名称コード] = ""
Exit Sub
Else
Me![名称コード] = Format$(Me![名称コード], "000")
End If

'名称区分コードNullチェック
If IsNull(Me![名称区分コード]) Or Trim(Me![名称区分コード]) & _
"" = "" Then
Exit Sub
Else
End If

'名称コード桁数チェック
If 制限ok_n([名称コード], 3, 0, "名称コード", 0) Then
Else
DoCmd.GoToControl "名称区分コード"
Exit Sub
End If

Select Case Me![名称区分コード]
Case "大分類"
Case "中分類"
Case "納品書見出し"
Case "請求書見出し"
Case "納品書備考"
Case "請求書備考"
Case "回収方法"
Case "単位"
Case Else
MsgBox "該当しない名称区分コードが選択されてます", _
vbExclamation, "注意"
Exit Sub
End Select

'名称マスタ読み込み開始
Set cm = New ADODB.Command
Set rs = New ADODB.Recordset
Set pm = New ADODB.Parameter
pm.Direction = adParamInput
pm.Type = adSmallInt

If Me![名称区分コード] = "大分類" Then
pm.Value = Int(1)
Else
If Me![名称区分コード] = "中分類" Then
pm.Value = Int(2)
Else
If Me![名称区分コード] = "納品書見出し" Then
pm.Value = Int(3)
Else
If Me![名称区分コード] = "請求書見出し" Then
pm.Value = Int(4)
Else
If Me![名称区分コード] = "納品書備考" Then
pm.Value = Int(5)
Else
If Me![名称区分コード] = "請求書備考" Then
pm.Value = Int(6)
Else
If Me![名称区分コード] = "回収方法" Then
pm.Value = Int(7)
Else
If Me![名称区分コード] = "単位" Then
pm.Value = Int(8)
End If
End If
End If
End If
End If
End If
End If
End If

Set pm_1 = New ADODB.Parameter
pm_1.Direction = adParamInput
pm_1.Type = adSmallInt
pm_1.Value = Me![名称コード]

With cm
.ActiveConnection = cn
.CommandType = adCmdStoredProc
.CommandText = "sp_名称マスタ_get"
.Parameters.Append pm
.Parameters.Append pm_1
End With

Set rs = cm.Execute

nouhin = Int(0)

If rs.EOF Then
syorimode = 0 '登録
Me![納品書区分] = ""
Me![区分1] = 0
Me![区分2] = 0
Me![見出し] = ""
色選択.Value = 1
Else
syorimode = 1 '変更、削除
Me![名称名] = rs![名称名]
Me![納品書区分] = rs![納品書区分]
Me![区分1] = rs![区分1]
Me![区分2] = rs![区分2]
Me![見出し] = rs![見出し]

'納品書区分(1:納品書,2:物品受領書)
If rs![名称区分コード] = 3 Then
If rs![納品書区分] = Int(1) Then
[納品書区分] = "納品書"
nouhin = Int(1)
Else
If rs![納品書区分] = Int(2) Then
[納品書区分] = "物品受領書"
nouhin = Int(2)
Else
nouhin = Int(0)
End If
End If
End If

If (Me![名称区分コード] = "納品書見出し") Or (Me![名称区分コード] = _
"請求書見出し") Then
Select Case Trim(rs![色])
Case "黒"
色選択.Value = 1
Case "緑"
色選択.Value = 2
Case "赤"
色選択.Value = 3
Case "青"
色選択.Value = 4
Case "灰"
色選択.Value = 5
Case "茶"
色選択.Value = 6
Case "水"
色選択.Value = 7
Case Else
色選択.Value = 1
End Select
End If

nd If

rs.Close
Set rs = Nothing
Set pm = Nothing
Set pm_1 = Nothing
Set cm = Nothing

'名称マスタ読み込み終了

If Me![名称区分コード] = "納品書見出し" Then
Me![納品書区分].Visible = True
Me![納品書区分].Enabled = True
Me![見出し].Visible = True
Me![見出し].Enabled = True
Me![rabe色選択].Visible = True
Me![rabe青].Visible = True
Me![rabe緑].Visible = True
Me![rabe赤].Visible = True
Me![rabe黒].Visible = True
Me![rabe灰].Visible = True
Me![rabe茶].Visible = True
Me![rabe水].Visible = True
Me![色選択].Visible = True
Me![色選択].Enabled = True
Else
If Me![名称区分コード] = "請求書見出し" Then
Me![納品書区分].Visible = False
Me![納品書区分].Enabled = False
Me![見出し].Visible = True
Me![見出し].Enabled = True
Me![rabe色選択].Visible = True
Me![rabe青].Visible = True
Me![rabe緑].Visible = True
Me![rabe赤].Visible = True
Me![rabe黒].Visible = True
Me![rabe灰].Visible = True
Me![rabe茶].Visible = True
Me![rabe水].Visible = True
Me![色選択].Visible = True
Me![色選択].Enabled = True
Else
Me![納品書区分].Visible = False
Me![納品書区分].Enabled = False
Me![見出し].Visible = False
Me![見出し].Enabled = False
Me![rabe色選択].Visible = False
Me![rabe青].Visible = False
Me![rabe緑].Visible = False
Me![rabe赤].Visible = False
Me![rabe黒].Visible = False
Me![rabe灰].Visible = False
Me![rabe茶].Visible = False
Me![rabe水].Visible = False
Me![色選択].Visible = False
Me![色選択].Enabled = False
End If
End If

Me![名称名].Enabled = True
Me![btn取消].Enabled = True
Me![btn登録].Enabled = True
Me![btn取消].Enabled = True

If syorimode = 0 Then
[btn削除].Enabled = False
[btnデータ先頭].Enabled = False
[btnデータ後退].Enabled = False
[btnデータ前進].Enabled = False
[btnデータ最終].Enabled = False
Else
[btn削除].Enabled = True
[btnデータ先頭].Enabled = True
[btnデータ後退].Enabled = True
[btnデータ前進].Enabled = True
[btnデータ最終].Enabled = True
End If

Me![名称名].SetFocus

End Sub

次回も名称マスタの作成です。

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

                ◆ 実践テクニック、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.