ADO: obtendo o valor do campo auto-numeração após INSERT no JET4
A partir do JET4, você pode obter o valor do campo auto-numeração gerado pela última inclusão de registro num banco de dados Access de forma mais prática. Para isto, crie um recordset baseado na consulta "SELECT @@IDENTITY". Ao retornar, o campo 0 do Recordset conterá o valor do último campo auto-numeração gerado para a transação corrente. Veja abaixo uma função que exemplifica como fazer isto:
Public Function ExecuteID(SQL As String) As Long
'Propósito: retornar o valor da coluna identidade
'do registro recém incluído
'O argumento SQL é um comando INSERT válido
'A propriedade ConnetionString deve ser
'configurada para um conexão válida
On Error GoTo LocalError
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim AutoID As Long
Set rs = CreateObject("ADODB.Recordset")
With rs
'Prepara o RecordSet
.CursorLocation = adUseServer
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Source = "SELECT @@IDENTITY"
End With
Set cn = CreateObject("ADODB.Connection")
With cn
.ConnectionString = ConnectionString
.CursorLocation = adUseServer
.Open
.BeginTrans
.Execute SQL, , adCmdText + adExecuteNoRecords
Set rs.ActiveConnection = cn
rs.Open , , , , adCmdText
AutoID = rs(0).Value
rs.Close
.CommitTrans
.Close
End With
Set rs = Nothing
Set cn = Nothing
'se você chegou aqui, está tudo ok
ExecuteID = AutoID
Exit Function
LocalError:
MsgBox Err.Number & " - " & Err.Description
ExecuteID = 0
End Function