0

Accessに2つのクエリがあります。どちらも作成するのはやや厄介ですが、プロセスの最後には、同じデータ型の同じ数のフィールドがあります。これらは両方とも独立して機能し、期待される結果を生み出します。

不運にも、

SELECT * 
FROM [qry vaBaseQuery-S2]
UNION ALL SELECT *
FROM [qry BaseQuery];

2つの「nullの無効な使用」エラーを次々にスローします。以前は問題なくnull値を使用してAccess2000クエリでユニオンを使用したことがあるので、少し困惑しています。ここで何が起こっているのか誰かが提案できますか?

関連する可能性のある詳細情報:

  • どちらのクエリにも空白行はありません

  • UNION SELECT *(ALLなし)は同じエラーを1回だけスローしますか?!

編集:

  • *の代わりにフィールド名を使用しても役に立ちません

Edit2:

  • とにかくクエリがフォームから実行されるmaketableクエリになることを考えると、2つの別々のクエリ(1つはmake tableと1つはappend)として残し、2つを順番にトリガーします。以下の答えを考えると、Accessが何に反対しているのかを実際に理解しようとするよりもはるかに少ない労力で聞こえます。
4

3 に答える 3

1

ほとんどの場合、ソース クエリに条件付き (Iif()) データ変換 (CStr() など) が含まれています。Access は、個別のクエリをユニオンとは異なる方法で最適化する場合があります。条件部分を非常に奇妙な順序で評価することがあります。

次の単純化されたケースのように:

Select Iif(int_fld is null, '0', CStr(int_fld)) As Something

これにより、「無効な null の使用」がスローされるかどうかがスローされる場合があります - 評価順序によって異なります。

編集:正しい式を書き忘れましたが、このエラーは発生しません:

Select CStr(Iif(int_fld is null, 0, int_fld)) As Something
于 2009-06-08T12:29:52.213 に答える
0

編集された質問で述べたように:クエリはとにかくフォームから実行されるmake tableクエリになるので、2つの別々のクエリ(1つはmake tableと1つはappend)として残し、2つを順番にトリガーします。

于 2009-06-09T12:01:54.167 に答える