iT邦幫忙

0

求助!用Excel UserForm 來Update 資料到SQL

  • 分享至 

  • xImage

各位大大好!
最近想在用Excel來更新資料庫的資料
https://www.youtube.com/watch?v=xC8rDlji7ok
參考上方連結的影片
https://ithelp.ithome.com.tw/upload/images/20211103/20143420wA8vrmN1Un.png

但是自己在依樣畫葫蘆時卻遇到困難,會出現

執行階段錯誤'-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是遮擋的部分喔)
還望各位大大幫忙/images/emoticon/emoticon41.gif

huahualiu iT邦新手 2 級 ‧ 2021-11-03 18:29:44 檢舉
你指的出現問題是啥問題
有執行結果?

你 Update 值
除了數字,其他應該都要加上單引號「'」吧 (?
changk35 iT邦新手 5 級 ‧ 2021-11-04 09:04:14 檢舉
會有"執行階段錯誤'-2147217900(80040e14)':接近':'之處的語法不正確"
這一段出現
changk35 iT邦新手 5 級 ‧ 2021-11-04 09:19:50 檢舉
剛剛調整都已經加上單引號「'」~
不過後面還是有誤
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2021-11-03 21:42:08
最佳解答

加一列Debug.print Sql,變成

Sql = "update CARCC set CC001='" & CC001 & "',CC002='" & CC002 & "'," & _
            "CC003=" & CC003 & ",CC004=" & CC004 &    ",CC005=" & CC005 & " " & _
            "WHERE CC001=" & CC001 & "  "

Debug.print Sql            

比較容易看出 SQL 敍述那裡有誤

changk35 iT邦新手 5 級 ‧ 2021-11-04 09:11:05 檢舉

感謝海綿寶寶大大~

https://ithelp.ithome.com.tw/upload/images/20211104/201434204ERHe8oXxc.png

後面有問題的目前不是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 一樣

changk35 iT邦新手 5 級 ‧ 2021-11-04 10:08:47 檢舉

確實是那裡的問題/images/emoticon/emoticon02.gif
超級感謝海綿寶寶大大

1
allenlwh
iT邦高手 1 級 ‧ 2021-11-03 20:55:12
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 & "'"
changk35 iT邦新手 5 級 ‧ 2021-11-04 09:07:36 檢舉

感謝allenlwh大大/images/emoticon/emoticon12.gif
根據我的條件已經修改成

Sql = "update CARCC set CC003='" & CC003 & "',CC004=" & CC004 & ",CC005=" & CC005 & " WHERE CC001=" & CC001 & ",CC002=" & CC002 & " "

因為CC001和CC002是不用更改的

1
bsexp301479
iT邦新手 3 級 ‧ 2021-11-04 09:34:21

https://ithelp.ithome.com.tw/upload/images/20211104/201387500NnlOKIizD.png
看一下你的sql即時運算
日期沒引號、字串沒引號、另一個不知道是數字還是什麼的
會出現錯誤是也是應該的
那個出現':'之處的語法不正確大概就是sql把時間當成數字所以報錯的
sql要依資料型別修改

Sql = "update CARCC set CC003='" & CC003 & "',CC004='" & CC004 & "',CC005='" & CC005 & "' WHERE CC001='" & CC001 & "',CC002='" & CC002 & "' "
重要資訊記得馬掉
changk35 iT邦新手 5 級 ‧ 2021-11-04 10:10:49 檢舉

感謝bsexp301479大大~
已經修改好囉

我要發表回答

立即登入回答