UPDATE 查询中的错误 - VB6 DAO 访问

Posted

技术标签:

【中文标题】UPDATE 查询中的错误 - VB6 DAO 访问【英文标题】:Errors in UPDATE query - VB6 DAO Access 【发布时间】:2018-05-09 09:22:06 【问题描述】:

在 Access .MDB 数据库上使用 VB6 和 DAO 时,一个带有 INNER JOIN 的简单 UPDATE 查询给我带来了问题。

我认为这很简单,但我所做的任何更改都会产生错误。

我的查询是:

UPDATE work
INNER JOIN emp ON work.ref = emp.ref 
SET work.code1 = emp.code1

这会生成运行时错误 3075 Syntax error in query expression 'work.ref = emp.ref'

我遇到了类似的错误:

UPDATE work w
INNER JOIN emp ON w.ref = emp.ref 
SET w.code1 = emp.code1

UPDATE [work] w
INNER JOIN emp ON w.ref = emp.ref 
SET w.code1 = emp.code1

如果我对表 emp 使用别名 e。

我不能使用 FROM 子句,Access 不支持该子句(感谢 @MarkKram)

我必须在 VB6 中使用 DAO 3.51(旧!),不能轻易更改。

我已经尝试在work 的第一个引用周围使用方括号,就像在UPDATE [work] 中一样(因为我需要在一个简单的SELECT * FROM [work] 中使用它)以及在表名和列名周围使用和不使用方括号的各种组合。但还是失败了。

请问您有什么建议吗?

Dim ws As DAO.Workspace
Dim DB As DAO.Database
Dim szSQL As String

Set ws = gWS
Set DB = gWS.OpenDatabase(WorkFile)

szSQL = "UPDATE work INNER JOIN emp ON work.ref = emp.ref SET work.code1 = emp.code1 WHERE work.trancode = 'P'"
DB.Execute szSQL

Set DB = Nothing
Set ws = Nothing

【问题讨论】:

试试这个:。 UPDATE w SET w.code1 = e.code1 from work w INNER JOIN emp e ON w.ref = e.ref w.trancode = 'P' @MarkKram Access syntax 不同。 然后看看这个链接:***.com/questions/12882212/…我真的不太会用Access 如果您的查询保存在 Access 中或直接针对它执行,则很好。如果您有直通的情况,则需要使用更多 ANSI 版本的 SQL (UPDATE ... SET ... FROM ... INNER JOIN ... WHERE...)。 试试这个:UPDATE work, emp SET work.code1 = emp.code1 WHERE work.ref = emp.ref AND work.transcode ='P' 【参考方案1】:

试试这个:

UPDATE work, emp 
SET work.code1 = emp.code1 
WHERE work.ref = emp.ref AND work.transcode ='P'

【讨论】:

以上是关于UPDATE 查询中的错误 - VB6 DAO 访问的主要内容,如果未能解决你的问题,请参考以下文章

VB6 数据库上的 DAO 3.6 问题

使用 VB6 将 DAO 日期时间字段重置为空

VB6 - DAO - 存储过程

如何通过 VB6 使用 DAO.Relation?

DAO 可以访问当前 Sql Server 版本中的架构吗?

在 VB6 中将 DAO DBEngine DataTable 的列从 DataType dbInteger 更改为 dbLong