■メニュー
1.売上入力の作成(6回目)
===================================================================
こんにちは、ティウェアの高橋です。
売上入力の作成の6回目です。
では、はじめましょう。
------------------------------------------------------------------
前回のメルマガの続きとなります。
1.◎ポイント解説 1-1 について
明細画面の画面前進の続きです。
商品_読む_最終チェックは、Functionでplnoには、明細行数がはいります。
商品コード_○にnullまたは、スペースならチェックをせず抜け出します。
それ以外は、商品コードが存在するかどうかをチェックします。
sp_商品マスタ_getは、商品マスタメンテナンスで作成したのもを使用します。
Function 商品_読む_最終チェック(plno As Integer) As Integer
商品_読む_最終チェック = True
If IsNull(Forms(cFormName_M).Controls("商品コード_" & CStr(plno))) Or _
Trim(Forms(cFormName_M).Controls("商品コード_" & CStr(plno))) & "" = "" Then
Exit Function
End If
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).Controls("商品コード_" & CStr(plno))
With cm1
.ActiveConnection = cn
.CommandType = adCmdStoredProc
.CommandText = "sp_商品マスタ_get"
.Parameters.Append pm1
End With
Set rs1 = cm1.Execute
If rs1.EOF Then
商品_読む_最終チェック = False
End If
rs1.Close
Set rs1 = Nothing
Set pm1 = Nothing
Set cm1 = Nothing
End Function
------------------------------------------------------------------
2.◎ポイント解説 1-2 について
明細画面を表へ退避する処理です。
gyosuに入れられたものから順次表へと格納します。
データ型は以下のとおりです。
Currencyは、h_数量、h_売上単価、h_金額。
Longは、 h_商品コード。
その他のh_○○は、Stringです。
表でワークエリアを持たせる場合は、Dim h_数量(10) As Currency と
記述します。
Function 明細_画面から表へ(gyosu As Integer) As Boolean
For gyo = Int(1) To Int(5)
If IsNull(Forms(cFormName_M).Controls("商品コード_" & CStr(gyo))) Or _
Trim(Forms(cFormName_M).Controls("商品コード_" & CStr(gyo))) & "" = "" Or _
Forms(cFormName_M).Controls("商品コード_" & CStr(gyo)) = 0 Then
h_商品コード(gyosu) = 0
Else
h_商品コード(gyosu) = Forms(cFormName_M).Controls("商品コード_" & CStr(gyo))
End If
If IsNull(Forms(cFormName_M).Controls("商品名_" & CStr(gyo))) Or _
Trim(Forms(cFormName_M).Controls("商品名_" & CStr(gyo))) & "" = "" Then
h_商品名(gyosu) = ""
Else
h_商品名(gyosu) = Forms(cFormName_M).Controls("商品名_" & CStr(gyo))
End If
If IsNull(Forms(cFormName_M).Controls("区分名_" & CStr(gyo))) Or _
Trim(Forms(cFormName_M).Controls("区分名_" & CStr(gyo))) & "" = "" Then
h_区分名(gyosu) = ""
If IsNull(Forms(cFormName_M).Controls("商品コード_" & CStr(gyo))) Or _
Trim(Forms(cFormName_M).Controls("商品コード_" & CStr(gyo))) & "" = "" Or _
Forms(cFormName_M).Controls("商品コード_" & CStr(gyo)) = 0 Then
Else
h_区分名(gyosu) = "1"
End If
Else
h_区分名(gyosu) = Forms(cFormName_M).Controls("区分名_" & CStr(gyo))
End If
h_数量(gyosu) = Nz(Forms(cFormName_M).Controls("数量_" & CStr(gyo)), 0)
h_売上単価(gyosu) = Nz(Forms(cFormName_M).Controls("売上単価_" & CStr(gyo)), 0)
h_金額(gyosu) = Nz(Forms(cFormName_M).Controls("金額_" & CStr(gyo)), 0)
If IsNull(Forms(cFormName_M).Controls("消費税名_" & CStr(gyo))) Or _
Trim(Forms(cFormName_M).Controls("消費税名_" & CStr(gyo))) & "" = "" Then
h_消費税名(gyosu) = ""
Else
h_消費税名(gyosu) = Forms(cFormName_M).Controls("消費税名_" & CStr(gyo))
End If
gyosu = Int(gyosu) + Int(1)
Next
End Function
------------------------------------------------------------------
3.◎ポイント解説 1-3 について
明細画面を表へ退避する処理です。
前進処理ですから、退避した表の6番目から10番目のデータを
明細画面へデータを送る表示する処理となります。
Function 明細_表から画面へ(gyosu As Integer) As Boolean
For gyo = Int(1) To Int(5)
Forms(cFormName_M).Controls("伝票明細行_" & CStr(gyo)) = h_行(gyosu)
If IsNull(h_商品コード(gyosu)) Or _
Trim(h_商品コード(gyosu)) & "" = "" Or _
h_商品コード(gyosu) = 0 Then
Forms(cFormName_M).Controls("商品コード_" & CStr(gyo)) = ""
Else
Forms(cFormName_M).Controls("商品コード_" & CStr(gyo)) = _
Format$(h_商品コード(gyosu), "00000000")
End If
Forms(cFormName_M).Controls("商品名_" & CStr(gyo)) = h_商品名(gyosu)
Forms(cFormName_M).Controls("区分名_" & CStr(gyo)) = h_区分名(gyosu)
Forms(cFormName_M).Controls("数量_" & CStr(gyo)) = h_数量(gyosu)
Forms(cFormName_M).Controls("売上単価_" & CStr(gyo)) = h_売上単価(gyosu)
Forms(cFormName_M).Controls("金額_" & CStr(gyo)) = h_金額(gyosu)
Forms(cFormName_M).Controls("消費税名_" & CStr(gyo)) = h_消費税名(gyosu)
gyosu = Int(gyosu) + Int(1)
Next
End Function
ここまでの処理は、簡単な処理処理となります。
データを退避した後に、前進処理ですから次のデータから画面に送る
処理ですから、明細行を50行にするのであければ、前回のメルマガで記述した
If Int(伝票明細行_1) = Int(1) Thenを明細画面順に増やしていけばできます。
次回も売上入力です。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|