J'essaie d'insérer des données dans SQL à partir d'Excel VBA. Les commandes SQL sont construites au cours du script VBA et incluent l'utilisation de certaines variables SQL. J'essaie de comprendre comment les transactions fonctionnent dans VBA, et si elles vont fonctionner avec ce que j'ai besoin de faire, j'ai le code ci-dessous qui va tester cela, mais cela ne fonctionne pas. Cela me donne toujours une erreur à propos de "Doit définir une variable scalaire @ nom" donc je suppose qu'il y a un problème ici avec la portée des données/transaction. Comment puis-je obtenir ce code simple pour fonctionner?Transactions VBA
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
Enfiler mon costume de capitaine évident ici. Avez-vous envisagé d'utiliser proc stocké? –
@conrad Oui, malheureusement, le code SQL est généré dynamiquement et varie énormément à chaque utilisation. –