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 访问的主要内容,如果未能解决你的问题,请参考以下文章
DAO 可以访问当前 Sql Server 版本中的架构吗?
在 VB6 中将 DAO DBEngine DataTable 的列从 DataType dbInteger 更改为 dbLong