Ciao Gianni,
chiedo venia! Convinto di ignorare solamente la sintassi per accedere alla sottomaschera ho omesso di spiegare nei dettagli il mio approccio al problema di ricerca.
Come poi precisato da Alex, per quanto riguarda la casella combina ho fatto come segue:
Origine di riga:
SELECT tblVeicoli.NTarga, tblVeicoli.IDCliente, tblVeicoli.Attivo FROM tblClienti INNER JOIN tblVeicoli ON tblClienti.IDCliente = tblVeicoli.IDCliente WHERE (((tblVeicoli.Attivo)=True)) ORDER BY tblVeicoli.NTarga;
Nella Finestra delle Proprietà, però, come colonna associata ho inserito 2 (quindi IDCliente)
Quindi Me.cmbRicercaRapidaTarga.Value = IDCliente
Mentre Me.cmbRicercaRapidaTarga.Column(0) = NTarga
Ora mi sono reso conto che questa metodologia non era corretta.
Per quanto il filtro fosse sempre impostato in maniera corretta, ho notato che a volte, selezionando una targa, nella combobox ne veniva visualizzata un’altra (in pratica la prima associata a quell’IDCliente). Ho quindi di nuovo impostato come colonna associata alla cmbRicercaRapidaTarga la 1° (Quindi NTarga).
Il mio intento iniziale era quello di mostrare i dettagli relativi al cliente che possiede quel preciso veicolo nella maschera principale e, tutti i veicoli da lui posseduti, nella sottomaschera.
Queste linee di codice mi permettevano di riuscire nell’intento (prima della modifica della colonna associata alla combobox):
Private Sub cmbRicercaRapidaTarga_AfterUpdate()
If Not IsNull(Me.cmbRicercaRapidaTarga.Value) Then
Me.Filter = "IDCliente = " & Me.cmbRicercaRapidaTarga.Value
Me.FilterOn = True
Me.cmbRicercaRapidaRagSoc.Value = Null
Me.cmbRicercaRapidaTelaio.Value = Null
End If
End Sub
L’utente di questo piccolo applicativo mi ha poi fatto notare che, in ambito industriale, un’azienda può possedere anche decine di veicoli. Da qui la richiesta di poter vedere solo i dettagli del veicolo la cui targa è stata ricercata e la mia esigenza di poter imporre un filtro anche alla sottomaschera.
Ho risolto così:
Private Sub cmbRicercaRapidaTarga_AfterUpdate()
Dim sCriterioRicercaSub As String
If Not IsNull(Me.cmbRicercaRapidaTarga.Value) Then
Me.Filter = "IDCliente = " & Me.cmbRicercaRapidaTarga.Column(1)
Me.FilterOn = True
sCriterioRicercaSub = "NTarga = " & Chr(39) & Me.cmbRicercaRapidaTarga.Column(0) & Chr(39)
Me.subVeicoli.Form.Filter = sCriterioRicercaSub
Me.subVeicoli.Form.FilterOn = True
Me.subVeicoli.Form.Requery
Me.cmbRicercaRapidaRagSoc.Value = Null
Me.cmbRicercaRapidaTelaio.Value = Null
AttivaModificaReport
End If
End Sub
Quindi proprio come mi avevi suggerito tu precedentemente