He de decirte que yo lo haría de otra forma, pero... si tengo la tabla Pisos
Y una tabla Cobros
Con esta última hago un formulario( da igual único o continuo, pero se ve mejor de ésta forma)
En el evento al cargar del formulario le pongo
Private Sub Form_Load()
If Nz(DCount("*", "cobros", "format([fechacobro],""mm/yyyy"") like format(date(),""mm/yyyy"")")) >= 1 Then
MsgBox "Ese mes ya está contabilizado", vbOKOnly, "Otra vez será"
Exit Sub
Else
DoCmd.RunSQL "insert into cobros select piso from pisos where estado like ""En gestion"""
DoCmd.RunSQL "update cobros set fechacobro=date() where fechacobro is null"
Me.Requery
End If
End Sub
Me explico. Cuando vas a abrir el formulario comprueba que no se haya contabilizado ya ese mes. En caso de que así fuera, te aparecería un mensaje de que ya ha sido contabilizado y no hace nada. En caso de que no sea así te introduce en la tabla Cobros los pisos que están en gestión y la fecha del día(yo lo dejaría en blanco para poder poner la fecha efectiva en que le he cobrado). De forma que
En caso de que ese mismo día u otro del mismo mes, abrieras el formulario, para evitar que se repitiera lo de insertar registros te aparecería
Cuando llegaras a un mes nuevo, la primera vez que lo abrieras, haría la comprobación y como no hay registros de ese mes
Personalmente le diría que me mostrara sólo aquellos registros en que Cobrado=False
Y mejor todavía, lo haría todo desde un formulario Principal, desde donde le diría que insertara registros, que me mostrara los cobros de un mes, los que están sin cobrar, etc.