Problema
Supongamos un escenario en donde tenemos a SQL Server como base de datos y MS Access como aplicación.
Insertamos un registro en una tabla y queremos ver el ID asignado, para lo cual utilizamos esta línea de código:
Set rs = CurrentDb.OpenRecordset("SELECT @@IDENTITY", dbOpenForwardOnly)
¿Cuál es el problema?
Si existe un trigger detrás de esta tabla que inserta en otra tabla, es posible que el IDENTITY sea el del trigger y no el que estamos buscando
Solución
Una posible solución es usar la función nativa de SQL Server para obtener el último IDENTITY de una tabla:
Function Retornar_Identity_Tabla()
Dim qdef As DAO.QueryDef
Dim VarRecords As Variant
Set qdef = CurrentDb.CreateQueryDef("")
qdef.ReturnsRecords = True
qdef.Connect = CurrentDb.TableDefs("dbo_Certificados").Connect
qdef.sql = "SELECT IDENT_CURRENT('certificados')"
qdef.OpenRecordset
VarRecords = qdef.OpenRecordset.GetRows(1)
Retornar_Scope_Identity = VarRecords(0, 0)
End Function
No hay comentarios:
Publicar un comentario