6
votes

Utilisation "Sélectionnez Scope_Identiment ()" dans Adodb Recordset

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)


0 commentaires

4 Réponses :


0
votes

Voir ce qui se passe lorsque vous supprimez les valeurs adopqueneSeSet et Adroclockimistic les laissent à leurs valeurs par défaut.


0 commentaires

1
votes

dans votre rs.open essayez ceci

Rs.open SQLSTR, CN, ADCMDText


0 commentaires

8
votes

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)


0 commentaires

3
votes

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


0 commentaires