OldValueプロパティプロパティ
OldValue
のみバインドされたフィールド上で動作します。 documentationは言う:
をOldValueプロパティプロパティは、バインドコントロールから未編集のデータが含まれており、すべてのビューで読み取り専用です。
あなたは非連結コントロールの古い値を追跡する必要がある場合は、コードから手動でそれを行うことができます。例えば、あなたの初期をロードするために、フォームのCurrent
またはLoad
イベントやコンボボックスのBeforeUpdate
イベントを使用することができますフォームのVBAモジュールで定義されている変数に値を設定します。
A(潜在的に)より良いアプローチ
あなたはフィールドが別のコンボに表示されたかどうかを調べるために、専用のブール列を維持する必要はありません。
あなたForm1
に3つのコンボボックスを持っていると仮定すると::Combo1
、Combo2
、Combo3
はのは、具体的な例を使ってみましょう。
それぞれの国のリストを表示し、他のコンボボックスで既に選択した国をリストから除外したいとします。
へ
Combo1
の
RowSource
を設定
:
へ
Combo2
の
RowSource
を設定
SELECT Country.ID,
Country.CountryName
FROM Country
WHERE (Country.ID Not In ([Forms]![Form1]![Combo2],
[Forms]![Form1]![Combo3]))
ORDER BY Country.[CountryName];
:
Combo3
の
RowSource
を設定
SELECT Country.ID,
Country.CountryName
FROM Country
WHERE (Country.ID Not In ([Forms]![Form1]![Combo1],
[Forms]![Form1]![Combo3]))
ORDER BY Country.[CountryName];
へ:
SELECT Country.ID,
Country.CountryName
FROM Country
WHERE (Country.ID Not In ([Forms]![Form1]![Combo1],
[Forms]![Form1]![Combo2]))
ORDER BY Country.[CountryName];
は、その後、必要に応じてその内容を再クエリするために、各コンボボックスのGotFocusイベントを設定します。
Private Sub Combo1_GotFocus()
Combo1.Requery
End Sub
Private Sub Combo2_GotFocus()
Combo2.Requery
End Sub
Private Sub Combo3_GotFocus()
Combo3.Requery
End Sub
は私のコンボボックスならば、私は完全に確認されませんでした、最も有用だったこと、本当にありがとうございました縛られているかどうか。ブール値フィールドについては、2番目の方法を試しましたが、WHEREステートメントでどこが間違っていたかを今すぐ確認できます。ありがとうヒープ! :) – user805953
それは魅力のように動作します!ありがとうございます! – user805953