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

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



2007/12/18配信
 

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




 

 ■メニュー

   1.売上入力の作成(9回目)

===================================================================

 こんにちは、ティウェアの高橋です。

 売上入力の作成の9回目です。

 では、はじめましょう。

------------------------------------------------------------------


No.119のメルマガを見ながら確認してください。

1.◎ポイント解説 2 について

伝票番号のNullチェックを行います。

伝票番号のテキスト欄が、Nullまたは空白であれば、新規登録をしていると
判断してコントロールマスタの売上伝票番号を+1カウントアップ
して伝票番号へ送っています。

それが、[伝票番号] = コントロールマスタ_伝票番号()となります。

Nullまたは空白でなければ、伝票番号が入っているとみなします。
Format$(Forms(cFormName_M) ![伝票番号], "00000000")で伝票番号に
送ります。

では、コントロールマスタ_伝票番号()を解説します。

FunctionでAs Longを指定します。

Function コントロールマスタ_伝票番号() As Long

cn.Errors.Clear

On Error GoTo コントロールマスタ_伝票番号_err

cn.BeginTrans

Set rs1 = New ADODB.Recordset
rs1.Open "コントロールマスタ", cn, adOpenDynamic, adLockOptimistic

If rs1.BOF Then
MsgBox "コントロールマスタが登録されていません。処理を終了して下さい。" _
, vbCritical, "警告"
Exit Function
Else
rs1.Fields(1) = rs1.Fields(1) + 1
LngNo = rs1.Fields(1)
rs1.Update
End If

cn.CommitTrans

rs1.Close
Set rs1 = Nothing

コントロールマスタ_伝票番号 = LngNo

Exit Function

コントロールマスタ_伝票番号_err:

cn.RollbackTrans

MsgBox "伝票作成が出来ません。少し待ってからやり直してください。" _
, vbExclamation, "注意"

End Function

コントロールマスタ_伝票番号()はLong型ですから[伝票番号]に送ります。

rs1.Fields(1)は売上伝票番号となります。
rs1.Fieldsは、ゼロ(0)から始まります。
コントロールコードがrs1.Fields(0)となります。

rs1.Fields(1)を+1してUpdateして完了です。

--------------------------------------------------------------------

2.◎ポイント解説 3 について

伝票ヘッダー読み込みをします。

Forms(cFormName_M)![伝票区分]には、1(売上伝票)が入ります。
直接、1と入れていても構いません。

Forms(cFormName_M)![伝票番号]は、新規伝票であれば先程カウントアップ
した番号が入っています。
変更または削除なら、その売上伝票番号が入っています。

--------------------------------------------------------------------

3.◎ポイント解説 4 について

sp_伝票ヘッダー_getのストアドは、下記の通りです。

ALTER Procedure [sp_伝票ヘッダー_get]
(
@伝票区分 smallint,
@伝票番号 int
)
As
select * from 伝票ヘッダー
where (伝票区分 = @伝票区分) and (伝票番号 = @伝票番号)
return

これは、メンテナンスで何度も同じパターンを説明しましたので省略します。

--------------------------------------------------------------------

3.◎ポイント解説 5 について

ここの処理は、新規登録の処理となります。

伝票ヘッダー(親データ)を読んだがデータがない、新規登録となります。
syorimodeがゼロ(0)場合、新規登録です。

売上伝票を連続して入力する場合、日付の近い伝票を何枚も入力します。
そうすると登録ボタンを押したあとに日付を初期化(クリア)するのは
入力スピードを落す原因となります。

そこで、新規登録のときに限り、前回入力された日付を覚えておき
それを日付のテキストに送る処理を施します。

それが、tDate = Dateとなりそれぞれの項目に送っています。

Forms(cFormName_M)![伝票年] = Year(tDate)
Forms(cFormName_M)![伝票月] = Month(tDate)
Forms(cFormName_M)![伝票日] = Day(tDate)

そして伝票明細を画面に送ります。


明細_表から画面への処理は、下記のとおりです。

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)
Forms(cFormName_M).Controls("金額_" & CStr(gyo)) = h_金額(gyosu)
Forms(cFormName_M).Controls("消費税名_" & CStr(gyo)) = h_消費税名(gyosu)

gyosu = Int(gyosu) + Int(1)

Next

End Function

オペレータが、入力しやすいように考えながら作りこみをして下さい。
直接、オペレータに聞きながら、ここはどのようにカーソルが動けばよいのかを
確かめながら作るのが一番よい方法です。

そうすれば、使い勝手のよいシステムが出来ます。

最終的に使うのは、オペレータの方々です。
それを忘れないようにシステムを作っていきましょう!

 次回も売上入力です。

 みなさん、よいお年をお迎えください。 


===================================================================

                ◆ 実践テクニック、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.