■メニュー
1.売上入力の作成(5回目)
===================================================================
こんにちは、ティウェアの高橋です。
売上入力の作成の5回目です。
では、はじめましょう。
------------------------------------------------------------------
前回、FormのLoadを説明しました。
引き続きとなります。
1.◎ポイント解説 3 について
画面上のクリアと退避エリアの初期化をします。
明細行のクリアはFor Nextで5回まわしてクリアです。
Sub From_Clr()
Forms(cFormName_M)![伝票番号].Enabled = True
Forms(cFormName_M)![伝票番号].Locked = False
Forms(cFormName_M)![伝票番号].BackColor = 16777215 '白色
Forms(cFormName_M)![伝票年].Enabled = False
Forms(cFormName_M)![伝票月].Enabled = False
Forms(cFormName_M)![伝票日].Enabled = False
Forms(cFormName_M)![営業所コード].Enabled = False
Forms(cFormName_M)![得意先コード].Enabled = False
Forms(cFormName_M)![担当者コード].Enabled = False
Forms(cFormName_M)![掛区分].Enabled = False
Forms(cFormName_M)![消費税].Enabled = False
If denp_sakou = 0 Then
Forms(cFormName_M)![納品書備考].Visible = False
Forms(cFormName_M)![rabe納品書備考].Visible = False
Else
Forms(cFormName_M)![rabe納品書備考].Visible = True
Forms(cFormName_M)![納品書備考].Visible = True
Forms(cFormName_M)![納品書備考].Enabled = False
End If
For gyo = Int(1) To Int(5)
Forms(cFormName_M).Controls("商品コード_" & CStr(gyo)).Enabled = False
Forms(cFormName_M).Controls("商品名_" & CStr(gyo)).Enabled = False
Forms(cFormName_M).Controls("区分名_" & CStr(gyo)).Enabled = False
Forms(cFormName_M).Controls("消費税名_" & CStr(gyo)).Enabled = False
Forms(cFormName_M).Controls("数量_" & CStr(gyo)).Enabled = False
Forms(cFormName_M).Controls("売上単価_" & CStr(gyo)).Enabled = False
Forms(cFormName_M).Controls("金額_" & CStr(gyo)).Enabled = False
Next
Forms(cFormName_M)![伝票番号] = ""
Forms(cFormName_M)![営業所コード] = ""
Forms(cFormName_M)![得意先コード] = ""
Forms(cFormName_M)![営業所名] = ""
Forms(cFormName_M)![得意先名] = ""
Forms(cFormName_M)![伝票年] = ""
Forms(cFormName_M)![伝票月] = ""
Forms(cFormName_M)![伝票日] = ""
Forms(cFormName_M)![担当者コード] = ""
Forms(cFormName_M)![掛区分] = ""
Forms(cFormName_M)![消費税] = 0
Forms(cFormName_M)![納品書備考] = ""
Forms(cFormName_M)![担当者名] = ""
Forms(cFormName_M)![消費税計算法] = ""
Forms(cFormName_M)![売上金額] = 0
Forms(cFormName_M)![消費税] = 0
Forms(cFormName_M)![合計金額] = 0
'消費税計算法
zeikbn = Int(0)
'掛区分
kakekbn = Int(0)
'金額端数処理
金額_hasu = Int(0)
'消費税端数処理
消費_hasu = Int(0)
'得意先明細問い合せ(伝票複写区分)
p_denfuku = Int(0)
End Sub
------------------------------------------------------------------
2.◎ポイント解説 4 について
区分名_画面表示についてです。
これは、明細行の区分コンボボックスに区分マスタより区分名を渡している処理です。
コンボには、区分名以外に集計区分、伝票区分番号を渡しています。
Do Until の部分で最大行数を10としましたので表へ退避しています。
Function 区分名_画面表示()
For gyo = Int(1) To Int(10)
kh_伝票区分番号(gyo) = 0
kh_集計区分(gyo) = 0
Next
Set rs1 = New ADODB.Recordset
SqlStr = ""
SqlStr = "SELECT 区分マスタ.区分名 ,区分マスタ.集計区分 ,区分マスタ.伝票区分番号"
SqlStr = SqlStr & " FROM 区分マスタ "
SqlStr = SqlStr & " where (区分マスタ.伝票区分 = 1) "
SqlStr = SqlStr & " order by 区分マスタ.伝票区分番号 "
rs1.Source = SqlStr
rs1.CursorType = adOpenForwardOnly
rs1.ActiveConnection = cn
rs1.Open , , , , adCmdText
gyo = 1
Do Until rs1.EOF
If gyo > 10 Then
Exit Do
End If
kh_伝票区分番号(gyo) = rs1![伝票区分番号]
kh_集計区分(gyo) = rs1![集計区分]
'消費税の伝票区分番号を退避(伝票ディテールのため)
If rs1![集計区分] = 4 Then
伝票区分番号消費税 = rs1![伝票区分番号]
End If
gyo = gyo + 1
rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
For gyo = Int(1) To Int(5)
Forms(cFormName_M).Controls("区分名_" & CStr(gyo)) = ""
SqlStr = ""
SqlStr = "SELECT 区分マスタ.区分名 ,区分マスタ.集計区分 _
,区分マスタ.伝票区分番号"
SqlStr = SqlStr & " FROM 区分マスタ "
SqlStr = SqlStr & " where (区分マスタ.伝票区分 = 1) and _
((区分マスタ.集計区分 >= 1) and (区分マスタ.集計区分 <= 3))"
SqlStr = SqlStr & " order by 区分マスタ.伝票区分番号 "
◎ポイント解説 5 -----*-----*-----*-----
Forms(cFormName_M).Controls("区分名_" & CStr(gyo)).RowSource = SqlStr
Next
End Function
3.◎ポイント解説 5 について
明細行に○○_1,○○_2とつけました。
ここでは、区分名_1,区分名_2 となります。
これは、For Nextでループさせる場合、一行の記述で終わらせたいために
このような名前の付け方をしたのです。
CStr(gyo)には、1からカウントアップしますので意図した場所に入ります。
(このようなことを知りたかったのですが、書籍には記述されていませんでしたね)
sqlでrs1![集計区分]が 4は、消費税ですからコンボには入れません。
伝票区分 = 1は、売上だけをいれるということですね。
order byも忘れずに記述してください。
明細行は、ただ単純に同じものが5つあるだけです。
ループをさせない手はありません。
ソースの記述も短くなりますし、何をしているのかもすぐにわかるというものです。
みなさんも、繰り返しを使う場面では、どうすれば簡単に処理をさせられるのか
を考えながら工夫しながら作る込んでみては、どうでしょうか。
次回も売上入力です。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|