Supongamos que tengo una tabla Articulos como la de la imagen
Y una tabla Ventas
Con ésta última hago un formulario en el que pongo un cuadro de texto Buscar. Si escribo Patatas, que como puedes ver, sí está en la tabla y pulso Enter
Por el contrario, si pongo Manzanas, que no está en la tabla y pulso Enter, se abre el formulario Artículos en un registro nuevo para "dar de alta" ese artículo.
En él escribo manzanas y me pasa el valor al formulario Ventas.
El código del cuadro de texto Buscar es
If DCount("*", "articulos", "articulo='" & Me.Buscar & "'") >= 1 Then
Articulo = Buscar
Else
DoCmd.OpenForm "articulos", , , , acFormAdd, acDialog
End If
Y en el evento Después de actualizar del cuadro de texto Articulo del formulario Articulos le pongo
If CurrentProject.AllForms("ventas").IsLoaded Then
Forms!ventas!Articulo = Articulo
End If
y en la tabla Articulos ya te guarda el nuevo articulo
Dicho todo esto, te tengo que decir (si no lo hago reviento) que yo no lo haría así. La programación es para trabajar lo menos posible, por eso se nos da bien a los vagos. Quitaría el cuadro de texto Buscar, no sirve para nada y convertiría el cuadro de texto Articulo del formulario Ventas en un combinado con origen de la fila en el campo Artículo de la tabla Articulos. Pondría Limitar a la lista Sí, y en el evento al no estar en lista le diría que abriera el formulario Articulos para darlo de alta y que me lo pase al combinado del formulario Ventas.
Si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo de como lo haría. Si lo haces, en el asunto del mensaje pon tu alias Fernando, ya que si no sé quien me escribe ni los abro.