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

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



2007/12/04配信
 

第11コース  第8回 「売上入力の作成」




 

 ■メニュー

   1.売上入力の作成(8回目)

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

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

 売上入力の作成の8回目です。

 では、はじめましょう。

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


今回は、伝票番号のLostFocusとなります。

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

Select Case atKeyCode

Case 8 'Back Space
If IsNull(Forms(cFormName_M)![伝票番号]) Then
atKeyCode = 35
End If
If Trim(Forms(cFormName_M)![伝票番号]) & "" = "" Then
atKeyCode = 35
End If
Case 46 'Delete
If IsNull(Forms(cFormName_M)![伝票番号]) Then
atKeyCode = 35
End If
If Trim(Forms(cFormName_M)![伝票番号]) & "" = "" Then
atKeyCode = 35
End If

Case 123 '{F12}
If IsNull(Forms(cFormName_M)![伝票番号]) Then
atKeyCode = 35
End If
If Trim(Forms(cFormName_M)![伝票番号]) & "" = "" Then
atKeyCode = 35
End If

End Select

If atKeyCode = 35 Then
Exit Sub
End If

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

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

'伝票番号Nullチェック
If IsNull(Forms(cFormName_M)![伝票番号]) Or Trim(Forms(cFormName_M) _
![伝票番号]) & "" = "" Or [伝票番号] = 0 Then
[伝票番号] = コントロールマスタ_伝票番号()
Forms(cFormName_M)![伝票番号] = Format$(Forms(cFormName_M) _
![伝票番号], "00000000")
denflg = 0
Else
Forms(cFormName_M)![伝票番号] = Format$(Forms(cFormName_M) _
![伝票番号], "00000000")
denflg = 1
End If

If 制限ok_n([伝票番号], 8, 0, "伝票番号", 0) Then
Else
DoCmd.GoToControl "伝票番号"
Exit Sub
End If

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

クリア表

'伝票ヘッダー読み込み開始

Set cm1 = New ADODB.Command
Set rs1 = New ADODB.Recordset
Set pm1 = New ADODB.Parameter
pm1.Direction = adParamInput
pm1.Type = adInteger
pm1.Value = Forms(cFormName_M)![伝票区分]
Set pm1_1 = New ADODB.Parameter
pm1_1.Direction = adParamInput
pm1_1.Type = adInteger
pm1_1.Value = Forms(cFormName_M)![伝票番号]

With cm1
.ActiveConnection = cn
.CommandType = adCmdStoredProc

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

.CommandText = "sp_伝票ヘッダー_get"
.Parameters.Append pm1
.Parameters.Append pm1_1
End With


Set rs1 = cm1.Execute

If rs1.EOF Then

  ◎ポイント解説 5 -----*-----*-----*-----

syorimode = 0 '登録
'登録モード連続時は日付を保つ
If tDate = 0 Then
tDate = Date
End If
Forms(cFormName_M)![伝票年] = Year(tDate)
Forms(cFormName_M)![伝票月] = Month(tDate)
Forms(cFormName_M)![伝票日] = Day(tDate)
bolRet = 明細_表から画面へ(Int(1))
t締次flg = Int(0)
t月次flg = Int(0)
Else

  ◎ポイント解説 6 -----*-----*-----*-----

syorimode = 1 '変更、削除
Forms(cFormName_M)![伝票年] = rs1![伝票年]
Forms(cFormName_M)![伝票月] = rs1![伝票月]
Forms(cFormName_M)![伝票日] = rs1![伝票日]
Forms(cFormName_M)![営業所コード] = rs1![営業所コード]
Forms(cFormName_M)![得意先コード] = rs1![得意先コード]
Forms(cFormName_M)![担当者コード] = rs1![担当者コード]
Forms(cFormName_M)![掛区分] = rs1![掛区分]
Forms(cFormName_M)![消費税計算法] = rs1![消費税計算法]
Forms(cFormName_M)![売上金額] = rs1![金額]
Forms(cFormName_M)![消費税] = rs1![消費税]
Forms(cFormName_M)![合計金額] = rs1![合計金額]
t締次flg = rs1![締次フラグ]
t月次flg = rs1![月次フラグ]
区分表示
tDate = 0

  ◎ポイント解説 7 -----*-----*-----*-----

'伝票明細表示
intRet = 伝票ディテール_読む()

  ◎ポイント解説 8 -----*-----*-----*-----

'得意先明細問い合せ(伝票複写区分0:しない,1:する)
If p_denfuku = Int(0) Then
If rs1![締次フラグ] <> 0 Then
MsgBox "処理済み伝票です。伝票修正は出来ません。" & _
vbCrLf & _
"締次フラグ= " & rs1![締次フラグ] & " 月次フラグ= _
" & rs1![月次フラグ], vbCritical, "警告"
p_eigyocd = Int(0)
p_tokucd = Int(0)
From_Clr

rs1.Close
Set rs1 = Nothing
Set pm1 = Nothing
Set pm1_1 = Nothing
Set cm1 = Nothing

Exit Sub
End If
End If

  ◎ポイント解説 9 -----*-----*-----*-----

