Supongo que en Idsolicitud del formulario Salidas escribes, por ejemplo, 00017, y supongamos que el valor que relaciona formulario solicitudes con subformulario( no sé su nombre, así que lo llamaré DetalleSocitud) es el campo Idsolicitud. Se es así, y suponiendo que el formulario Socitudes... está cerrado( da igual que esté abierto, pero es para que veas que no es necesario) basta con que en el evento Después de actualizar del cuadro de texto Idsolicitud del formulario Salidas, crees un procedimiento de evento y entre Private Sub y end Sub pongas
Private Sub IdSolicitud_AfterUpdate()
IdCliente = DLookup("idcliente", "solicitudes de almacen", "idsolicitud='" & Me.Idsolicitud & "'")
Fecha = DLookup("fecha", "solicitudes de almacen", "idsolicitud='" & Me.Idsolicitud & "'")
Identificacion = DLookup("identificacion", "solicitudes de almacen", "idsolicitud='" & Me.Idsolicitud & "'")
DoCmd.RunSQL "insert into detallesalida select idproducto,descripcion,cantidad,presentacion from detallesolicitud where idsolicitud='" & Me.Idsolicitud & "'"
DoCmd.RunSQL "update detallesalida set idsalida=" & Me.IdSalida & " where idsalida is null"
Me.DetalleSalida.Form.Requery
End Sub
Así, si tengo el formulario Solicitudes de almacen
En el formulario Salidas( el otro está cerrado, ya que no hace falta que esté abierto) escribo ese idsolicitud
En cuanto pulso Enter
Es decir, al escribir el idsolicitud, lo que hace es buscar los valores en la tabla Solicitudes... y los "pone" en sus cuadros de texto, y como este formulario depende de la tabla Salidas, ya te lo guarda. Luego inserta en la tabla Detallesalida aquellos valores de la tabla DetalleSolicitud en que el idsolicitud sea igual al que hay en el formulario.