powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как отформатировать запрос в VBA?
25 сообщений из 32, страница 1 из 2
Как отформатировать запрос в VBA?
    #39273851
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги подскажите пожалуйста, как отформатировать запрос в VBA!
Есть запрос, на основе которого сделана подчиненная форма, в запросе параметр берется из поля в основной форме (поле типа Дата и называется Me.fi_date1)
Изначальный копи-паст запроса в VBA:
Код: sql
1.
2.
3.
RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull(Forms!Наряды!fi_date1) or Forms!Наряды!fi_date1 = "", Наряды!Дата, Наряды!Дата >= Forms!Наряды!fi_date1) = True;"



После доработки получился вот такой запрос, но он тоже выдает ошибку
Код: sql
1.
2.
3.
RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull(#" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) or #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "# = #" & "" & "#, Наряды!Дата, Наряды!Дата >= #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) = True;"



что я сделал не так?
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273893
Исходя из вашего условия при пустом поле на форме должны возвращаться записи, где Дата = True? Это условие не выполнимо, видимо вы хотели вернуть ВСЕ записи. Тогда лучше так:
Код: plsql
1.
...WHERE (Forms!Наряды!fi_date1 Is Null) or (Дата >= Forms!Наряды!fi_date1)

PS. Поле на форме обязательно должно иметь формат даты.
PPS. Условие Forms!Наряды!fi_date1 = "" - лишнее.
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273916
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ), добрый день! Спасибо за помощь!
В моем запросе, если на форме поле Me.fi_date1 пустое или isnull, то берутся ВСЕ данные из таблицы, просто у меня вопрос именно как отформатировать правильно запрос
Код: sql
1.
2.
3.
RS.Source = "SELECT Íàðÿäû.* " & _
            "FROM Íàðÿäû " & _
            "WHERE IIf(isnull(#" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#), not isnull(Íàðÿäû!Äàòà), Íàðÿäû!Äàòà >= #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) = True;"



