我正在尝试使用以下代码通过excel更新数据库:
Public Sub insertNew()
Sheets("Sheet1").Select
strDB = "i:\Profile\Desktop\DB\Database.accdb"
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDB & ";" & "Jet OLEDB:Database Password=password;"
Set rs = New ADODB.Recordset
rs.Open "Project Manager", cn, adOpenKeyset, adLockOptimistic, adCmdTable
r = 2 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
If Range("AD" & r) = "Yes" Then
With rs
.AddNew
'These fields are on the spreadsheet, transfer will be made to the database
.Fields("ID") = Range("A" & r).Value
.Fields("Full Name") = Range("C" & r).Value
.Fields("SOEID") = Range("B" & r).Value
.Fields("SMT") = Range("D" & r).Value
.Fields("Manager") = Range("E" & r).Value
.Update
End With
End If
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
End Sub
错误发生在以下行:
.Fields(" Full Name")= Range(" C"& r).Value
如果我对该行进行注释,则下面的行会给出相同的错误消息。所有这些列都在表Project Manager
中,我已经检查过它们没有拼写错误等。
我之前从未见过这条错误消息所以不知道在哪里开始麻烦拍摄它,所以任何帮助都会很棒。
答案 0 :(得分:1)
我能够通过在项目经理周围放置[]来解决问题,所以这一行看起来像这样:
rs.Open "[Project Manager]", cn, adOpenKeyset, adLockOptimistic, adCmdTable