(ero distratto a scrivere questo post mentre voi proseguivate con la discussione, quindi perdonatemi se ho ignorato del tutto i due interventi che precedono questo)
asnaldo ha scritto:
ho provato così ma non funge
il "non funge" è un'indicazione un po' troppo generica. Cosa non funge? Presumibilmente un po' tutto.
asnaldo ha scritto:
Private Sub crea_ordine_Click()
DoCmd.OpenForm "ordine", acNormal, , , _
acReadOnly, , "id_cliente"
End Sub
Ma come? acReadOnly: apri in sola lettura una maschera in qui devi inserire un nuovo record?
Se passi al parametro OpenArgs "id_cliente", nella maschera che apri ti troverai la proprietà OpenArgs valorizzata ad "id_cliente", una stringa, non il valore
Private Sub crea_ordine_Click()
DoCmd.OpenForm "ordine", acNormal, , , _
acFormAdd, , Me![id_cliente].Value
End Sub
E qui si chiude il codice della maschera di partenza
Qua si passa alla maschera "ordine"
asnaldo ha scritto:
Sub Form_Open
Dim strcliente As Integer
strcliente = Forms![ordine].OpenArgs
If Len(strcliente) > 0 Then
DoCmd.GoToControl "Last Name"
DoCmd.FindRecord strcliente, , True, , _
True, , True
End If
End Sub
Non è coerente nominare una variabile con le iniziali str quando è tipo Integer.
Puoi riferirti alla maschera stessa con Me, quindi
Sub Form_Open
Dim intCliente As Integer
intcliente = Me.OpenArgs
Me![CampoIDCliente].Value = intCliente
End Sub
Secondo me già con questo sei a buon punto. A cosa ti servisse tutto il resto, da [If Len] alla fine, non lo capisco. Forse un tentativo per correggere gli errori in apertura di prima.
Che tipo di maschera è "Ordini"? Credo una maschera singola.