Hay varias formas de hacerlo, te dejo un enlace del experto Neckkito Nck :
http://siliconproject.com.ar/neckkito/index.php/component/content/article/93-ejemplos-explicados/ejemplos-de-formularios/123-alta-en-formulario-desde-formulario
Y aquí te explico otra forma:
En el evento "Al no estar en la lista" de tu cuadro combinado, le generas este código:
Private Sub Empleado_NotInList(NewData As String, Response As Integer)
If MsgBox("El tercero no está en la lista ¿Dar de alta?", vbYesNo) = vbYes Then
Response = acDataErrContinue
DoCmd.OpenForm "Terceros", , , , acFormAdd, acDialog
Me.Empleado = DMax("ID", "Terceros")
Me.Contrato.SetFocus
Me.Empleado.Requery
Else
Response = acDataErrContinue
Me.Empleado = ""
End If
End Sub
Explicación del código:
Si no está en la lista te hace la pregunta.
Si pulsas no, borra el valor introducido en el cuadro combinado (lo llamé Empleado)
Si pulsas en sí, te abre el formulario para introducir los datos del nuevo tercero (lo llamé Terceros), ya en un nuevo registro.
Al cerrar ese formulario, busca el último ID (campo clave de la tabla) de la tabla Terceros y se lo asigna al cuadro combinado. Para que no de errores, pasa el foco al siguiente campo ("Contrato" en el ejemplo) y recarga los datos del cuadro combinado.
Un saludo.
Un nuevo foro de access, visítanos: http://nksvaccessolutions.com/Foro/