2015-05-25 6 views
0

У меня есть форма доступа с фильтром динамической формы, использующая множество элементов управления в качестве критерия. Все работы просто отлично освобожденные для моего диапазона дат ... Вот кусок кода, я использую ..MS Access Form Filter Диапазон дат

Private Sub Command4_Click() 

Dim strWhere As String 
Dim lngLen As Long 
Const DMY = "\#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.PerDesi) Then 
    strWhere = strWhere & "([Uinit] = """ & Me.PerDesi & """) AND " 
End If 


If Not IsNull(Me.DateStart) Then 
    strWhere = strWhere & "([TaskStart] >= " & Format(Me.DateStart, DMY) & ") AND " 
End If 

If Not IsNull(Me.DateEnd) Then 
    strWhere = strWhere & "([TaskEnd] < " & Format(Me.DateEnd + 1, DMY) & ") AND " 
End If 


lngLen = Len(strWhere) - 5 
If lngLen <= 0 Then 
    MsgBox "No criteria", vbInformation, "Nothing to do." 
Else 

strWhere = Left(strWhere, lngLen) 

Me.Debug.Value = strWhere 
    Me.Sub_Desi_Schedule.Form.Filter = strWhere 
    Me.Sub_Desi_Schedule.Form.FilterOn = True 
End If 

Когда я смотрю на свой «Debuger» ГДЕ критерий кажется просто отлично.

Howerver Я все еще получаю «Введите значение параметра», и ничего не отображается, даже если вы повторно вводите их.

Когда вы не используете диапазон дат в моих фильтрах форм, все работает плавно.

Предложения, идеи более чем приветствуются. (пожалуйста, имейте в виду, что я не являюсь VB-гуру ........ Так что будьте добры :-))

ответ

-1

Я думаю, вы можете просто пропустить даты обертки «#».

Try:

"([TaskStart] >= #" & Format(Me.DateStart, DMY) & "#) AND ([TaskEnd] < #" & Format(Me.DateEnd + 1, DMY) & "#) 
+0

Нет, я ошибаюсь. Должен был прочитать ваш код более внимательно. У вашей константы есть обертки даты. Сожалею. - MrE – MrE

+0

Привет, господин ЭТО То, что эта часть кода делает как константа Const DMY = "\ #dd \/mm \/yyyy \ #" В моем управлении отладчиком вот результат: ([TaskStart]> = # 01/05/2015 #) И ([TaskEnd] <# 01/06/2015 #) Я действительно царапаю голову над этим ... –

+0

На этот раз сделал еще немного домашней работы. Это странно, но я получил его для работы, удалив ключевое слово WHERE: Me.Filter = "[StartDate]> = # 05/05/1970" Найдено на http://answers.microsoft.com/en-us/ office/forum/office_2003-access/mefilter/c07d6930-2ace-46c0-a3e6-e16a2c686500 - Надеемся, что это поможет, но может вызвать проблемы с вашими другими фильтрами. – MrE

Смежные вопросы