プロが教える店舗&オフィスのセキュリティ対策術

現在、ACCESS2013で在庫管理システムを制作しています。
 商品を検品すると仮定し、バーコードリーダーでバーコードを読み取り、バーコードを通した分だけ個数を表示したいのですがうまく出来ません。
 イメージとしては、入荷予定の商品にはすでにバーコード(13桁JAN)が付いており、Aが5個入荷、Bが7個入荷の際、きちんと発注した商品が納品されているか確認するため、ひとつずつバーコードをスキャンし、通した分だけの個数を画面に表示したいのですがそれは可能でしょうか?
 また、Aを3個スキャンし、間にBを2個スキャンして、残りのAを2個スキャンしても、結果として、同じセル内に5個と表示することは可能でしょうか?
 あまりACCESSに詳しくないので的外れな質問なら申し訳ありません。上記の方法が使えないなら、別のカウント方法を教えてもらえれば助かります。

A 回答 (7件)

失礼しました。


先程のは旧在庫数が更新されていません。

修正したのを送ります。

入力画面とvbaのコードです。コードは下記です。
Option Compare Database
Dim db As DAO.Database
Dim strsql

Private Sub Form_BeforeUpdate(Cancel As Integer)
Set db = CurrentDb
If [旧在庫数] = 0 Then
[入庫予定数] = [数量]
strsql = "insert into 在庫マスター(商品コード,在庫数) values('" & [商品コード] & "'," & [数量] & ");"
Debug.Print strsql
db.Execute (strsql)
Else
[入庫予定数] = [旧在庫数] + [数量]
strsql = "UPDATE 在庫マスター SET 在庫マスター.在庫数 = " & [入庫予定数] & " " & _
"WHERE (((在庫マスター.商品コード)='" & [商品コード] & "'));"
Debug.Print strsql
db.Execute (strsql)
End If

End Sub

Private Sub 商品コード_BeforeUpdate(Cancel As Integer)
[旧在庫数] = Nz(DLookup("在庫数", "在庫マスター", "商品コード='" & [商品コード] & "'"))
End Sub
「ACCESS2013でバーコードリーダー」の回答画像7
    • good
    • 0
この回答へのお礼

返信遅くなり申し訳ありません。
画像や丁寧な説明のおかげでとても参考になりました。
あなたのおかげで何とか形になりそうです。
初心者の私の幼稚な質問に答えていただき本当にありがとうございます。

お礼日時:2017/01/05 09:18

多分、今回のが正解と思いますが。



先程の単票からデータシートに変更しました。
画像を添付します。

変更点は、旧在庫数と入庫予定数を追加しました。

商品コードと数量を入力してフォームを更新すると[旧在庫数]に在庫マ
スターの在庫数を、[入庫予定数]は、[旧在庫数]に伝票の数量を加算し
た値を代入します。

結果として[入庫予定数]が常に最新の現在庫を示します。

下記に変更したvbaのコードを示します。
確認願います。


Option Compare Database
Dim db As DAO.Database
Dim strsql

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim 旧在庫数

Set db = CurrentDb
旧在庫数 = DLookup("在庫数", "在庫マスター", "商品コード='" & [商品コード] & "'")
If IsNull(旧在庫数) = True Then
[旧在庫数] = 0
[入庫予定数] = [数量]
strsql = "insert into 在庫マスター(商品コード,在庫数) values('" & [商品コード] & "'," & [数量] & ");"
Debug.Print strsql
db.Execute (strsql)
Else
[旧在庫数] = 旧在庫数
[入庫予定数] = [旧在庫数] + [数量]
strsql = "UPDATE 在庫マスター SET 在庫マスター.在庫数 = " & [入庫予定数] & " " & _
"WHERE (((在庫マスター.商品コード)='" & [商品コード] & "'));"
Debug.Print strsql
db.Execute (strsql)
End If

End Sub
「ACCESS2013でバーコードリーダー」の回答画像6
    • good
    • 0

先ほどのは一旦保留にします。


再度回答します。
    • good
    • 0

前回の続きで画像は一つしか送る事が出来ないみたいで


