2011-06-20 9 views
1

私はAccess 2000を使用しています。2列のテーブルを持ち、1列に26の​​名前を格納し、2列にブール値を格納します(現在その名前が8の1/8に表示されているかどうかを確認するために使用されます)。コンボボックス)。コンボボックスの値が、私はその値が他のコンボボックスのリストから削除したい選択したので、それは重複を排除しているAccess 2000コンボボックスoldvalueプロパティ

TableColumns: 
ColumnName(Text) & 
NameSelected(Yes/No) 

。私はコンボボックスに値を入力するクエリを持っており、NameSelectedがすべてfalseであるすべての名前を選択します。

問題:
私は多くの異なるイベントからcombobox.oldvalueにアクセスしようとしましたが、常に新しい値を保持しているようです。

何か間違っていますか?もしそうなら、何のアイディアですか?

これを行うには良い方法がありますか?私は2番目の列を持っていないだけで、他のコントロールの選択されたテキストと等しくないテーブルからすべての名前を選択する各コンボボックスのクエリを持っているが、これは何も表示されませんでした。

答えて

2

OldValueプロパティプロパティ

OldValueのみバインドされたフィールド上で動作します。 documentationは言う:

をOldValueプロパティプロパティは、バインドコントロールから未編集のデータが含まれており、すべてのビューで読み取り専用です。

あなたは非連結コントロールの古い値を追跡する必要がある場合は、コードから手動でそれを行うことができます。例えば、あなたの初期をロードするために、フォームのCurrentまたはLoadイベントやコンボボックスのBeforeUpdateイベントを使用することができますフォームのVBAモジュールで定義されている変数に値を設定します。

A(潜在的に)より良いアプローチ

あなたはフィールドが別のコンボに表示されたかどうかを調べるために、専用のブール列を維持する必要はありません。

あなたForm1に3つのコンボボックスを持っていると仮定すると::Combo1Combo2Combo3

はのは、具体的な例を使ってみましょう。

それぞれの国のリストを表示し、他のコンボボックスで既に選択した国をリストから除外したいとします。

Combo1RowSourceを設定

Combo2RowSourceを設定
SELECT Country.ID, 
     Country.CountryName 
    FROM Country 
    WHERE (Country.ID Not In ([Forms]![Form1]![Combo2], 
          [Forms]![Form1]![Combo3])) 
    ORDER BY Country.[CountryName]; 

Combo3RowSourceを設定
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 
+0

は私のコンボボックスならば、私は完全に確認されませんでした、最も有用だったこと、本当にありがとうございました縛られているかどうか。ブール値フィールドについては、2番目の方法を試しましたが、WHEREステートメントでどこが間違っていたかを今すぐ確認できます。ありがとうヒープ! :) – user805953

+0

それは魅力のように動作します!ありがとうございます! – user805953

関連する問題