powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / критерии для запроса отчета
12 сообщений из 37, страница 2 из 2
критерии для запроса отчета
    #39930974
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, еще один вопрос по этой теме. Не могу добавить Crit в первую строку после If. Пробовал везде: и спереди, и сзади )), с запятыми, амперсантами и с кавычками в разных вариантах... Иногда никакой ошибки не выдает, но и фильтр по датам не происходит. Подскажите, пж, куда и с чем? )


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim Crit As String

    ПериодС = IIf(IsNull(ПериодС), "05.12.1998", ПериодС)
    ПериодДо = IIf(IsNull(ПериодДо), Date, ПериодДо)

Crit = "[Договор_Дата]between #" & Format(ПериодС, "mm-dd-yy") & "# and #" & Format(ПериодДо, "mm-dd-yy") & "#"

    If Me.Флажок34 = False Then     
        DoCmd.OpenReport "uContract", acPreview, WhereCondition:="Not [Предмет договора] Like 'Сервис*'"
             Else
        DoCmd.OpenReport "uContract", acPreview, , Crit
             End If
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931034
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga
Код: vbnet
1.
Crit = "[Договор_Дата]between #" & Format(ПериодС, "mm-dd-yy") & "# and #" & Format(ПериодДо, "mm-dd-yy") & "#"

Кто теб сказал что это должно быть так?
Не можешь сам, используй BuildCriteria например
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim strCriteria as string
If not Me.Флажок34  Then 
strCriteria= "Not [Предмет договора] Like 'Сервис*'"
Else
strCriteria=Application.BuildCriteria("[Договор_Дата]",dbDate,"between " & Nz(Me.ПериодС, DateSerial(1998, 12, 5)) & " and " & Nz(Me.ПериодДо ,Date))
End If
DoCmd.OpenReport "uContract", acPreview, WhereCondition:= strCriteria
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931036
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga, я же ссылку давал на создание запросов. Тут точно так же как там написано.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931049
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

спасибо!!

А Crit я срисовал с книжки одной, причем вариант работает. Во второй строке моего же условия на If все выводит правильно. Но я конечно переделаю как надо, а то видать устарела конструкция )
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931121
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант:
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931379
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga
А Crit я срисовал с книжки одной, причем вариант работает. Во второй строке моего же условия на If все выводит правильно. Но я конечно переделаю как надо, а то видать устарела конструкция )
Это ты про вот это?
Панург
kniga
Код: vbnet
1.
Crit = "[Договор_Дата]between #" & Format(ПериодС, "mm-dd-yy") & "# and #" & Format(ПериодДо, "mm-dd-yy") & "#"


Кто теб сказал что это должно быть так?
Если да, то боюсь тебя расстроить, но эта книга, либо не про Access, либо её выкинуть нужно.
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931538
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, большое спасибо за Ваш вариант! Правда кажется немного длинноватым код, учитывая то, что у меня Сase(ов) 4, и на каждом с условием If. ))
Извините, я воспользовался вашим примером для добавления моей формы, чтобы показать весь код на кнопку в ней:)
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931551
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

прикладываю фотки книги откуда я взял процедуру. Издание 2006 года, я применил ее году так в 2008, все работает и когда вводишь дату в форму через слеш и через тире. Я так понял главное точки в датах в процедуре не ставить, ошибочно будет показывать.

По поводу кода в моей форме, в приложенной выше базе, то я вместо Crit , просто добавил ее полное определение в конструкцию wherecondition и все работает как планировалось . Но как то некрасиво выглядит, все-таки если описана переменная Crit то и вставлять надо именно Crit .. наверно, как в самой последней строчке кода.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Private Sub adc_Click()
Dim Crit As String

    ПериодС = IIf(IsNull(ПериодС), "05.12.1998", ПериодС)
    ПериодДо = IIf(IsNull(ПериодДо), Date, ПериодДо)

Crit = "[Дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"

   Select Case Me.Группа4.Value
   
Case 1
If Me.Флажок34 = False Then
    
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="Not [Закрыт] AND Not [предмет] Like 'Сервис*'AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    Else
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="Not [Закрыт] AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    End If
    
Case 2
If Me.Флажок34 = False Then
    
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="IsNull([Акты]) AND Not [Предмет] Like 'Сервис*' AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    Else
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="IsNull([Акты]) AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    End If
    
Case 3
If Me.Флажок34 = False Then
  
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="[Закрыт] AND Not [Предмет] Like 'Сервис*' AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    Else
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="[Закрыт] AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    End If
    
Case 4
If Me.Флажок34 = False Then
   
        DoCmd.OpenReport "таблица1", acPreview, WhereCondition:="Not [Предмет] Like 'Сервис*' AND [дата]between #" & Format(ПериодС, "mm\/dd\/yy") & "# and #" & Format(ПериодДо, "mm\/dd\/yy") & "#"
    Else
        DoCmd.OpenReport "таблица1", acPreview, ,Crit
    End If
        
End Select
   
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931565
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай еще раз вопрос: Как "воткнуть" именно Crit , а не все ее определение после WhereCondition или внутри этого условия? (Извиняюсь за незнание терминологии)
Кстати, я пытался сделать перенос строки, смиряясь с ее длиной, но _, _& не помогает. Видать внутри аргумента WhereCondition нельзя делить строку?
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931634
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kniga
.....Правда кажется немного длинноватым код...
Тогда я английская королева
Особенно если учесть что в каждом шаге CASE повторяется,за небольшими изменениями,одно и то же
kniga
...Как "воткнуть" именно Crit , а не все ее определение после WhereCondition или внутри этого условия?...
Код: vbnet
1.
2.
3.
4.
....
Crit = Mid(k1 & k2 & k3, 6)
DoCmd.OpenReport "таблица1", acViewPreview, , Crit
....
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931705
Фотография kniga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

спасибо! Бум думать ) А перенос в длинной строке я сделал, знак переноса не там ставил, надо было перед &Format, а я ставил перед AND ))
...
Рейтинг: 0 / 0
критерии для запроса отчета
    #39931897
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kniga,

У себя для сбора условий по дате использую такую функцию

Код: vbnet
1.
2.
3.
Public Function fncDateToSTR(dDate) As String
 fncDateToSTR = "#" & Replace(Format(dDate, "mm/dd/yyyy hh:nn:ss"), ".", "/") & "#"
End Function



может использоваться так

Код: vbnet
1.
2.
  'За последнюю неделю
  svFilter = " and dDate between " & fncDateToSTR(date()) & " and " & fncDateToSTR(date() - 7)
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / критерии для запроса отчета
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]