【发布时间】:2020-03-03 19:06:45
【问题描述】:
首先,让我声明这个问题是针对 Access 应用程序中的 VBA 的。现在,这是一个更长查询的子查询,但我想在尝试构建更大的查询之前先了解基础知识。
无论出于何种原因,以下代码行成功打开了一个 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 数据库。
这个查询给了我一个“错误 13:类型不匹配” 消息,然后取消执行。
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 中工作的教育材料也将受到赞赏,因为它们似乎不像在 pgAdmin 中运行查询那样遵循相同的规则。
感谢您的帮助。我已经研究这个问题大约一周了。
【问题讨论】:
-
Access 可以在文本字段上加入 Access 表。我不知道 Access 如何查看 PostgreSQL varchar 字段。但是这个线程表明应该可以工作stackoverflow.com/questions/3916609/…
-
我在这方面接近准确了吗? 不,你离得很远。但是两个字段的数据类型必须匹配;如果没有,您将得到您所看到的错误。因此,请检查并更正您的数据。
标签: vba postgresql ms-access recordset type-mismatch