Vamos a ver si me explico. Si en la tabla Datos de Establecimiento tienes un campo único e irrepetible como es el Nif, ( o incluso el campo REF, que me da que también es único)¿Para qué quieres poner como clave el campo Nombre? ¿Para que quieres repetir datos en la tabla Datos Anuales.? Basta con dejarle a esta el campo NIF( o REF) y sobran los campos Nombre y dirección.
Haría el formulario sólo con la tabla Datos Anuales y cambiaría el campo(vamos a usar REF(pero podrías ser NIF) por un combinado con origen de la fila
Select REF, Nombre from [Datos establecimiento] group by ref,Nombre;
Luego en sus propiedades-Formato-Número de columnas pones dos y en ancho de columnas
0;6
Te lo pongo así porque siempre es más fácil acordarse del nombre que de un número de referencia.
Que luego quieres dar de alta un local nuevo. En el combinado Ref escribes la nueva referencia( o el nuevo NIF) y en el evento al no estar en lista crea un procedimiento de evento y pones
Dim Localnuevo As Integer, título As String, mensaje As Integer
título = "El local que ha escrito no está en la lista"
mensaje = vbYesNo + vbDefaultButton1
Localnuevo = MsgBox("¿Desea agregar este local a la lista ?", mensaje, título)
If localnuevo = vbYes Then
DoCmd.RunCommand acCmdUndo
DoCmd.OpenForm "Datos establecimiento", acNormal, "", "", acAdd, acDialog
Response = acDataErrAdded
End If
O sea, que cuando escribas una REF que no está en la lista, te avisará y que si quieres darlo de alta. Si le dices sí, se abre el formulario Datos Establecimiento en vista diálogo. Anotas sus datos y en cuanto cierres este formulario, en el combinado ya te aparece el valor REF( o NIF)
De todas formas, si crees que parece complicado, y quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Tona ya que si no sé quien me escribe ni los abro.