Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8 Pro : Access 2010)
コンボボックスの候補を変化させたい
投稿日時: 20/01/27 10:57:13
投稿者: 滝沢

表形式のフォームでの話ですが、
「種類=いちご」だと「品種」の選択値が「あまおう;とちおとめ」となり、
「種類=ぶどう」だと「品種」の選択値が「巨峰;デラウェア」となるようにしたいです。
 
・「種類」「品種」はコンボボックスです。
・「品種」の値集合ソースは「種類」の値を抽出条件にし、品種が表示されるクエリを指定している。
・「品種」のクリックイベントを「Me.Requery:Me.Refresh」としている。
・フォーム起動後、最初にいちごの品種を確認すると「あまおう・・」と正しく表示される。
 (いちごに限らず、最初は必ず正しい)
・次にぶどうの品種を開くと正しく「巨峰・・」になる時と、なぜか「あまおう・・」になる時がある。
 (「あまおう・・」になる時は、その後どの果物の品種を見ても「あまおう・・」になってしまう)
 
別途「リフレッシュボタン(Me.Refresh)」を作って都度押せば正しい表示になるので、
クリックイベントに入れているのが間違いな気はしていますが、その他に、
「Change」「Beforeupdate」「Enter」なども試しましたがうまくいきません。
また「品種」のクリックイベントが「なし」または「Me.Refresh」のみだと、必ず正しく無い方の動きになります。
 
どのようにすればよいでしょうか。
よろしくお願い致します。

回答
投稿日時: 20/01/27 12:24:19
投稿者: よろずや

どのイベントを使えばいいのか。
 
Option Compare Database
Option Explicit
 
Private Sub Form_Current()
    Me!品種.Requery
End Sub
 
Private Sub 種類_AfterUpdate()
    Me!品種.Requery
    Me!品種.Value = Null
End Sub

投稿日時: 20/01/27 14:23:34
投稿者: 滝沢

よろずや様
コメントありがとうございます。
 
よくわからないまま、とりあえずそのまま貼ったらうまく動いてしまいました!
ありがとうざいます!
その後調べて、なんとなく理解できた気がします。
 
Me!品種.Value = Null
色々試してたら↑この1行は無くても動いていそうですが、どの様な効果があるのでしょうか?
 
よろしければご教授いただきたいです。
よろしくお願い致します。

回答
投稿日時: 20/01/27 17:00:35
投稿者: よろずや

>Me!品種.Value = Null
 
これは、種類を「いちご」から「ぶどう」に変更したときに、品種が「あまおう」のまま残ってしまうのを防いでいます。

投稿日時: 20/01/27 20:52:07
投稿者: 滝沢

よろずや様
コメントありがとうございます。
 
>これは、種類を「いちご」から「ぶどう」に変更したときに、品種が「あまおう」のまま残ってしまうのを防いでいます。
なるほど、同じレコード上で「種類」を変更した場合のためということですね。
「種類」は一度指定したら修正できないような仕組みにしてあるので
今回はこの1行が無くても影響が無かったということですね。
 
非常に助かりました。
ありがとうざいます。