2014-09-21 33 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

相關問題