2
一种新的这一点,我试图用参数化查询执行INSERT查询(Oracle数据库)在VBA擅长执行在VBA参数化的插入查询擅长
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim ccmd As New ADODB.Command
str = "Provider=MSDAORA;Data Source=db;Persist Security Info=True;Password=pword;User ID=uname"
Set cnn = CreateObject("ADODB.Connection")
cnn.Open str
Set rs = CreateObject("ADODB.Recordset")
ccmd.ActiveConnection = cnn
ccmd.CommandText = "Insert into Table Values(@col1,@col5,@col8,@col6,@col7,@col2,@col3,@col4)"
ccmd.CommandType = adCmdText
ccmd.Parameters.Append ccmd.CreateParameter("@col1", adVarChar, adParamInput, 50, Cells(i, 1).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col5", adVarChar, adParamInput, 50, Cells(i, 5).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col8", adVarChar, adParamInput, 50, Cells(i, 8).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col6", adVarChar, adParamInput, 50, Cells(i, 6).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col7", adVarChar, adParamInput, 50, Cells(i, 7).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col2", adVarChar, adParamInput, 50, Cells(i, 2).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col3", adVarChar, adParamInput, 50, Cells(i, 3).Value)
ccmd.Parameters.Append ccmd.CreateParameter("@col4", adVarChar, adParamInput, 50, Cells(i, 4).Value)
'execute the command here, im having an error here. I'm not sure how to execute the command. I'm also not sure whether the error i'm getting is caused by how im executing the command or something else.
'I've tried:
'ccmd.Execute
'cnn.Execute(ccmd.CommandText)
'rs = ccmd.execute
自动化错误
是我得到什么
编辑:
尝试改变我的查询到Insert into Table Values(?,?,?,?,?,?,?,?)
,我仍然得到自动化错误。还尝试删除我的参数名称中的'@'字符,并尝试使用':'或'?'。
我实际上有一个更新查询,在插入之前工作得很好,所以我确定连接没问题。但我没有使用参数进行更新查询。这是一个简单的'sqlStr ='更新表设置ColumnA ='“&Cells(i,1).Value&”'“''cnn.Execute(sqlStr)' – crimson
@crimson首先,* insert *与*更新*,所以我会建议测试两者。现在无法进入计算机来更新此设置,只有建议将删除'ccmd'调用,并直接调用'ccn'或使用[ccmd * with *](http://stackoverflow.com/questions/) 4806409 /创建参数化-SQL查询合的Excel-2010与 - VBA?RQ = 1) – JGreenwell