2013-02-26 75 views
0

這裏的查詢:獲得「查詢太複雜」錯誤執行一個UPDATE查詢時 - Excel中

UPDATE [Tasks$] SET SPRINT = 1, THEME = "INTEGRATION" WHERE STORY = 1 

這裏的數據集:

SPRINT THEME  STORY Task  Estimate Assigned  IN_PROGRESS DONE 
1  INTEGRATION 1  Some task 1   AA   Wed, Feb 6  Wed, Feb 13 

工作表被稱爲「任務」。我不確定爲什麼這不起作用,因爲查詢不是太複雜,而且在另一個工作表上有類似的查詢。 「任務」工作表中共有120行。

我收到的Execute方法調用此錯誤:

Sql = "UPDATE [Tasks$]..." 
cn.Execute (Sql) 

任何幫助表示讚賞。

更新:

這是連接是如何創建的。

Set conn = New ADODB.Connection 
conn.Provider = "Microsoft.Jet.OLEDB.4.0" 
conn.ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & "Extended Properties=Excel 8.0;" 
conn.Open 
+0

您還連接了哪些數據庫產品? – RBarryYoung 2013-02-26 16:40:37

+0

@RBarryYoung看起來他正在使用DAO或ADO來處理excel工作表中的數據,這是不是Nightwolf? – Brad 2013-02-26 17:30:00

+0

是的,我更新瞭如何創建連接的問題。謝謝。 – Nightwolf 2013-02-26 19:15:24

回答

1

這爲我工作

Sub test() 

    Dim cn As ADODB.Connection 

    Set cn = New ADODB.Connection 
    cn.Provider = "Microsoft.Jet.OLEDB.4.0" 
    cn.ConnectionString = "Data Source=" & ThisWorkbook.FullName & ";" & "Extended Properties=Excel 8.0;" 
    cn.Open 

    cn.Execute "UPDATE [Tasks$] SET SPRINT = 1, THEME = ""INTEGRATION"" WHERE STORY = 1" 
    cn.Close 

End Sub 

我假設你conncn變量是在您的文章,而不是在你的代碼只是一個錯字。此外,該工作簿必須先保存,但我認爲你會得到一個完全不同的錯誤。您應該嘗試將該工作表複製到新的工作簿並查看相同的代碼是否有效。然後,您應該嘗試更改工作表名稱(和要匹配的代碼)。

+0

謝謝,把同樣的東西複製到一個新的工作手冊中,完成了這項工作。 – Nightwolf 2015-04-16 13:15:27