【发布时间】:2011-03-27 22:24:00
【问题描述】:
我正在尝试将一些数据从 Excel VBA 插入 SQL。 SQL 命令是在 VBA 脚本的过程中建立起来的,包括一些 SQL 变量的使用。
我正在尝试了解事务在 VBA 中是如何工作的,以及它们是否可以与我需要做的事情一起工作,我有下面的代码可以测试这一点,但它不起作用。它总是给我一个关于“必须定义标量变量@name”的错误,所以我认为数据/事务的范围存在问题。我怎样才能让这个简单的代码工作?
Const stADO As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=ImportTest;" & _
"Data Source=localhost\sqlexpress"
Set cn = New ADODB.Connection
With cn
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 0
End With
cn.BeginTrans
cn.Execute "set implicit_transactions off"
cn.Execute ("declare @name varchar(100)")
cn.Execute ("set @name='name'")
cn.Execute ("Insert into test (id,name) values (55,@name)")
cn.CommitTrans
cn.Close
Set cn = Nothing
【问题讨论】:
-
在这里穿上我的明显船长套装。您是否考虑过使用存储过程?
-
@conrad 是的,不幸的是 SQL 代码是动态生成的,每次使用都会有很大的不同。
标签: sql sql-server vba ado