リレーションシップの画像が遅れませんでしたので
送ります。

確認願います。
「ACCESS2013でバーコードリーダー」の回答画像4
    • good
    • 0

似た様な質問は結構有りますが。

要は、リアルタイムに商品コードの現
在庫を知りたいと言う事ですよね。

出来るにはは出来ますが。初心者にはかなりハードルが高いと思います
が。一応手元にサンプルを作りましたが。これを見て分かるので有れ
ば。ここから先はそんなには難しくは有リません。

と言うのはこれは動くには動きますが。操作性はそんなに良くはありま
せん。要は、バーコードでスキャンして1件のデータ入力をした時に瞬
時に在庫数の確認は取れますが。

すぐに次の行に移動しますのでデータが消えます。前の行に移るとその
時はきちんと最新の在庫数が表示されます。これは、常に在庫マスター
の在庫数を入庫伝票の商品コードにリンクさせているためです。

ですから、今入力している前の伝票の商品コードを非連結のテキスト
ボックスで表示をしてそのテキストボックスとリンクさせれば目的は達
成出来ますが。それは、それでかなりにそれなりの開発コストがかかり
ます。

私は、そこまでは作りませんでしたが。そんな事をしなくても直前の伝
票に戻せば良いだけの話ですから。簡単に操作をしようとすると内部で
はそれなりのかなりの複雑な事をしないといけなくなります。

果たして、そこまでして時間を詰める必要が有るのかは考え物です。
出来たサンプルの画像を添付します。リレーションシップと入力をして
いる時の画像です。

それと、入庫処理での更新前のvbaのコードを下記に示します。
Option Compare Database
Dim db As DAO.Database


Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim 合計 As Variant
Dim strsql

Set db = CurrentDb
合計 = DLookup("在庫数", "在庫マスター", "商品コード='" & [商品コード] & "'")

If IsNull(合計) = True Then
strsql = "insert into 在庫マスター(商品コード,在庫数) values('" & [商品コード] & "'," & [数量] & ");"
db.Execute (strsql)
Else
合計 = 合計 + [数量]
strsql = "UPDATE 在庫マスター SET 在庫マスター.在庫数 = " & 合計 & " " & _
"WHERE (((在庫マスター.商品コード)='" & [商品コード] & "'));"
db.Execute (strsql)
End If
End Sub

かなりに初めての人に取っては難しい内容となっています。
「ACCESS2013でバーコードリーダー」の回答画像3
    • good
    • 1

読み取った製品の一覧を表示するクエリを作ってそれを画面に表示するだけで良いような気がする…。

    • good
    • 0

>  商品を検品すると仮定し、バーコードリーダーでバーコードを読み取り、バーコードを通した分だけ個数を表示したいのですがうまく出来ません。



具体的に何がどううまくいかないのでしょう?


> ひとつずつバーコードをスキャンし、通した分だけの個数を画面に表示したいのですがそれは可能でしょうか?

普通出来るでしょう。
バーコードの値を読み込むたびに、プログラム内で「読み込んだ値から製品を判別し、該当商品の個数を1加算する」だけですから。。。(^^;


>  また、Aを3個スキャンし、間にBを2個スキャンして、残りのAを2個スキャンしても、結果として、同じセル内に5個と表示することは可能でしょうか?

上に書いた処理を行えば普通そうなるでしょう。読み込むたびに処理するのですから何をどういう順番で読み込むかは関係ないです。。。(^^;;


>  あまりACCESSに詳しくないので的外れな質問なら申し訳ありません。上記の方法が使えないなら、別のカウント方法を教えてもらえれば助かります。

えっと。。。
フォーム上のテキストボックスに入力カーソルがある状態でバーコードリーダーでバーコードを読み込むと、読み込んだ値がテキストボックスに入りませんか?
その値をどう処理するかはVBAで作成するマクロ次第ということで。。。(^^;;;

バーコードリーダーの説明書等をちゃんと読まれましたか?
あと、Googleなどで「ACCESS VBA バーコードリーダー」といった適当なキーワードで検索するとサンプルなどが簡単に見つかるようにも思います。

参考まで。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています