ник: snipe
khvostatyy
чувствую не попью я пива
вот это зачем?
s = s & IIf((Nz(Me.search_by_progress_phase, 0) <> 0) Or (Nz(Me.search_by_document_type, 0) <> 0), " where ", "") & IIf((Nz(Me.search_by_progress_phase, 0) <> 0), "(D.progress_phase_id=" & Str(Me.search_by_progress_phase.Value) & ")", "") & IIf((Nz(Me.search_by_progress_phase, 0) <> 0) And (Nz(Me.search_by_document_type, 0) <> 0), " AND ", "") & IIf((Nz(Me.search_by_document_type, 0) <> 0), "(D.document_type_id =" & Str(Me.search_by_document_type.Value) & ")", "")
|
зачем в строке SQL Вам нужны iif?
вам надо дособирать Where
т.е. ваши действия должны быть примерно такие (по моему мнению)
имеем некую текстовую переменную strWhere
изначально strWhere=""
спрашиваем первое поле на значение
если поле пустое то ничего не делаем
если не пустое strWhere присваиваем первое условие
спрашиваем второе поле на значение
если поле пустое то ничего не делаем
если не пустое
спрашиваем strWhere на ""
если "" то strWhere присваиваем второе условие
если не пустое то strWhere = strWhere & "and второе условие"
спрашиваем третье поле на значение
если поле пустое то ничего не делаем
если не пустое
спрашиваем strWhere на ""
если "" то strWhere присваиваем третье условие
если не пустое то strWhere = strWhere & "and третье условие"
....
....
....
спрашиваем N поле на значение
если поле пустое то ничего не делаем
если не пустое
спрашиваем strWhere на ""
если "" то strWhere присваиваем N условие
если не пустое то strWhere = strWhere & "and N условие"
Спрашиваем strWhere на ""
если "" то RowSource присваиваем значение s
если не пустое то RowSource присваиваем значение s & " Where " & strWhere & ";"