Lascia come chiave primaria IDSPEC, è giusto così. Il campo Cognome non garantisce univocità, quindi non è ideale come chiave primaria.
Credo di intuire il tuo problema che si può risolvere sia attraverso la via del codice VBA (segui i suggerimenti di @Alex che è molto esperto al riguardo), sia con una semplice macro. In quest'ultimo caso potrei darti una dritta io:
1. Apri una macro in visualizzazione struttura
2. Nel primo rigo Azioni, scrivi così:
ApriReport
Nome report: TuoReport
Condizione WHERE: [IDSPEC]=[Maschere]![NomeMaschera]![IDSPEC]
3. Salva la macro con nome StampaIDSPECCorrente
4. Vai in visualizzazione struttura maschera
5. Se non avevi predisposto un pulsante, aggiungi un "pulsante di comando" che chiamerai "Stampa IDSPEC Corrente"
6. Vai alle proprietà del pulsante, scheda Eventi, Su clic: StampaIDSPECCorrente
7. Salva tutto
È importante osservare che anche il report deve avere un campo IDSPEC visibile, altrimenti la condizione WHERE, attraverso il campo che vedi scritto a sinistra di = non può filtrare IDSPEC della maschera.
Ripeto, io ti ho risposto con macro, ma si può tutto riportare con codice VBA da costruire manualmente perchè le procedure guidate riescono a soddisfare soltanto pochi utilizzi base (ad es. Apri Report (semplice)), ma non un caso particolare come quello che hai proposto tu.