前提・実現したいこと
Access VBAにて売上管理システムの開発を行っています。
クラスで保持しているデータをフォームのテキストボックスに表示する方法について
ご教示頂きたく質問いたします。
該当のソースコード
'#クラス
private 受注番号_ as string
private 商品名_ as string
private 単価_ as long
private 数量_ as long
private 送料_ as long
private 売上日_ as date
private 納品日_ as date
Public Property Get 受注番号() As String
受注番号 = 受注番号_
End Property
Public Property Let 受注番号(ByVal s As String)
受注番号_ = s
End Property
・・・省略・・・
Public Property Get 送料() As long
送料 = 送料_
End Property
Public Property Let 送料(ByVal l As long)
送料_ = l
End Property
Public Property Get 納品日() As date
納品日 = 納品日_
End Property
Public Property Let 納品日(ByVal d As date)
納品日_ = d
End Property
該当のソースコード
'#フォーム
'フォームの設定値をクラスにセット
Dim 売上データ as New cls売上データ
with 売上データ
.受注番号 = フォーム.txt受注番号
.商品名 = フォーム.txt商品名
.単価 = clng(フォーム.txt単価.value)
.数量 = clng(フォーム.txt数量.value)
.送料 = clng(フォーム.txt送料.value)
.売上日 = Nz(フォーム.txt売上日.Value, vbEmpty)
.納品日 = Nz(フォーム.txt納品日.Value, vbEmpty)
end with
処理の流れ
以下のような処理を行います。
<検索>
①DBから取得したデータをクラスの各変数に設定
②クラスの各変数からデータを取得してフォーム上のテキストボックスに設定
<登録・更新>
③テキストボックスの値をクラスの各変数に設定
④クラスの各変数に設定したデータを使ってDBを更新
フォーム上で売上データを作成した時点では「送料」「納品日」は未入力を許容する仕様であるため、
当初はDBも「送料」「納品日」は空白で登録しようしました。
しかし、③のタイミングでデータ未入力場合にエラーが発生するため、「送料」には0を「納品日」には0:00:00を設定しています。
不明点
クラスの変数にデータを設定している時点で空白での登録は不可と考えています。
そのため、取得したデータを表示する時点で「0」「0:00:00」の場合は空白に置換しようと考えました。しかし、この場合、ユーザが意図して送料に「0」を設定した場合も空白で表示されてしまいます。
他に「全ての変数の型をStringにすれば回避できる」のではとも考えましたが、それではDBの型と不一致になるので却下しました。
いい方法があればご教示ください。
回答1件
あなたの回答
tips
プレビュー