1

ODBC(Easysoft)ver.7を介してInterbaseデータベースでAccess2010からクエリを実行しています。次のようなUnionクエリを実行する場合を除いて、すべて正常に機能します。

SELECT TRIP.TRIPDATE, RESERVATION.BOOKINGREF, RESERVATION.LEADNAME, TRIP.DRIVERID, RESERVATION.STATUS, RESERVATION.DATECANCELLED, TRIP.TRANSPORTTYPEID
FROM TRIP INNER JOIN RESERVATION ON TRIP.TRIPID = RESERVATION.ARRIVALTRIPID
WHERE (((TRIP.TRIPDATE) Between #2/1/2012# And #2/29/2012#) AND ((TRIP.DRIVERID)=2) AND ((RESERVATION.DATECANCELLED) Is Null) AND ((TRIP.TRANSPORTTYPEID)=12))


UNION 

SELECT TRIP.TRIPDATE, RESERVATION.BOOKINGREF, RESERVATION.LEADNAME, TRIP.DRIVERID, RESERVATION.STATUS, RESERVATION.DATECANCELLED, TRIP.TRANSPORTTYPEID
FROM TRIP INNER JOIN RESERVATION ON TRIP.TRIPID = RESERVATION.DEPARTURETRIPID
WHERE (((TRIP.TRIPDATE) Between #2/1/2012# And #2/29/2012#) AND ((TRIP.DRIVERID)=2) AND ((RESERVATION.DATECANCELLED) Is Null) AND ((TRIP.TRANSPORTTYPEID)=12));

Accessからこのクエリを実行すると、次のようになります。

"ODBC --callに失敗しました、[Easysoft] [Interbase]動的SQLエラー、SQLエラーコード= -104、トークン不明-line1、char 0、((#-104)"

selectクエリを単独で実行すると正常に機能しますが、UNIONを介して参加するとこのエラーが発生します。

どんな助けでもいただければ幸いです。

ありがとう

4

1 に答える 1

2

クエリがパススルークエリであるか、AccessクエリでリンクされたODBCテーブルを使用しているかについては言及しません。

通常のAccessクエリを使用している場合

通常のアクセスクエリ

通常のAccessクエリでリンクされたODBCテーブルを使用する場合、Accessデータエンジンは必要に応じてクエリを書き換えて、他のデータベースエンジンと互換性を持たせます。
ただし、失敗することもあります。

  1. SELECTクエリが機能し、正しいデータを個別に返すことを確認してください。

  2. より簡単なUNIONクエリを試して、問題がUNIONキーワード自体に起因することを確認してください。

  3. 試すUNION ALL

  4. 代わりにパススルークエリを使用してみてください。

パススルークエリを使用している場合

パススルークエリ

パススルークエリはそのままODBCエンジンに送信され、Accessはクエリ自体を書き換えることなく結果を収集するだけです。

  1. SELECTクエリがパススルークエリとして機能し、正しいデータを個別に返すことを確認してください。

  2. リテラルの日付がInterbaseSQL用に適切にフォーマットされていることを確認してください。
    使用するものはAccessSQLに適していますが、データベースが異なれば、受け入れられる形式も異なります。

  3. 1つまたは3つのフィールドのみを含むUNION単純なステートメントを使用して、より単純なクエリを試してください。SELECT

  4. 試してみてくださいUNION ALL

  5. 質問には表示しませんが、念のため、ORDER BYステートメントを使用した場合は、クエリをラップする必要があります。UNION

  6. フィールドのデータ型をキャストしてみてください。一部のフィールドのデータが誤って解釈され、取得されたデータが異なるタイプであると想定しているためにユニオンが失敗する可能性があります。

  7. 代わりに、標準のAccessクエリを使用してみてください。

于 2012-11-02T01:41:45.797 に答える