Я хочу создать функцию множественного фильтра в VBA для сортировки подформы из элементов управления в основной форме.Ошибка времени выполнения 3075
Вот мой код
Dim strWhere As String
Dim lngLen As Long
Const conJetDate = "\#dd\/mm\/yyyy\#"
If Not IsNull(Me.PerPNum) Then
strWhere = "([PNum] = " & Me.PerPNum & ") AND "
End If
If Not IsNull(Me.PerPPro) Then
strWhere = strWhere & "([PPro] = " & Me.PerPPro & ") AND "
End If
If Not IsNull(Me.PerPRev) Then
strWhere = strWhere & "([PRev] = " & Me.PerPRev & ") AND "
End If
If Not IsNull(Me.DateStart) Then
strWhere = strWhere & "([TaskStart] >= " & Format(Me.DateStart, conJetDate) & ") AND "
End If
If Not IsNull(Me.DateEnd) Then
strWhere = strWhere & "([TaskEnd] < " & Format(Me.DateEnd + 1, conJetDate) & ") AND "
End If
If Not IsNull(Me.PerDesi) Then
strWhere = strWhere & "([UInit] = " & Me.PerDesi & ") AND "
End If
lngLen = Len(strWhere) - 5
If lngLen <= 0 Then
MsgBox "No criteria", vbInformation, "Nothing to do."
Else
Debug.Print strWhere
Me.Sub_Desi_Schedule.Form.Filter = strWhere
Me.Sub_Desi_Schedule.Form.FilterOn = True
End If
Однако я продолжаю получать ошибки времени выполнения 3075 (Синтаксическая ошибка (отсутствующий оператор) в выражении запроса.
Я могу видеть мои переменные в сообщении об ошибке, хотя .
Я знаю, что это мое выражение запроса, что неправильный формат. Но я не могу понять, что.
Вы никогда не снимаете конечный 'AND' в своем запросе. Вы устанавливаете переменную равной длине ('lngLen = Len (strWhere) - 5'), но никогда не обновляете переменную' strWhere'. Просто проверка вашей «Debug.Print strWhere» должна была подтвердить это. Голосование закрывается как опечатка. – LittleBobbyTables
Это действительно всегда заканчивается словами «И». Кусок кода lngLen = Len (strWhere) - 5 Если lngLen <= 0 Затем MsgBox «Без критериев», vbИнформация «Нечего делать». Else Предполагается избавиться от этого хвоста –
Я не думаю, что вы понимаете код, который вы написали. 'lngLen = Len (strWhere) - 5' просто устанавливает переменную' lngLen' равной длине переменной 'strWhere', минус 5. Ни в коем случае не удаляйте конечное предложение AND и' strWhere', которое является причиной вашей проблемы. – LittleBobbyTables