Sì, ma la tempo stesso lungo e complicato...
Ti posto il codice intero della form... è lungo, ma da questo ricavi il modo in cui visualizzo le combo
****************************
codice:
Option Explicit
Dim mblnSelezioneFatta As Boolean
Dim mstrSQL As String
'Cancel
Private Sub cmd_cancel_Click()
mblnSelezioneFatta = False
Me.Hide
End Sub
'Ok
Private Sub cmd_ok_Click()
Dim blnSelezionaOperator As Boolean
Dim blnSelezionaDate As Boolean
Dim blnSelezionaProject As Boolean
Dim blnSelezionaCustomer As Boolean
Dim blnSelezionaLotCode As Boolean
Dim blnSelezionaPassed As Boolean
Dim blnSelezionaItem As Boolean
If cmb_operator.Text <> "" Then
blnSelezionaOperator = True
End If
If cmb_date.Text <> "" Then
blnSelezionaDate = True
End If
If cmb_project.Text <> "" Then
blnSelezionaProject = True
End If
If cmb_customer.Text <> "" Then
blnSelezionaCustomer = True
End If
If cmb_lotcode.Text <> "" Then
blnSelezionaLotCode = True
End If
If cmb_passed.Text <> "" Then
blnSelezionaPassed = True
End If
If cmb_item.Text <> "" Then
blnSelezionaItem = True
End If
mblnSelezioneFatta = False 'Ancora nessuna selezione
If blnSelezionaLotCode Or blnSelezionaItem Or blnSelezionaPassed Or blnSelezionaOperator Or blnSelezionaDate Or blnSelezionaProject Or blnSelezionaCustomer Then
mstrSQL = "SELECT * FROM Test"
mblnSelezioneFatta = True
ElseIf blnSelezionaOperator Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.Operator LIKE '" & cmb_operator.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
ElseIf blnSelezionaDate Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.Date LIKE '" & cmb_date.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
ElseIf blnSelezionaProject Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.Project LIKE '" & cmb_project.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
ElseIf blnSelezionaCustomer Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.Customer LIKE '" & cmb_customer.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
ElseIf blnSelezionaLotCode Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.LotCode LIKE '" & cmb_lotcode.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
ElseIf blnSelezionaPassed Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.Passed LIKE '" & cmb_passed.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
ElseIf blnSelezionaItem Then
mstrSQL = "SELECT * FROM Test" & _
"WHERE Test.Item LIKE '" & cmb_item.Text & "*' " & _
"And Test.Operator = Operator.Operator"
mblnSelezioneFatta = True
End If
Me.Hide
End Sub
'Load
Private Sub Form_Load()
Dim strSQL As String
With frm_search.dat_cablostat
dat_operator.DatabaseName = .DatabaseName
dat_date.DatabaseName = .DatabaseName
dat_project.DatabaseName = .DatabaseName
dat_customer.DatabaseName = .DatabaseName
dat_lotcode.DatabaseName = .DatabaseName
dat_passed.DatabaseName = .DatabaseName
dat_item.DatabaseName = .DatabaseName
End With
strSQL = "SELECT DISTINCT Operator, Date, Project, Customer, LotCode, Passed, Item FROM Test "
With dat_operator
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!Operator <> "" Then
cmb_operator.AddItem .Recordset!Operator
End If
.Recordset.MoveNext
Loop
End With
With dat_date
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!Date <> "" Then
cmb_date.AddItem .Recordset!Date
End If
.Recordset.MoveNext
Loop
End With
With dat_project
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!Project <> "" Then
cmb_project.AddItem .Recordset!Project
End If
.Recordset.MoveNext
Loop
End With
With dat_customer
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!Customer <> "" Then
cmb_customer.AddItem .Recordset!Customer
End If
.Recordset.MoveNext
Loop
End With
With dat_lotcode
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!LotCode <> "" Then
cmb_lotcode.AddItem .Recordset!LotCode
End If
.Recordset.MoveNext
Loop
End With
With dat_passed
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!Passed <> "" Then
cmb_passed.AddItem .Recordset!Passed
End If
.Recordset.MoveNext
Loop
End With
With dat_item
.RecordSource = strSQL
.Refresh
Do Until .Recordset.EOF
If .Recordset!Item <> "" Then
cmb_item.AddItem .Recordset!Item
End If
.Recordset.MoveNext
Loop
End With
End Sub
'SelezioneFatta
Public Property Get SelezioneFatta() As Boolean
SelezioneFatta = mblnSelezioneFatta
End Property
'SQL
Public Property Get SQL() As String
SQL = mstrSQL
End Property
'Form Activate
Private Sub Fom_Activate()
cmb_operator.Text = ""
cmb_date.Text = ""
cmb_project.Text = ""
cmb_customer.Text = ""
cmb_lotcode.Text = ""
cmb_passed.Text = ""
cmb_item.Text = ""
End Sub