Я предлагаю вам попробовать это.
Sub FillEstimatesRoofLaborTypeCombo()
Dim rstEstimateFactorTypes As Recordset
Dim Sqlstring As String
Sqlstring = "Select Distinct FactorType " + _
"From EstimateFactors " + _
"Where Component = 'Roof' And ComponentPart = 'Labor' And FactorType Is Not NULL"
Set rstEstimateFactorTypes = cnnSel.OpenRecordset(Sqlstring, dbOpenSnapshot)
With rtsEstimateFactorTypes
Do While Not .EOF
frmEstimates.cboRoofLaborType.AddItem .Fields!FactorType
.MoveNext
Loop
End With
End Sub
Вы заметите, что код намного проще кода. Я добавил отличный от предложения select вашего запроса и добавил другое условие where clause на FactorType Is NULL. Это приведет к тому, что база данных будет возвращать только те строки, которые вам нужны, поэтому нет необходимости писать код для фильтрации уникальных значений.
Вы также должны заметить, что этот код выполняется значительно быстрее. Если вы получаете всего около дюжины строк из своей базы данных (с исходным кодом), вы можете не заметить разницу, но с большим количеством строк разница в времени выполнения станет более очевидной.
Почему вы не просто изменить SQL строки на «Выбрать Distinct FactorType»? –