【问题标题】:Union query Access on an Interbase DB对 Interbase DB 的联合查询访问
【发布时间】:2012-11-01 12:43:36
【问题描述】:

我正在通过 ODBC (Easysoft) 版本 7 在 Interbase 数据库上执行来自 Access 2010 的查询。一切正常,除非我来触发这样的联合查询:

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 运行此查询时,我得到 ​​p>

"ODBC --调用失败,[Easysoft][Interbase]动态 SQL 错误,SQL 错误 code = -104, 令牌未知 -line1,char 0, ((#-104)"

单独运行选择查询时,它们可以正常工作,但通过 UNION 连接时出现此错误。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: ms-access odbc interbase


    【解决方案1】:

    您没有提及您的查询是直通查询还是在 Access 查询中使用链接的 ODBC 表。

    如果您使用的是普通的 Access 查询

    在普通 Access 查询中使用链接 ODBC 表时,Access 数据引擎将根据需要重写查询,以使其与其他数据库引擎兼容。
    有时,它可能会失败。

    1. 确保每个SELECT 查询都能独立运行并返回正确的数据。

    2. 尝试更简单的UNION 查询,以确保问题来自UNION 关键字本身。

    3. 试试UNION ALL

    4. 尝试使用传递查询。

    如果您使用的是直通查询

    直通查询被逐字发送到 ODBC 引擎,Access 只收集结果而不重写查询本身。

    1. 确保每个SELECT 查询都作为传递查询工作,并独立返回正确的数据。

    2. 确保literal dates are properly formatted for Interbase SQL.
      您使用的对 Access SQL 是正确的,但不同的数据库接受不同的格式。

    3. 使用仅涉及 1 或 3 个字段的简单 SELECT 语句尝试更简单的 UNION 查询。

    4. 试试UNION ALL

    5. 您没有在您的问题中显示它,但以防万一,如果您使用 ORDER BY 语句,则您 have to wrap UNION 查询。

    6. 尝试转换字段的数据类型。可能是 some fields's data are incorrectly interpreted 和联合失败,因为它假定检索到的数据属于不同类型。

    7. 尝试改用标准 Access 查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多