Mi interessa poter riutilizzare la function, ma non sono sicuro di come applicare il tuo esempio, Io avevo ipotizzato un'altra strada, ti spiego prima cosa fa: all'apertura del DB seleziono un tipo di commessa da visualizzare dalla Form1, al click mi si apre una maschera (Form2) con i dati filtrati e selezionando una delle voci mi si apre una terza maschera (Form3) che viene personalizzata in funzione della selezione fatta nella prima form.
Attualmente il codice semplificato è:
Public Var_BT_Tipo_Commessa As String
Public Tipo_commessa As String
FORM1
Call Apri elenco()
Function Apri_elenco()
Select Case Screen.ActiveControl.Name
Case "Bt_Archivio_Commesse": Var_BT_Tipo_Commessa = "[Progetti]!Tipo_commessa=""commessa_a"" And ([Progetti]!Stato=""Completato"")": Tipo_commessa_selezionata = "Commessa_chi"
Case "Bt_Commesse_Attive": Var_BT_Tipo_Commessa = "[Progetti]![Tipo_commessa]=""commessa_c"" And ([Progetti]![Stato]=""In Corso"")": Tipo_commessa_selezionata = "Commessa_att"
End Select
DoCmd.OpenForm "Elenco", acNormal, "Tipo Commessa", Var_BT_Tipo_Commessa, acFormEdit, acNormal
Form3
Call Modella()
Function Modella()
If Tipo_commessa = "commessa_att" Then
Forms![Commesse].IntestazioneMaschera.BackColor = vbRed
...
GoTo 100
End If
If Tipo_commessa_selezionata = "commessa_chi" Then
Forms![Commesse].IntestazioneMaschera.BackColor = vbBlue
...
GoTo 100
End If
100
Forms![Commesse].Etichetta1049.TextAlign = 2
' filtra utenti
Dim strSQL As String
strSQL = "SELECT [Utenti].* FROM [Utenti] WHERE ((([Utenti].[Tipo_commessa])= """ & Tipo_commessa & """));"
Forms![Commesse].Utente_riferimento.RowSource = strSQL
...
End Function
mentre usando il tuo esempio sarebbe:
Call modella([Commesse], Utente_Riferimento)
Giusto? pero mi dice subito "impossibile trovare il campo |1 a cui fa riferimento" e Utente_Riferimento mi viene visto come il valore contenuto nella combobox Utente_Riferimento = "pippo"
Public Function modella(ByVal strNomeMaschera as String, ByRef miaCombo As ComboBox)
Dim frm as Form
Dim strSQL As String
strSQL = "SELECT [Utenti].* FROM [Utenti] WHERE ((([Utenti].[Tipo_commessa])= """ & Tipo_commessa & """));"
Set frm = Forms(strNomeMaschera)
frm.miaCombo.RowSource = strSQL
Set frm = Nothing
end function
Dove sbaglio?