1

MSAccess2010でレンガの壁にぶつかったようです。

私が何を達成しようとしているのかを説明するのは難しいので、基本的な例から始めましょう。AとBの2つのテーブルがあるとしましょう。

A:

ID     Price    Item
1      5        ABB
2      4        ATV
3      2        CCC

B:

ID     Price limit    Chosen item
1      3    
2      4
3      5
4      6

私が達成しようとしているのは、テーブルAからBへのリレーションを作成することです。テーブルBの各レコードには、テーブルAレコードが関連付けられている必要があります。これは、テーブルAから選択したレコードの価格がテーブルBレコードに課せられた価格制限よりも低くなるように、テーブルAフィールド「価格」およびテーブルBフィールド「価格制限」に基づいている必要があります。

つまり、最初のテーブルBレコードの可能なテーブルAレコードはCCCのみであり、2番目のテーブルはATVとCCCであり、3番目と4番目のレコードはすべて有効です。

アクセスが制限されている知識に関する限り、「選択したアイテム」フィールドの行のソースプロパティにクエリを作成する必要があると考えました。自分で書いてみましたが、うまくいきませんでした。これが私が思いついたものです:

SELECT [Table A].[ID], [Table A].[Item] 
FROM [Table A] 
WHERE [Table A].[Val] > [Val]; 

しかし、それは機能しません。誰かが私を正しい方向に向けてくれませんか?

4

1 に答える 1

2

ドロップダウンボックスに関連するアイテムのみが含まれているようなものが必要だと思います。

ここに画像の説明を入力してください

これを設定するには、コンボの行ソースを次のように設定します。

select item from ta where price<=forms!tb!pricelimit

そして、少しコードを追加します

Private Sub Form_Current()
   Me.Chosenitem.Requery
End Sub

このメソッドには警告が付いていることに注意してください。連続フォームでこのようなドロップダウンを使用すると、現在の行以外の行のデータの表示が大幅に混乱する可能性があります。この場合、バインドされた列と表示されるデータは同じであるため、表示は正常です。ただし、選択が次の場合:

 Row Source: select id,item from ta where price<=forms!tb!pricelimit
 Bound Column: 1
 Column Widths : 0cm;2cm

現在のレコードを選択すると、他の行のIDを含まないリストが生成された場合、データがレコードから消えるように見えます。つまり、現在の行の選択でID 1と2が返され、次の行ですでにID 3が選択されている場合、次の行のコンボは空になり、以下同様にページの下に表示されます。

于 2013-02-23T23:17:51.650 に答える