Lo puedes hacer de mil formas distintas, sólo con código, con consultas, sin botones, etc. etc.
Por ejemplo, supongamos que tengo una tabla Socios
Es que no sé los rangos en una Cofradía. Y una tabla Rangos donde a cada rango le corresponde una cuota, que no pongo por no verle la necesidad.
Una tabla Cuotas, con un campo Año
Construyo una consulta de datos anexados( pero como te decía no hace falta ya que se le puede decir lo mismo en código) a la tabla Cuotas
Si tengo un formulario, donde le pongo un cuadro de texto llamado Año Cuando pulso Crear cuotas
( Aunque tampoco haría falta ya que bastaría con un InputBox) para que escribas el año que quieres crear y un botón
Cuando pulso el botón, me deja la tabla Cuotas como
Con lo que ya podría crear un informe tipo Lista o uno de etiquetas, etc.
Si volviera a pulsar el botón
Y no me las crearía.
El código del evento Al hacer clic del botón es
Private Sub Comando0_Click()
If DCount("*", "cuotas", "año=" & Me.Año & "") > 1 Then
MsgBox "Esas cuotas en ese año " & Me.Año & " ya están creadas", vbOKOnly + vbInformation, "Tendrá que cambiar de año"
Exit Sub
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery "anexar"
DoCmd.RunSQL "update cuotas set año=" & Me.Año & " where año is null"
End If
End Sub
Es decir, primero cuéntame si ya hay en la tabla Cuotas alguna con ese año. Si la hay, pon el mensaje y no hagas nada, para no tener cuotas repetidas. Si no hay ninguna, ejecuta..
Pero como te decía lo puedes hacer de muchas formas.