RE:Crear registro con último valor + 1
Prueba con estas funciones:
*La primera sirve para saber si al estar la aplicacion en red ha habido otro aceso y actualiza al ultimo numero
*La segunda actualiza al ultimo numero.
*Las funciones son genericas, les pasa el formulario, el control, la tabla, el campo, la fecha, y el formato del numero y ella hace el resto
Function ActualizarAlGuardar(frmTemp As Access.Form, strControl As String, strTabla As String, strCampo As String, Optional strCampoFecha As String, Optional strFormato As String)
Dim db As DAO.Database
Dim rstTemp As DAO.Recordset
If IsMissing(strFormato) Then
strFormato = "000000"
End If
If frmTemp.NewRecord Then
Set db = CurrentDb
If IsMissing(strCampoFecha) Or strCampoFecha = "" Or IsNull(strCampoFecha) Then
Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero FROM " & strTabla & ";")
Else
Set rstTemp = db.OpenRecordset("SELECT Max(" & strTabla & "." & strCampo & ") AS MaxDesNumero, Year(" & strCampoFecha & ") AS Año FROM " & strTabla & " GROUP BY Year(" & strCampoFecha & ") HAVING (((Year(" & strCampoFecha & "))=Year(Date())));")
End If
If Right(frmTemp.Controls(strControl), 1) <> "1" Or rstTemp.RecordCount <> 0 Then
If Not IsNull(rstTemp![MaxDesNumero]) Then
If CDbl(frmTemp.Controls(strControl)) <> CDbl(rstTemp![MaxDesNumero]) + 1 Then