1

クエリがあり、条件をコンボ ボックスに表示する必要があります。コンボ ボックスに次の行ソースを入力して、"すべて" オプションを追加しました。

SELECT id, team FROM tblTeams ORDER BY team UNION SELECT "*", "<ALL>" FROM tblTeams;

チームを選択した場合、クエリは正常に実行されます (条件は ID に対してであり、コンボ ボックスのバインドされた列は 1 です)。しかし、<ALL> を選択すると、次のような警告が表示されます。変数への式。」

フィールドは整数なので、* が問題を引き起こしていると思っていました。">0" に変更してみましたが、同じエラーが発生しました。クエリを操作するために VBA を使用する必要がないように、これを機能させるための提案 (私はそれを行っても問題ありませんが、そうしない方がクリーンだと思います。それが誤った考えである場合はお知らせください) ?

4

2 に答える 2

2

tblTeams の 'id' フィールドが数値の場合、'*' や '>0' などの文字列を使用しようとすると、UNION によって結合されるときにエラーが発生します。

必要に応じて、以下のようなクエリを使用することをお勧めします。ここでは、-1 を「id」として使用するか、その他の種類の一意の数値「id」を使用します。

「id」フィールドがすべて正の数であると仮定します。次に、負の数をテストして、すべてのレコードを返す必要があるかどうかを判断できます。

SELECT id, team FROM tblTeams 
UNION 
SELECT -1 as id, "<ALL>" as team FROM tblTeams 
ORDER BY team

または、「id」フィールドを文字列にキャストして、「*」や「>0」のような文字列にすることもできます。重要なことは、フィールドが同じデータ型であることです。

SELECT Cstr(id), team FROM tblTeams
UNION
SELECT "*" as id, "<All>" as team from tblTeams
ORDER BY team
于 2012-06-29T16:18:05.207 に答える
1

フォームをクエリの基準行として参照したいようです。

いいねを使ってみてください。これは私のために働く:

SELECT Table1.ID, Table1.Team
FROM Table1
WHERE Table1.ID Like [Forms]![Table1]![MyCombo]

これにはコードは必要ありません。数値が選択されている場合は、その数値が返されます。[すべて] が選択されている場合は、null 以外のすべてのレコードが返されます。

于 2012-06-29T16:52:12.383 に答える