2017-11-25 285 views
1

带INNER JOIN的简单UPDATE查询会导致我在Access .MDB数据库上使用VB6和DAO时出现问题。UPDATE查询中的错误-VB6 DAO访问

我认为这很简单,但无论我做出什么样的改变都会产生错误。

我的查询是:

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 

而且如果我使用别名E对于EMP表。

我不能使用FROM条款,不支持Access(感谢尽管@MarkKram)

我必须使用DAO 3.51(老了!)在VB6,不能轻易改变。

我试图围绕第一参考workUPDATE [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 
+0

试试这个:。 UPDATE w SET w.code1 = e.code1 work w INNER JOIN emp e ON w.ref = e.ref w.trancode ='P' –

+0

@MarkKram [Access syntax](https://stackoverflow.com/a/ 379242/11683)是不同的。 – GSerg

+0

看看这个链接然后:https://stackoverflow.com/questions/12882212/sql-updating-from-an-inner-join我真的不使用Access非常多 –

回答

3

试试这个:

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