Ti proporrei di ragionare in modo più funzionale... i suggerimenti ricevuti vanno compresi sia per i pregi che per i difetti.
Quanto suggerito da Marco, non è affatto un buon metodo, per vari motivi principalmente è una tecnica di MALA PROGRAMMAZIONE in quanto vincoli Oggetti ad Oggetti, ne consegue che la Form iniziale deve rimanere aperta, e che la Form da aprire può funzionare SOLO se chiamata dalla Form iniziale... e non è così che si sviluppa, oltretutto la Form non viene aperta in AGGIUNTA, e solitamente le Form di INSERIMENTO si aprono come MODALI, [acDialog] rendendo quel codice inutile.
Il nocciolo del problema è che un Tavolo, deve essere in relazione 1-M con gli Ordini, e finchè apri un'ordine già inserito non ci sono problemi... ma se apri un'ordine NUOVO sfruttando una Form esterna associata alla Tabella MOLTI, allora devi relazionare la FK alla PK del Tavolo.
Nel link proposto da [Sgrubak] la tecnica è più corretta, si suggerisce l'uso di OpenArgs ma... servirebbe fare una attenta analisi di come funziona, magari a livello transazionale per capire cosa succede in caso di annullamento Ordine...
Semplifichiamo, quanto sopra è argomento più complesso.
Quando devi inserire un NUOVO ORDINE la form viene aperta in modalità "AGGIUNTA"... recuperando il valore della FK da OpenArgs si valorizza la FK... ma se apri la Form in altra modalità passando erroneamente il parametro si fanno danni...!
DoCmd.OpenForm "NomeForm", , , , acFormAdd, acDialog, Me.IdTavolo
Quindi nella Form Ordini che è SOLO 1 non hai Form per guardare Ordini e Form per INSERIRE...:
Private Sub Form_Load()
If Me.NewRecord Then
If Len(Me.OpenArgs & vbNullstring)>0 then Me.CampoFK=Me.OpenArgs
End If
End Sub