'得意先明細問い合せ(伝票複写区分0:しない,1:する)
If p_denfuku = Int(0) Then
If rs1![月次フラグ] <> 0 Then
MsgBox "処理済み伝票です。伝票修正は出来ません。" & _
vbCrLf & _
"締次フラグ= " & rs1![締次フラグ] & " 月次フラグ= _
" & rs1![月次フラグ], vbCritical, "警告"
p_eigyocd = Int(0)
p_tokucd = Int(0)
From_Clr

rs1.Close
Set rs1 = Nothing
Set pm1 = Nothing
Set pm1_1 = Nothing
Set cm1 = Nothing

Exit Sub
End If
End If

End If

rs1.Close
Set rs1 = Nothing
Set pm1 = Nothing
Set pm1_1 = Nothing
Set cm1 = Nothing

  ◎ポイント解説 10 -----*-----*-----*-----

If denflg = 1 Then
If syorimode = 0 Then '登録
MsgBox "伝票番号が存在しません。処理は継続出来ません", vbCritical, _
"警告"
From_Clr
Exit Sub
End If
End If

  ◎ポイント解説 11 -----*-----*-----*-----

If denflg = 0 Then
If syorimode = 1 Then '変更
MsgBox "伝票番号が存在します。処理は継続出来ません", vbCritical, _
"警告"
From_Clr
Exit Sub
End If
End If

'伝票ヘッダー読み込み終了

  ◎ポイント解説 12 -----*-----*-----*-----

'得意先明細問い合せ(伝票複写区分0:しない,1:する)
If p_denfuku = Int(1) Then
syorimode = 0 '登録

  ◎ポイント解説 13 -----*-----*-----*-----

[伝票番号] = コントロールマスタ_伝票番号()
Forms(cFormName_M)![伝票番号] = Format$(Forms(cFormName_M) _
![伝票番号], "00000000")
tDate = Date
Forms(cFormName_M)![伝票年] = Year(tDate)
Forms(cFormName_M)![伝票月] = Month(tDate)
Forms(cFormName_M)![伝票日] = Day(tDate)
t締次flg = Int(0)
t月次flg = Int(0)
End If

  ◎ポイント解説 14 -----*-----*-----*-----

If IsNull([担当者コード]) Or Trim([担当者コード]) & "" = "" Then
Else
担当者_読む
Forms(cFormName_M)![担当者コード] = Format$(Forms(cFormName_M) _
![担当者コード], "00")
End If

If IsNull([営業所コード]) Or Trim([営業所コード]) & "" = "" Then
Else
営業所_読む
Forms(cFormName_M)![営業所コード] = Format$(Forms(cFormName_M) _
![営業所コード], "00")
End If

If IsNull([得意先コード]) Or Trim([得意先コード]) & "" = "" Then
Else
得意先_読む
Forms(cFormName_M)![得意先コード] = Format$(Forms(cFormName_M) _
![得意先コード], "00000")
End If

Forms(cFormName_M)![伝票年].Enabled = True
Forms(cFormName_M)![伝票月].Enabled = True
Forms(cFormName_M)![伝票日].Enabled = True
Forms(cFormName_M)![営業所コード].Enabled = True
Forms(cFormName_M)![得意先コード].Enabled = True
Forms(cFormName_M)![担当者コード].Enabled = True
Forms(cFormName_M)![掛区分].Enabled = True
Forms(cFormName_M)![消費税].Enabled = True

For gyo = Int(1) To Int(5)
Forms("売上入力").Controls("商品コード_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("商品名_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("区分名_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("消費税名_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("数量_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("売上単価_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("仕入単価_" & CStr(gyo)).Enabled = True
Forms("売上入力").Controls("金額_" & CStr(gyo)).Enabled = True
Next

Forms(cFormName_M)![btn取消].Enabled = True
Forms(cFormName_M)![btn登録].Enabled = True
Forms(cFormName_M)![btn取消].Enabled = True
Forms(cFormName_M)![btn行挿入].Enabled = True
Forms(cFormName_M)![btn行削除].Enabled = True

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

  ◎ポイント解説 15 -----*-----*-----*-----

'売上伝票発行(0:無し,1:有り)
If denp_sakou = 0 Then
Else
Forms(cFormName_M)![納品書備考].Enabled = True
名称マスタ_読む_納品書備考
Forms(cFormName_M)![納品書備考] = t_nouhinmes
End If

Forms(cFormName_M)![伝票年].SetFocus

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

長くなりましたのでポイント解説1のみ説明します。

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

{F12}は、得意先明細問い合せ画面に移動します。
そこで得意先明細問い合せ画面へ移り何もぜずに戻ったとします。
つまり、ここでは伝票番号を取得せず売上入力の画面に戻ってきた場合を想定
して作成しています。

{F12}のとき123がatKeyCodeに退避された状態になり、伝票番号にnull
または空白なのにLostFocusを通ることになります。

そこで伝票番号にnullまたは空白のとき、atKeyCodeに強制的に終了ボタンの
コード35をいれています。

しかも、atKeyCodeが35なら伝票番号のLostFocusを抜けさせる。

意味も無く何でも素通りさせない処理をさせることも重要です。

今年もあと1回のメルマガで終了です。
次回も売上入力です。


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

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