ここから本文です

Microsoft Office Accessのフォーム上で複数行入力するフォームを作成しました。

kaz********さん

2019/3/116:59:07

Microsoft Office Accessのフォーム上で複数行入力するフォームを作成しました。

上から出庫数を入力していくのですが、在庫数-出庫数がマイナスになった場合に1を表示する(テキストA:【iif([在庫数]-[出庫数]<0,1)】)し、フォームフッタに【sum(iif([在庫数]-[出庫数]<0,1))】としたテキストボックス(テキスト名【マイナスフラグ】)を配置しています。
ボタンクリック時にマクロでif([Forms]![フォーム名]![マイナスフラグ]>0 の時に
マクロをとめるようにしてあります。

【マイナスフラグ】が>0であってもマクロが止まる時と走ってしまう場合があるのですが理由は何だかわかりますでしょうか?数量計算が1桁の場合だと止まる傾向があります。
上記マクロを動かす前に再クエリを入れてあります。

最終的に[在庫数]-[出庫数]がマイナスになった行が1行でもあればマクロを止めたいというのが目標です。
あまりVBAを使ったやり方をしたくはないのですが他にいい方法ありますでしょうか?


よろしくお願い致します

閲覧数:
55
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ony********さん

2019/3/413:48:22

■推測できる原因......Sum()の結果がNull

iif([在庫数]-[出庫数]<0,1)ではElseの条件時にはNullになる

これをSumで演算しても、Nullが含まれる場合あ、結果がNullとなることから、
if([Forms]![フォーム名]![マイナスフラグ]>0 が働かない。



■間違っていると思われる計算(式)

在庫数から「出庫数の合計」を引いてマイナスになった場合ということであれば、

[在庫数] - Sum([出庫数]) < 0

で判断しないといけないと思います。

なので、毎行 [在庫数]-[出庫数]を計算しても意味がなく、違った結果になります。



たぶん、頭の中でイメージされているのは、

1行目 [在庫数] - [出庫数] = [差し引き後の在庫数1]
2行目 [差し引き後の在庫数1] - [出庫数] = [差し引き後の在庫数2]
3行目 [差し引き後の在庫数2] - [出庫数] = [差し引き後の在庫数3]
:

という計算で、差し引き後の在庫数がマイナスになる場合ということだと思います。
こうなると、その行単位での計算すること自体が間違いになります。

この場合は、VBAによるレコードセット処理で、前の行の在庫数を次の行で使うというような計算が必要になります。

  • 質問者

    kaz********さん

    2019/3/510:34:27

    書き忘れていて申し訳ありません。iif([在庫数]-[出庫数]<0,1)ではなくiif([在庫数]-[出庫数]<0,1,0)としております。
    また、行単位で重複することはなく、各行の在庫数-出庫数で1行でもマイナスになった場合に最終処理をするマクロをとめたいと考えています。
    何か他にいい方法ありますでしょうか?

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

tad********さん

2019/3/216:21:47

これだけでは分からないのですが、再クエリが終わるまで次の動作を止めてみても解決しませんか。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

typ********さん

2019/3/117:24:00

商品A 在庫数:10
明細1.商品A 出庫数:6 マイナスフラグ:0
明細2.商品A 出庫数:6 マイナスフラグ:0

明細1、明細2の1行ずつを見た時はマイナスフラグが立たないけど
処理をすべて行うとマイナスになるという作りではないですよね?

上記の理由でない場合は、仕様は問題なくても実装に問題がある可能性があります。
どういう実装にしているのかコードを書いた方が原因が分かるかも知れません。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる