■メニュー
1.売上入力の作成(10回目)
===================================================================
こんにちは、ティウェアの高橋です。
売上入力の作成の10回目です。
では、はじめましょう。
------------------------------------------------------------------
1.◎ポイント解説 6 について
ここの処理は、変更、削除の処理となります。
伝票ヘッダー(親データ)を読んだがデータがある。
syorimodeがゼロ(1)場合、変更、削除です。
画面上のエリアにデータを送ります。
新規登録では、日付(tDate)を保持していましたが、処理モードが変わります
ので、日付にはゼロを送ります。
2.◎ポイント解説 7 について
伝票明細の画面へデータを送る処理がintRet = 伝票ディテール_読む()です。
Function 伝票ディテール_読む()
伝票ディテール_読む = False
Set cm2 = New ADODB.Command
Set rs2 = New ADODB.Recordset
Set pm2 = New ADODB.Parameter
pm2.Direction = adParamInput
pm2.Type = adInteger
pm2.Value = Forms(cFormName_M)![伝票区分]
Set pm2_1 = New ADODB.Parameter
pm2_1.Direction = adParamInput
pm2_1.Type = adInteger
pm2_1.Value = Forms(cFormName_M)![伝票番号]
With cm2
.ActiveConnection = cn
.CommandType = adCmdStoredProc
.CommandText = "sp_伝票ディテール_get"
.Parameters.Append pm2
.Parameters.Append pm2_1
End With
Set rs2 = cm2.Execute
If rs2.EOF Then
Else
Call 伝票明細画面表示
伝票ディテール_読む = True
End If
rs2.Close
Set rs2 = Nothing
Set pm2 = Nothing
Set pm2_1 = Nothing
Set cm2 = Nothing
End Function
sp_伝票ディテール_getの記述です。
ポイントはデータを登録した順番に表示させることです。
"order by 伝票明細行"を忘れずに記述して下さい。
ALTER Procedure [sp_伝票ディテール_get]
(
@伝票区分 smallint,
@伝票番号 int
)
As
select * from 伝票ディテール
where (伝票ディテール.伝票区分 = @伝票区分)
and (伝票ディテール.伝票番号 = @伝票番号)
order by 伝票明細行
return
◎ポイント解説 4で伝票ヘッダーを読み込んでいますので
伝票ディテールがないということはありません。
"Call 伝票明細画面表示"を通ります。
まだ、伝票番号のLostFocusの処理ですが、後ほど、説明する登録処理では
伝票明細が1つも存在しない場合は、データを登録しない処理をさせます。
では、Call 伝票明細画面表示は、Subで作成します。
Sub 伝票明細画面表示()
n_gyo = Int(1)
Do
If rs2.EOF = True Then
Exit Do
End If
If n_gyo > Int(10) Then
Exit Do
End If
'明細
If rs2![伝票明細行] <> 99 Then
h_行(n_gyo) = rs2![伝票明細行]
h_商品コード(n_gyo) = rs2![商品コード]
h_商品名(n_gyo) = rs2![商品名]
h_区分名(n_gyo) = rs2![伝票区分番号]
h_数量(n_gyo) = rs2![数量]
h_売上単価(n_gyo) = rs2![売上単価]
h_仕入単価(n_gyo) = rs2![仕入単価]
h_金額(n_gyo) = rs2![金額]
'1:外税、2:内税、3:非課税
If rs2![消費税区分] = 1 Then
h_消費税名(n_gyo) = "外税"
Else
If rs2![消費税区分] = 2 Then
h_消費税名(n_gyo) = "内税"
Else
If rs2![消費税区分] = 3 Then
h_消費税名(n_gyo) = "非課税"
Else
h_消費税名(n_gyo) = ""
End If
End If
End If
h_退避売上単価(n_gyo) = rs2![売上単価]
h_退避仕入単価(n_gyo) = rs2![仕入単価]
Else
'消費税明細
If rs2![伝票明細行] = 99 Then
Forms(cFormName_M)![消費税] = rs2![消費税]
End If
End If
n_gyo = n_gyo + Int(1)
rs2.MoveNext
Loop
bolRet = 明細_表から画面へ(Int(1))
End Sub
伝票の明細行(n_gyo)を10としましたので、データがない場合、10行を超えた
場合は処理から抜けだします。
伝票明細行が99を消費税のデータにしています。
なので、直接画面へ送っています。
99以外の明細データをループさせて読みながら表のデータへ格納するだけ
となります。
登録した状態を再現できればよいだけです。
次回も売上入力です。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|