Se que es casi imposible que se de el caso pero como en teoria un buen programador debe tener cualquier situacion controlada...
En cuanto a usar el autonumerico que tiene Access o SQL Sever, por lo que tengo entendido no es muy recomendable por tema de portabilidad a otras bases de datos.
He mejorado un poco la funcion que ponia antes:
Código:
Function GetId(tabla, nombreid, wherecampos, wherevalores)
vsSQL = "SELECT ISNULL(MAX(" & nombreid & "),0)+1 FROM " & tabla
if wherecampos<>"" AND wherevalores<>"" then
campos=split(wherecampos,",")
valores=split(wherevalores,",")
if ubound(campos)=ubound(valores) then
vsSQL = vsSQL & " WHERE"
for i=0 to ubound(campos)
if i<>0 then vsSQL = vsSQL & " AND" end if
vsSQL = vsSQL & " " & campos(i) & "="
if IsNumeric(valores(i)) then
vsSQL = vsSQL & valores(i)
else
vsSQL = vsSQL & "'" & valores(i) & "'"
end if
next
end if
end if
GetId = vsSQL
End Function
Esta funcion la he probado solo en SQL Server. No se si en Access dara algun problema.
De todas formas si alguien sabe como poder controlar la concurrencia sin usar el truco que propone Muzztein (que esta muy bien pensado) que lo comente por favor.