我有在SQL端創建的表和字段。調試器指向cnn.Execute uSQL是問題。我正在嘗試將正在訪問該工作表的用戶和計算機名稱寫入SQL。使用VBA插入到SQL表中
Sub UpdateTable()
Dim cnn As ADODB.Connection
Dim uSQL As String
Dim strText As String
Dim strDate As Date
Dim strUsername As String
Dim strComputerName As String
strUsername = Environ("username")
strComputerName = Environ("Computername")
Set cnn = New Connection
cnnstr = "Provider=SQLOLEDB; " & _
"Data Source=icl-analive; " & _
"Initial Catalog=DW_ALL;" & _
"User ID=dw_all_readonlyuser;" & _
"Trusted_Connection=Yes;"
cnn.Open cnnstr
uSQL = "INSERT INTO Audit (UN,CN) VALUES StrUsername , strComputer"
Debug.Print uSQL
cnn.Execute uSQL
cnn.Close
Set cnn = Nothing
Exit Sub
End Sub
的日誌記錄SQL用戶名在你的SQL服務器中是「dw_all_readonlyuser」,所以,在這個用戶下你可能沒有在數據庫中插入特權? – cars10m
FWIW我發現相當震撼的是,你命名'UpdateTable'是一個執行'INSERT'的過程,而不是像讀取方法調用所期望的'UPDATE'。 –
在bobby表訪問之前,您應該對這類事情使用參數化查詢。 http://bobby-tables.com這是一個很好的例子。 http://stackoverflow.com/questions/10352211/vba-ado-connection-and-query-parameters –