вот этот вариант выдает синтаксическую ошибку(((
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273921
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с крокозябрами получилось((
Код: sql
1.
2.
3.
RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull(#" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#), not isnull(Наряды!Дата), Наряды!Дата >= #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) = True;"
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273960
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-,
поясните,что именно Вы подразумеваете под словами "отформатировать запрос" (ведь в запросе, кроме как,изменить ширину полей, шрифт,параметры печати и сделать-то больше ничего нельзя
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273972
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
В моем запросе Access ругается что неверный синтаксис Даты
Код: sql
1.
2.
3.
4.
5.
RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull(#" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) or #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "# = #" & "" & "#, " & _
            "Наряды!Дата, " & _
            "Наряды!Дата >= #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) = True;"



Вот этот запрос. Я и спрашиваю у форумчан, верно ли я проставил значки решетки # и пр?
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273982
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И поймите,что условие отбора справедливо для ВСЕХ записей запроса и оно не может измениться в зависимости от значения какого-то поля в записи(т.к это оно меняется в записях)
Если какое-то поле пустое,то отбери такие-то записи,а остальные скрой,а если не пустое то отбери такие-то а другие скрой, а как это сделать в одном запросе?(Нужен простой запрос с параметром)
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39273987
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПыСы-это вычисляемое поле,а не условие отбора
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274004
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
это только часть моего запроса (этот запрос - источник данных подчиненной формы),
весь запрос выглядит так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT Наряды.*
FROM Наряды
WHERE (((IIf(IsNull(Формы!Наряды!fi_date2) Or Формы!Наряды!fi_date2="",Наряды!Дата>0,Наряды!Дата<=Формы!Наряды!fi_date2))=True) 
And ((IIf(IsNull(Forms!Наряды!fi_SN) Or Forms!Наряды!fi_SN="",Наряды![SN устройства]<>"-1",Наряды![SN устройства]=Forms!Наряды!fi_SN))=True) 
And ((IIf(IsNull(Forms!Наряды!fi_ID) Or Forms!Наряды!fi_ID="",Наряды![ID устройства]<>"-1",Наряды![ID устройства]=Forms!Наряды!fi_ID))=True) 
And ((IIf(IsNull(Формы!Наряды!fi_date1) Or Формы!Наряды!fi_date1="",Наряды!Дата>0,Наряды!Дата>=Формы!Наряды!fi_date1))=True)
And ((IIf(IsNull(Формы!Наряды!fi_isp) Or Формы!Наряды!fi_isp="",Наряды!Исполнитель<>"-1",Наряды!Исполнитель=Формы!Наряды!fi_isp))=True))
ORDER BY Наряды.Дата, Наряды.Исполнитель;



по части полей я уже в VBA сделал запрос, работает нормально
Код: sql
1.
2.
3.
4.
5.
RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull('" & Me.fi_isp & "') or '" & Me.fi_isp & "'='" & "" & "', Наряды!Исполнитель, Наряды!Исполнитель = '" & Me.fi_isp & "') = True " & _
            "And IIf(isnull('" & Me.fi_SN & "') or '" & Me.fi_SN & "'='" & "" & "', Наряды![SN устройства], Наряды![SN устройства] = '" & Me.fi_SN & "') = True " & _
            "And IIf(isnull('" & Me.fi_ID & "') or '" & Me.fi_ID & "'='" & "" & "', Наряды![ID устройства], Наряды![ID устройства] = '" & Me.fi_ID & "') = True;"


осталось доделать 2 поля с Датами (начало и конец периода) - но выдается ошибка синтаксиса - вот поэтому я и задал здесь упрощенный вариант моего запроса.
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274008
авторВ моем запросе Access ругается что неверный синтаксис Даты

гарантированное понимание Access'om даты:

"[Поле запроса типа дата] = #" & Dateserial(2016,07,14) & "# и так далее по запросу

а вообще имхо лучше сначала отработать запрос в бланке запросов, а потом его форматировать для вставки в переменную

ИМХО проблем меньше
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274021
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-,

Кто же это научил вас так условие WHERE составлять?!
Уже второй случай за два дня....
Жуть какая-то...
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274039
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, у меня на основной форме 5 полей (фильтров) и подчиненная формочка основанная на этом большом запросе, так что без такого условия отбора никак(((
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274059
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-,

Уже даже не говоря о построенных выражениях, но....
Но зачем Вы вносите проверки значений полей формы внутрь запроса,
ведь можно проверять эти значения раньше, при построении запроса,
и запрос примет уже готовый вид.
Да еще в IsNull вставляете строки в кавычках... Ох...
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274061
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос остается открытым(((, что неверно в синтаксисе Даты в запросе:
Код: sql
1.
2.
3.
4.
5.
RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull(#" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) or #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "# = #" & "" & "#, " & _
            "Наряды!Дата, " & _
            "Наряды!Дата >= #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "#) = True;"
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274074
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-,

А что такое здесь Source? К какому объекту Вы это применяете?
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274083
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-,

У Вас там прямо кладезь.
Вот этим думаете проверить поле даты на пустое значение?
Код: sql
1.
..... Format(Me.fi_date1, "dd\/mm\/yyyy") & "# = #" & "" & "#, "..... 

А потом еще дату из таблицы, Наряды!Дата, собираетесь сравнивать с True?
Кстати, нужна точка, а не восклицательный знак.
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274292
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle-SWAN-,

У Вас там прямо кладезь.
Вот этим думаете проверить поле даты на пустое значение?
Код: sql
1.
..... Format(Me.fi_date1, "dd\/mm\/yyyy") & "# = #" & "" & "#, "..... 

А потом еще дату из таблицы, Наряды!Дата, собираетесь сравнивать с True?
Кстати, нужна точка, а не восклицательный знак.

А как надо проверить дату на пустое значение?
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274378
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите. Может, что-нибудь поймете.
И на порядок следования дней и месяцев взгляните.
Код: vbnet
1.
2.
3.
S = "SELECT Наряды.* " & _ 
    "FROM Наряды" & _ 
    IIf(IsNull(Me.fi_date1), "", " WHERE Наряды.Дата>=" & Format(Me.fi_date1, "\#mm\/dd\/yyyy\#")



А что же Вы на вопросы-то не отвечаете?
Вам, значит, все разжуй, а Вы не соизволяете?
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274387
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
спасибо!
Но проверки на пустое значение Даты я так и не увидел(((
У вас есть только проверка на Isnull.
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274399
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-, в запросе все пустые значения проверяются одинаково - IS Null
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274401
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-У вас есть только проверка на Isnull.Не путай с функцией.
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274408
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-__Michelle,
спасибо!
Но проверки на пустое значение Даты я так и не увидел(((
У вас есть только проверка на Isnull.Не увидели, значит, это не нужно.
Почитайте Help про дату, как выглядит "пустая" дата.

На вопросы упорно не отвечаете?
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274487
-SWAN-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle-SWAN-,

А что такое здесь Source? К какому объекту Вы это применяете?

на какие вопросы я не ответил?
У меня теперь запрос выглядит так (поля дата1 и дата2 теперь обязательно имеют какое-нибудь значение отличное от пустого и НУЛЛ)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set RS = New ADODB.Recordset
RS.ActiveConnection = CurrentProject.Connection

RS.Source = "SELECT Наряды.* " & _
            "FROM Наряды " & _
            "WHERE IIf(isnull('" & Me.fi_isp & "') or '" & Me.fi_isp & "'='" & "" & "', Наряды!Исполнитель, Наряды!Исполнитель = '" & Me.fi_isp & "') = True " & _
            "And IIf(isnull('" & Me.fi_SN & "') or '" & Me.fi_SN & "'='" & "" & "', Наряды![SN устройства], Наряды![SN устройства] = '" & Me.fi_SN & "') = True " & _
            "And IIf(isnull('" & Me.fi_ID & "') or '" & Me.fi_ID & "'='" & "" & "', Наряды![ID устройства], Наряды![ID устройства] = '" & Me.fi_ID & "') = True " & _
            "And Наряды.Дата >= #" & Format(Me.fi_date1, "dd\/mm\/yyyy") & "# " & _
            "And Наряды.Дата <= #" & Format(Me.fi_date2, "dd\/mm\/yyyy") & "#;"
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274544
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-SWAN-,
Не слушаете вы __Michelle.

1. Конструкция isnull('" & Me.fi_isp & "') не имеет смысла, она никогда не будет True. Если Me.fi_isp будет Null, то IsNull('') будет False. Тут должно быть Is Null [fi_ID], где [fi_ID] - поле таблицы
2. Конструкция для даты с # работает только для форматов американского и стандартного: #mm/dd/yyyy# и #yyyy.mm.dd#

В остальные подробности не вдавался, это уж больно глаз режет.
...
Рейтинг: 0 / 0
Как отформатировать запрос в VBA?
    #39274560
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin-SWAN-,
Не слушаете вы __Michelle.

1. Конструкция isnull('" & Me.fi_isp & "') не имеет смысла, она никогда не будет True. Если Me.fi_isp будет Null, то IsNull('') будет False. Тут должно быть Is Null [fi_ID], где [fi_ID] - поле таблицы
2. Конструкция для даты с # работает только для форматов американского и стандартного: #mm/dd/yyyy# и #yyyy.mm.dd#

В остальные подробности не вдавался, это уж больно глаз режет.То есть, как это "не слушайте"?)))
Где Вы в предложенном мной варианте 19412963 увидели критикуемую Вами конструкцию?!
У меня-то как раз IIf(IsNull(Me.fi_date1)..., причем не в теле запроса.
А зачем это туда помещать, когда все решается на стадии формирования запроса?
Если "глаз режут" воображаемые мои недочеты, могу порекомендовать хорошие капли глазные.)))
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как отформатировать запрос в VBA?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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