前回に引き続き名称マスタの作成です。
では、ストアドプロシージャの説明をします。
-------------------------------------------------------------------
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年以上の開発ノウハウを惜しみなく完全公開!
|