2014-09-21 52 views
1

我有一个查询,我在SQL Server中键入2012 Management Studio中“可更新的查询”:在SQL Server工作UPDATE查询是不是在访问

UPDATE RidesTbl 
SET fname = (SELECT fname FROM Users 
      WHERE username='Dani'), 
    lname = (SELECT lname FROM Users 
      WHERE username='Dani') 
WHER Eusername = 'Dani' 

查询工作正常,一切都好于服务器管理,但是当我尝试运行在MS Access 2013相同的查询,我得到以下信息:

操作必须使用和更新的查询

我读过,它是因为“只读”的情况,但我没有问题来插入或删除'RidesTbl'表中的任何数据,所以可能情况并非如此。

任何帮助将不胜感激,以帮助我解决这个问题。

+0

我的猜测是,在Access中的链接表是只读的。 – 2014-09-21 16:15:42

回答

1

SQL Server使用Transact-SQL(T-SQL),Access使用Access SQL。它们是两种截然不同的SQL方言。

你的T-SQL查询的“直接翻译”成访问SQL将

UPDATE RidesTbl 
SET fname = DLookup("fname","Users","username='Dani'"), 
    lname = DLookup("lname","Users","username='Dani'") 
WHERE Eusername = 'Dani' 
-1

它应该是:

UPDATE RidesTbl 
    SET (fname, lname) VALUES (
    (SELECT fname FROM Users WHERE username='Dani'), 
    (SELECT lname FROM Users WHERE username='Dani')) 
    WHERE Eusername = 'Dani'; 

小心你的 “WHERE”!

+0

你可以补充说明这将如何解决OP遇到的问题吗? – 2014-09-21 16:19:28

+0

该查询在Access *或* SQL Server中不起作用。 – 2014-09-21 16:40:09