powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическая смена условия в запросе на выборку.
10 сообщений из 10, страница 1 из 1
Динамическая смена условия в запросе на выборку.
    #32310242
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Есть запрос с датами. Нужно открывать этот запрос с разными условиями по датам. Чтобы не плодить отдельно запрос по годам, отдельно по месяцам и отдельно по дням, хочу сохранять в каком-нибудь поле на форме строку с полным условием для запроса (либо "Month(Forms!MyForm![Месяц]", либо "Year(Forms!MyForm![Год]", где Месяц и Год отдельные поля на форме) и потом подставлять его в этот запрос при его открытии. Как это реализовать?
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310252
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В селекте запроса пишешь:
Код: plaintext
1.
2.
3.
SELECT ..........
FROM ..............
WHERE YourFieldDate=Forms![YourForm]![FieldDate]

Открываешь запрос и все пучком.
Чтобы новые условия использовать, закрываеш запрос, изменяешь условия, открываешь запрос. Либо использовать фильтр.
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310329
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос вот в чем. Этот запрос является подзапросом 2-го уровня. Потом эту выборку нужно еще джойнить по валютам, а потом все это перемножать на курс валюты и в результате выдавать определенную (общую) сумму в рублях. Так вот мне нужно иметь эту сумму в результате в одном из полей формы (в зависимости от периода, какой указан в условии). А предложение
Код: plaintext
1.
WHERE YourFieldDate=Forms![YourForm]![FieldDate]
неправильно, поскольку мне нужно не
YourFieldDate=Forms![YourForm]![FieldDate] ,
а:
Month(YourFieldDate)=Forms![YourForm]![FieldMonth]
либо:
Year(YourFieldDate)=Forms![YourForm]![FieldYear]
либо.... и т.д.
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310392
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а если на форме создать два поля и при выборе условия отбора (по годам, по месяцу или по дням) запихивать в них начальную и конечную дату периода (т.е. если год - то Дата1=1.01.03 и Дата2=31.12.03, соответственно с месяцами также и с опред. датой), а в условии запроса просто поставить Between Дата1 And Дата2? Тогда не надо будет изменять условие запроса динамически, а просто брать значения из этих двух полей. Может кто-нибудь поддержит беседу? Как проще и как лучше это сделать?
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310402
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо:
Where MyDateFunction([myDATE])=true
а в MyDateFunction() проверяешь. Наверное плохо - поскольку вызов ф-ии для каждой записи.

Либо n ф-ий:
(Month(YourFieldDate)=Forms![YourForm]![FieldMonth] AND fByMonth())
OR
(Year(YourFieldDate)=Forms![YourForm]![FieldYear] AND fByYear())
...
ф-ии во втором вычисляются 1 раз. Наверное быстрее.


Либо - динамически строишь ссы-куль строку. Тогда туда вообще передаешь только вычисленные значения. Минимум вызовов ф-ий из запроса (как однократно, так и позаписно)
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310407
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Похоже, что две граничных даты - это действительно оптимальный вариант.
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310408
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну дык сделай три поля в запросе: Год, Месяц, Число
В первом будет: Year(YourFieldDate)
Во втором: Month(YourFieldDate) и т.д.
Дальше в условии года пишешь:
Код: plaintext
1.
WHERE Year(YourFieldDate)=IIF(YourCnondition=Year;Year(Forms![Forms![YourForm]![FieldYear]:Year(YourFieldDate))
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310424
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если тебя устраивает вариант с BETWEEN, то это будет самое оптимальное. Если нет, то проще забахать небольшую собственную функцию.
Тот вариант, что предложен мной в предыдущем посте - большой изврат.
Если тебе надо, чтобы в зависимости от условия, если отбор идет по год, то отбираем год, а если отбор по месяцу, то отбираем месяц (пишу и понимаю, что эта чушь никому не нужна), тогда надо добавлять условие WHERE еще и отбором по мясяцу. Только вот он выберет все месяцы в любом годе, если год не задан. ;-)
В общем, BETWEEN тебе в руки.
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310459
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 TRoUbLEs:
Хорошее решение, но не будет ли оно слишком сложным? Ведь такие IIF'ы нужно будет написать в каждом из трех полей? Причем этот запрос будет построен на основе запроса на объединение из трех таблиц. Когда то была у меня такая фича: запрос не выполнялся и выдавал ошибку, потому что "...слишком сложное выражение для вычислений." (примерно в таких фразах). И сам запрос будет выполнятся, ИМХО, медленней, чем в случае с граничными датами. Но, я попробую конечно. Спасибо за идеи!

Спасибо всем за мысли и идеи! Я думаю, что я еще вернусь...


З.Ы: Пока писал, TRoUbLEs опять напостил... Согласен, изврат (выборка по годам, месяцам и т.д.) который никому не будет нужен чаще, чем раза 2 в год или вообще один раз. Но просют, хотят, что поделать...
...
Рейтинг: 0 / 0
Динамическая смена условия в запросе на выборку.
    #32310471
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю ты прав, TRoUbLEs. Можно повесить им календарик на форму и пусть выбирают граничные даты сами. И не надо извратом заниматься... Захотят за год - пусь выбирают 1 янв.года и 31 дек.года. Пожалуй так и сделаю... Спасибо еще раз!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическая смена условия в запросе на выборку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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