Buonasera.
Richiesta di un consiglio se il mio approccio al problema è ottimale e veloce, oppure ne esistono altri migliori, oppure mi sfugge qualcosa sull'uso di open args.
Da una form dedicata alla ricerca di dati diversi, tramite combobox diverse, passo il dato da ricercare tramite openArgs.
Fino a quando si tratta di un dato da ricercare che va a filtrare un solo campo il problema non sussiste.
Quando invece, devo ricercare il dato su campi diversi mi sono trovato davanti il problema di capire a quale campo deve essere passato il criterio, per poi passare il dato da filtrare.
ho operato in questo modo:
Creo una stringa formata da un identificatore iniziale e il dato da passare.
Ad esempio:
combobox1 diventa “Avalore”
combobox2 diventa “Bvalore”
e così via…
Poi nel form load con Mid() e left() separo l'identificatore ed il dato per poi andare a fare la ricerca tramite un select case.
riporto il codice per essere più chiaro.
Creazione della stringa da passare
Private Sub CasellaCombinata0_AfterUpdate()
Dim casella As String
If IsNull(casella = Me.CasellaCombinata0.Value) Then
MsgBox ("Inserire un valore valido per la ricerca")
Exit Sub
Else
casella = ("A" & Me.CasellaCombinata0.Value)
End If
DoCmd.OpenForm "Nome_Form", , , , , , casella
End Sub
Discriminazione del controllo e ricerca
Private Sub Form_Load()
Dim variabile As String
Dim controllo As String
Dim dato As String
If IsNull(variabile = Me.OpenArgs) Then Exit Sub
variabile = Me.OpenArgs
controllo = Left(variabile, 1)
dato = Mid(variabile, 2)
Select Case controllo
Case "A"
Me.Filter = "Nome_Primo_campo =" & dato 'dato numerico
Case "B"
dato = Chr(34) & dato & Chr(34)
Me.Filter = "Nome_secondo_campo =" & dato 'dato stringa
End Select
Me.FilterOn = True
End Sub
Grazie a tutti