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

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



2007/11/06配信
 

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




 

 ■メニュー

   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年以上の開発ノウハウを惜しみなく完全公開!

Mail:  (半角英数字)     Powered byまぐまぐ


HOME / お客様の声 / メルマガ / 販売管理ソフト教材 / 会社概要/ 特定商取引法/ お申し込み
 お問い合わせ / メルマガのご意見ご感想 / メルマガのバックナンバー/ プライバシーポリシー
 


 Copyright (c) 2001 ティウェア All rights reserved.