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

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



2008/01/08配信
 

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




 

 ■メニュー

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

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


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


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