前提
お世話になります。
アクセスで見積システムを作成しています。
実現したいこと
受注確認というテキストボックスの表示が受注となったとき、進捗状況というコンボボックスの値を受注にしたいです。
発生している問題・エラーメッセージ
エラーは表示されませんが、動作しません。
どう修正すればよいでしょうか?
該当のソースコード
Private Sub 受注確認_AfterUpdate()
If Forms![Frm見積書]![受注確認] = "受注" Then
Forms![Frm見積書]![進捗状況] = "受注"
End If
End Sub
試したこと
コンボボックスをテキストボックスに置き換えてみましたが上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
> エラーは表示されませんが、動作しません。
> Private Sub 受注確認_AfterUpdate()
・そのイベントプロシージャ自体が実行されない。
> If Forms![Frm見積書]![受注確認] = "受注" Then
・イベントプロシージャは実行されるが、上記の比較条件式の結果が False になる。
> Forms![Frm見積書]![進捗状況] = "受注"
・比較条件式の結果は True になるが、[進捗状況]の値が書き換わらない。
のどれに該当するのかについて具体的に明記し、原因を切り分けされることをお奨めします。
ご回答ありがとうございます!
切り分けるとこんなに動作があるのですね…そこまで理解が及んでいませんでした。
確認をしたいのですが、どのように調べれば良いか分かりませんでした。
確認の方法についてご教示頂けませんでしょうか?
よろしくお願いいたします。
1. そのフォームをデザインビューで開き、
テキストボックス[受注確認]を選択する。
2. プロパティシートを開いて[イベント]タブをクリックし、
テキストボックス[受注確認]の[更新後処理]プロパティが
「[イベント プロシージャ]」に設定されていることを確認する。
もし設定されていない場合はリストから選択する。
3. [更新後処理]プロパティの右端にある[...]ボタンをクリックし、
VBE のコードウィンドウ上に以下のイベントプロシージャが
表示されるか否かを確認する。
> Private Sub 受注確認_AfterUpdate()
4. 上記のステートメントにカーソルを移動させ、
F9 キーをクリックするなどしてブレークポイントに設定する。
5. フォームのデザインビューに戻り(必要があれば上書き保存し)、
そのフォームをフォームビューで開き直す。
6. テキストボックス[受注確認]に"受注"という文字列を入力し、
Enter キーをクリックして AfterUpdate イベントを発生させ、
上記 4 の手順で設定したブレークポイントでコードが中断されるか
どうかを確認する。
(もしコードが中断されなかった場合は、そのイベントプロシージャが
呼び出されていないということになる)
7. 正しくコードが中断された場合は、F8 キーをクリックして
以下のステートメントまでステップインする。
> If Forms![Frm見積書]![受注確認] = "受注" Then
8. 続けて F8 キーをクリックし、以下のステートメントに
制御が移るか否かを確認する。
> Forms![Frm見積書]![進捗状況] = "受注"
9. 更に End Sub ステートメントを抜けるまで
(イベントプロシージャの実行が完了するまで)
F8 キーのクリックを繰り返す。
10. フォームウィンドウに戻り、コンボボックス[進捗状況]の値が
どのように表示されているかを確認する。
とりあえず以上のような手順にしたがってデバッグを行なってみて下さい。
また、補足情報としてコンボボックス[進捗状況]の
以下のプロパティの設定値を明記するようにして下さい。
・[値集合タイプ]プロパティ
・[値集合ソース]プロパティ
・[連結列]プロパティ
・[列数]プロパティ
・[列幅]プロパティ
[値集合タイプ]プロパティの設定値が「テーブル/クエリ」であり、
かつ[値集合ソース]プロパティにいずれかのテーブル/クエリの名前が
設定されている場合は、そのテーブル/クエリの定義内容も合わせて
明記された方がよいでしょう。
ありがとうございます!
非常に分かりやすかったです!
6で止まっている状態でした。
受注確認のテキストボックスがif文で条件を満たした場合受注になるように設定しています。
その場合更新後後処理のイベントを起動させることはできないのでしょうか?
受注確認のテキストボックスにif文ではなく、直接入力した場合を試したのですが、そちらは10まで確認出来て全て正常に動作しました。
以下補足を明記します
・値集合タイプ 値リスト
・値集合ソース "見積作成中";"回答待ち";"受注";"失注"
・連結列 1
・列数 1
・列幅 2.54cm
値集合タイプはテーブル/クエリで無い為割愛させて頂きます。
> 6で止まっている状態でした。
・[受注確認]の AfterUpdate イベントが発生し、
先に設定したブレークポイントでコードが中断された。
(想定した通りの状態)
・[受注確認]に対して任意の文字列を入力して Enter キーをクリックしたが、
AfterUpdate イベントが発生しなかった(ので、イベントプロシージャも
呼び出されなかった)
どちらの意味でおっしゃっているのでしょうか。
> 受注確認のテキストボックスがif文で条件を満たした場合受注になるように設定しています。
> 受注確認のテキストボックスにif文ではなく、直接入力した場合を試したのですが、
> そちらは10まで確認出来て全て正常に動作しました。
それは[受注確認]が連結テキストボックスでも非連結テキストボックスでもなく、
[コントロールソース]プロパティに IIf 関数を用いた式が設定された
演算テキストボックスである、ということを意味しているのでしょうか。
・[受注確認]に対して任意の文字列を入力して Enter キーをクリックしたが、
AfterUpdate イベントが発生しなかった(ので、イベントプロシージャも
呼び出されなかった)
こちらの動作でした。
それは[受注確認]が連結テキストボックスでも非連結テキストボックスでもなく、
[コントロールソース]プロパティに IIf 関数を用いた式が設定された
演算テキストボックスである、ということを意味しているのでしょうか。
→そうですね。演算テキストボックスを用いています。
回答1件
あなたの回答
tips
プレビュー