各位大大好!
最近想在用Excel來更新資料庫的資料
https://www.youtube.com/watch?v=xC8rDlji7ok
參考上方連結的影片
但是自己在依樣畫葫蘆時卻遇到困難,會出現
執行階段錯誤'-2147217900(80040e14)':接近':'之處的語法不正確
Private Sub 更新資料_Click()
Dim con As ADODB.Connection
Set con = New ADODB.Connection
Dim CC001 As String
Dim CC002 As String
Dim CC003 As String
Dim CC004 As String
Dim CC005 As Double
con.Open "Provider=SQLOLEDB;" & _
"Data Source =xxxxxxxxx;" & _
"Initial Catalog=xxxx;" & _
"User ID=xxx ; Password=xxx"
CC001 = TextBox1.Text
CC002 = TextBox2.Text
CC003 = TextBox3.Text
CC004 = TextBox4.Text
CC005 = CDbl(TextBox5.Text)
Sql = "update CARCC set CC001='" & CC001 & "',CC002='" & CC002 & "'," & _
"CC003=" & CC003 & ",CC004=" & CC004 & ",CC005=" & CC005 & " " & _
"WHERE CC001=" & CC001 & " "
Dim rowsAffected As Integer
con.Execute Sql, rowsAffected
If rowsAffected = 1 Then
MsgBox "success"
Else
MsgBox "failed"
End If
con.Close
Set con = Nothing
End Sub
其中con.Execute Sql, rowsAffected在偵錯時會出現問題
(上傳的Data Source是遮擋的部分喔)
還望各位大大幫忙![]()
加一列Debug.print Sql,變成
Sql = "update CARCC set CC001='" & CC001 & "',CC002='" & CC002 & "'," & _
"CC003=" & CC003 & ",CC004=" & CC004 & ",CC005=" & CC005 & " " & _
"WHERE CC001=" & CC001 & " "
Debug.print Sql
比較容易看出 SQL 敍述那裡有誤
有問題的目前不是Sql那裡
更正一下,有問題的就是Sql那裡
你要改組成 Sql 的那部份
使得
目前的
update CARCC set CC003='05:55:00',CC004=22:44:00,CC005=671.88 WHERE CC001=KLE-8080,CC002=2021-10-01
變成以下
update CARCC set CC003='05:55:00',CC004='22:44:00',CC005=671.88 WHERE CC001='KLE-8080',CC002='2021-10-01'
才有機會正常執行
白話點說 就是 CC004,CC001,CC002 都要加單引號 就像 CC003 一樣
確實是那裡的問題![]()
超級感謝海綿寶寶大大
Dim CC001 As String
Dim CC002 As String
Dim CC003 As String
Dim CC004 As String
Dim CC005 As Double
CC001已經是where條件了,應該不需要再update了。
Sql = "update CARCC set CC002='" & CC002 & "'," & _
"CC003='" & CC003 & "',CC004='" & CC004 &"',CC005=" & CC005 & _
" WHERE CC001='" & CC001 & "'"
感謝allenlwh大大![]()
根據我的條件已經修改成
Sql = "update CARCC set CC003='" & CC003 & "',CC004=" & CC004 & ",CC005=" & CC005 & " WHERE CC001=" & CC001 & ",CC002=" & CC002 & " "
因為CC001和CC002是不用更改的

看一下你的sql即時運算
日期沒引號、字串沒引號、另一個不知道是數字還是什麼的
會出現錯誤是也是應該的
那個出現':'之處的語法不正確大概就是sql把時間當成數字所以報錯的
sql要依資料型別修改
Sql = "update CARCC set CC003='" & CC003 & "',CC004='" & CC004 & "',CC005='" & CC005 & "' WHERE CC001='" & CC001 & "',CC002='" & CC002 & "' "
重要資訊記得馬掉
感謝bsexp301479大大~
已經修改好囉