为什么有些 SELECT 语句打开 RecordSet,而其他 return "Error 13, Type Mismatch"
Why some SELECT statements open a RecordSet, while others return "Error 13, Type Mismatch"
首先,让我声明这个问题是针对 VBA 在 Access 应用程序中的。现在,这是一个更长查询的子查询,但我想在尝试构建更大的查询之前了解基础知识。
出于某种原因,以下代码行成功打开了一个 DAO.Recordset,我可以循环遍历它,对其执行操作:
Dim testRS As DAO.Recordset
testQuery = "SELECT * FROM midsecurity_city
INNER JOIN itincity ON midsecurity_city.cityid4security = itincity.city_id;"
Set testRS = CurrentDb.OpenRecordset(testQuery)
这是比较 BIGINT 类型的两列,跨越两个不同模式中的两个不同表。
现在,下面还比较了两个不同表中的两个 VARCHAR 类型的列,它们也包含在两个不同的模式中。我包含了所有这些详细信息,因为我是 Access 的新手,并且不确定这些信息是否对我的问题有影响。对于它的价值,我正在研究 Postgres 数据库。
这个查询给了我一个 "Error 13: Type Mismatch" 消息然后取消执行。
Dim testRS As DAO.Recordset
testQuery = "SELECT * FROM itincity INNER JOIN itinerary ON itincity.city =
itinerary.city;"
Set testRS = CurrentDb.OpenRecordset(testQuery)
我的假设是 Access 真的讨厌 JOINS 涉及除两列的 INTEGER 比较之外的任何东西吗?我在这方面接近准确吗?如果是这样,有没有办法绕过这个限制,或者是否有另一种方法可以完全解决这样的问题?任何关于 JOINS 如何在 Access 中工作的教育 material 也将受到赞赏,因为它们似乎不像 运行 pgAdmin 中的查询那样遵循相同的规则。
感谢您的帮助。我已经研究这个问题大约一个星期了。
好吧,"solution" 似乎如我所料。 Access 只是讨厌涉及基于文本的列的 JOINS。作为变通方法,我向似乎最依赖另一个的 table 添加了一个外键 (FK)。此 FK 列指定为类型 "BIGINT"。现在,我使用大量 INNER JOINS(所有这些现在也都使用 bigints)的大量查询可以轻松工作。
但是,我仍然很好奇为什么 Access 会拒绝文本 JOINS...
看起来应该是完全可以接受的table。
首先,让我声明这个问题是针对 VBA 在 Access 应用程序中的。现在,这是一个更长查询的子查询,但我想在尝试构建更大的查询之前了解基础知识。
出于某种原因,以下代码行成功打开了一个 DAO.Recordset,我可以循环遍历它,对其执行操作:
Dim testRS As DAO.Recordset
testQuery = "SELECT * FROM midsecurity_city
INNER JOIN itincity ON midsecurity_city.cityid4security = itincity.city_id;"
Set testRS = CurrentDb.OpenRecordset(testQuery)
这是比较 BIGINT 类型的两列,跨越两个不同模式中的两个不同表。
现在,下面还比较了两个不同表中的两个 VARCHAR 类型的列,它们也包含在两个不同的模式中。我包含了所有这些详细信息,因为我是 Access 的新手,并且不确定这些信息是否对我的问题有影响。对于它的价值,我正在研究 Postgres 数据库。
这个查询给了我一个 "Error 13: Type Mismatch" 消息然后取消执行。
Dim testRS As DAO.Recordset
testQuery = "SELECT * FROM itincity INNER JOIN itinerary ON itincity.city =
itinerary.city;"
Set testRS = CurrentDb.OpenRecordset(testQuery)
我的假设是 Access 真的讨厌 JOINS 涉及除两列的 INTEGER 比较之外的任何东西吗?我在这方面接近准确吗?如果是这样,有没有办法绕过这个限制,或者是否有另一种方法可以完全解决这样的问题?任何关于 JOINS 如何在 Access 中工作的教育 material 也将受到赞赏,因为它们似乎不像 运行 pgAdmin 中的查询那样遵循相同的规则。
感谢您的帮助。我已经研究这个问题大约一个星期了。
好吧,"solution" 似乎如我所料。 Access 只是讨厌涉及基于文本的列的 JOINS。作为变通方法,我向似乎最依赖另一个的 table 添加了一个外键 (FK)。此 FK 列指定为类型 "BIGINT"。现在,我使用大量 INNER JOINS(所有这些现在也都使用 bigints)的大量查询可以轻松工作。
但是,我仍然很好奇为什么 Access 会拒绝文本 JOINS... 看起来应该是完全可以接受的table。