Como obter a identificação do registro recém-inserido usando o Excel VB

Parece um problema bastante comum, mas a maioria das soluções se refere à concatenação de vários comandos SQL, algo que acredito que não pode ser feito com o ADO / VBA (ficarei feliz em ser mostrado errado a esse respeito

Atualmente, insiro meu novo registro e, em seguida, execute uma consulta de seleção usando (espero) campos suficientes para garantir que apenas o registro recém-inserido possa ser retornado. Meus bancos de dados raramente são acessados por mais de uma pessoa por vez (risco insignificante de outra inserção entre consultas) e, devido à estrutura das tabelas, identificar o novo registro normalmente é bastante fáci

Agora estou tentando atualizar uma tabela que não tem muito espaço para exclusividade, além da chave primária artificial. Isso significa que existe o risco de o novo registro não ser exclusivo, e eu detesto adicionar um campo apenas para forçar a exclusividad

Qual é a melhor maneira de inserir um registro em uma tabela do Access e consultar a nova chave primária do Excel nessa situaçã

Obrigado pelas respostas. Eu tentei obter@@IDENTITY funcionando, mas isso sempre retorna 0 usando o código abaix

Private Sub getIdentityTest()
    Dim myRecordset As New ADODB.Recordset
    Dim SQL As String, SQL2 As String

    SQL = "INSERT INTO tblTasks (discipline,task,owner,unit,minutes) VALUES (""testDisc3-3"",""testTask"",""testOwner"",""testUnit"",1);"
    SQL2 = "SELECT @@identity AS NewID FROM tblTasks;"

    If databaseConnection Is Nothing Then
        createDBConnection
    End If

    With databaseConnection
        .Open dbConnectionString
        .Execute (SQL)
        .Close
    End With

    myRecordset.Open SQL2, dbConnectionString, adOpenStatic, adLockReadOnly

    Debug.Print myRecordset.Fields("NewID")

    myRecordset.Close

    Set myRecordset = Nothing
End Sub

Algo se destaca por ser responsável?

No entanto, dadas as advertências prestadas por Renaud (abaixo), parece haver tanto risco quanto o uso de@@IDENTITY como em qualquer outro método, por isso recorri ao uso deSELECT MAX por enquanto. Para referência futura, eu estaria interessado em ver o que está errado com minha tentativa acima.

questionAnswers(6)

yourAnswerToTheQuestion