Te contesto a tu pregunta, pero, personalmente creo que se podría hacer de otra forma. No dices si rellenas, primero los cuadros de texto de la izquierda y te los pasa a al subformulario de la derecha, o ... Por otro lado vamos a suponer que el origen de registro del formulario de abajo es la tabla Capturas
Podrías poner, en el evento Después de actualizar del control barco
If barco=dlast("barco","capturas") then
[ id de arribo]=dlast("[id de arribo]","capturas")
end if
Mira, si tengo el formulario Copia, donde puedes ver el nombre del último Cliente
Me voy a un registro nuevo y vuelvo a escribir el mismo cliente( puedes ver que el cursor aún está en ese control)
Cuando pulso Enter
En Idcliente, me ha puesto el último
En este caso, el código del evento Después de actualizar del control Cliente es
Private Sub Cliente_AfterUpdate()
If Cliente = DLast("cliente", "copia") Then
IdCliente = DLast("idcliente", "copia")
End If
End Sub
te decía que personalmente lo haría de otra forma. de forma que si ahora, en un registro nuevo, volviera a poner, por ejemplo, Antonio Moreno Taquería, en idcliente me pusiera el id que le correspondiera. En ese caso, el código lo dejaría como
Private Sub Cliente_AfterUpdate()
IdCliente = DLast("idcliente", "copia", "cliente='" & Me.Cliente & "'")
End Sub
De forma, que si ese cliente ya está, me repita su Idcliente, aunque hayan pasado 20 registros. Que escribo un registro nuevo, como no hay anterior no me pone nada y tengo que rellenar el Idcliente a huevo.