Utilisation d'un script VBA dans Excel, j'essaie d'insérer une nouvelle ligne dans une table, puis de récupérer la valeur d'identité de cette ligne. Si je cours:
Dim rs As ADODB.Recordset
Dim cn As Connection
Dim SQLStr As String
Dim serverName As String
Dim databaseName As String
serverName = "MSSQLServer"
databaseName = "QA"
cxnStr = "Driver={SQL Server};Server=" & serverName & ";Database=" & databaseName & ";"
SQLStr = "INSERT INTO DataSheet(databaseUserID, currentTimestamp)
VALUES (1, CURRENT_TIMESTAMP); SELECT SCOPE_IDENTITY()"
Set cn = New ADODB.Connection
cn.Open cxnStr
Set rs = New ADODB.Recordset
rs.Open SQLStr, cn, adOpenKeyset, adLockOptimistic
MsgBox (rs.Fields(0).Value)
4 Réponses :
Voir ce qui se passe lorsque vous supprimez les valeurs adopqueneSeSet et Adroclockimistic les laissent à leurs valeurs par défaut. P>
dans votre rs.open essayez ceci p>
Rs.open SQLSTR, CN, ADCMDText CODE> P>
Lorsque vous exécutez un lot de commandes à l'aide de Adodb, je crois que cela fonctionne chaque individu séparément. Pour forcer la commande suivante à exécuter, vous devez utiliser ce qui suit:
Set rs = New ADODB.Recordset rs.Open SQLStr, cn, adOpenKeyset, adLockOptimistic Set rs = rs.NextRecordset MsgBox (rs.Fields(0).Value)
Vous exécutez deux déclarations afin que vous obtiendrez deux résultats. L'objet Recordset ne peut contenir qu'un seul résultat à la fois - pour obtenir l'autre résultat, vous devez utiliser la méthode NexTrecordset.
Set rs = rs.NextRecordset