Prova la seguente soluzione:
1. Crea una nuova query in visualizzazione struttura
2. Importa la tabella Dati
3. Trascina nella griglia i campi ID, Numero, Data (obbligatori), altri eventuali campi facoltativi
4. In Criteri, devi scrivere le seguenti espressioni nei rispettivi campi:
ID: <>[Maschere]![frmDati]![ID]
Numero: [Maschere]![frmDati]![Numero]
Data: [Maschere]![frmDati]![Data]
5. Salva la query con nome VerificaDuplicato
6. Crea una macro in visualizzazione struttura e apri la colonna Condizioni
7. Nel rigo1 Condizioni, scrivi la seguente espressione:
DCount("*";"VerificaDuplicato";"")>0
8. Nel corrispondente rigo1 Azione, scrivi:
ApriQuery
Nome query: VerificaDuplicato
9. Salva la macro con nome X
10. Apri la frmDati in visualizzazione struttura. Qui hai detto che tu avresti altri campi da compilare, dopo aver compilato Numero e Data. Si potrebbero sfruttare diversi eventi affinchè la query VerificaDuplicato venga messa in moto. Io avrei pensato all'evento "Dopo aggiornamento" sul campo Data perchè immagino che tu hai già compilato il campo Numero prima e poi Data. Quindi, al campo Data, all'evento "Dopo aggiornamento", devi associare la macro X
11. Salva la struttura di frmDati
Or bene, se non ci sono duplicati, la query non avrà record e non viene neppure eseguita perchè la condizione macro valuta solo se la query ha più di 0 record. Io ho scelto di far aprire la query, puoi scegliere di aggiungere una FinestraMessaggio che ti avvisa la presenza di un duplicato. Si tratta di una scelta di stile, ma la sostanza non cambia. Ho fatto un test e funziona.