powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с управляемым пользователем WHERE
13 сообщений из 13, страница 1 из 1
Запрос с управляемым пользователем WHERE
    #32692316
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача:

в форме есть поле, где я хочу указывать условие для запроса, что-то типа
>200
<200
>=100 and <=400
>=800
=1000

есть сохраненный запрос - как в него передать это условие?
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692357
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в каком виде доступен результат запроса, через DoCmd.OpenQuery или отображается на форме?
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692379
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в виде списка в форме
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692389
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда тебе надо в начале строки условия и после каждого лог. оператора вставлять имя поля, по которому происходит отбор, а затем для списка сделать след. :

me.Lst.RecordSource = "Select * From MyQuery WHERE " & обработаная строка условия
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692390
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kedzoесть сохраненный запрос - как в него передать это условие?
модифицируй текст сохраненного запроса
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692398
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В запросе есть свойство SQL - можно его изменять (т.е. через QueryDef - я это делал в 97 в паралитике, позже не делал - хп в адп использую, но через adox, я думаю, тоже можно всё это получить).
При этом нужно следить за порядком инструкций - если у тебя есть сортировки или группировки - т.е. придётся делать разбор строки по ключевым словам.

Ну а если в запросе есть требуемое поле в выборке, то нет проблем написать select * from Query Where [условие по полям].
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692404
Нерюх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dim Uslovie as string
querydef.sql="Select ..." & "where myVariable" & Uslovie
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692419
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
легкая задача
держи в коде константу с запросом до WHERE:
const SQL1="SELECT ...... FROM mytable"

затем в обработке нажатия кнопки "отчет"
анализируй введенные тобой ограничения
и пририсовывай к SQL1 WHERE:

if textbox1<>"" then SQLstring1="[myfield] " & textbox1
if textbox2<>"" then SQLstring2="[myfield] " & textbox1
и т.д.

в конце все собираешь через and / or и скобки
и пишешь в свой сохраненный запрос

dim q as dao.querydefs (???)
set q=currentdb.querydefs("имязапроса")
q.SQL=SQL1+" WHERE " + SQLstring1 + " or " + SQLstring2 .....

естественно, нужно проверять случай,
когда твои условия пусты, а то получишь
WHERE or or or an or


Точно таким же макаром строятся запросы с переменным (отбираемым пользователем) числом полей
и группировкой по ним
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692436
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок. всем спасибо.
думал мож кто попроще способ подскажет. сидел ждал :) а то думаю начну копать в направлении модификации запроса, а кто-нибудь знает простой и элегантный способ, которого я не вижу.

ну и ладно
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32692480
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexus12
Вот есть у меня сохранённый запрос. В нём есть группировки и сортировки, но нет полей для условия Where (т.е. условие по тем полям, которых нет в селекте для того, чтобы не было дублирования записей, именно для этого стоит группировка по выбранным полям).
Эта задача решается модификацие текста запроса с установкой where в нужное место, а не конкатенацией строк.

P.S. Пользователь не должен создавать запросы - или вы предлагаете описывать ему всю структуру таблиц в БД?:)
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32694739
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to kedzo:

Это видел уже? Там тоже есть варианты для указания условий через AND, OR, NOT... но пока только для текста. Руки до разбора сторки ">=100 and <=400" для чисел и ">=09/09/2004" для дат пока не добрались :( Но эти условия там делаются по-другому, не так красиво, но зато работает. Тут недавно для ADP слегка переделал - тоже хорошо работает. Может чего пригодится.
В самом конце страницы там есть пример для скачивания в MSA 2000 и 97. Правда толстые они - по 500 kb, потому что с тестовыми данными.

Если напишешь интерпретатор строки для числовых условий, дай посмотреть. А?
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32694914
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
страничку видел.
интерпретартор пока писать не стал, объехал 2 полями и жестким AND - задача это позволяла. Но чувство неудовлетворенности осталось
будет время, займусь.
...
Рейтинг: 0 / 0
Запрос с управляемым пользователем WHERE
    #32695697
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kedzoок. всем спасибо.
думал мож кто попроще способ подскажет. сидел ждал :) а то думаю начну копать в направлении модификации запроса, а кто-нибудь знает простой и элегантный способ, которого я не вижу.

ну и ладно

Модифицировать запросы - самое последнее дело. :)

Я бы сделал так:
Вар.1) Создавал бы динамический SQL запрос на основе указанного сохраненного запроса (уже было)
Код: plaintext
szSql = "SELECT * FROM qrMyQuery WHERE " & szWhereCondition

Вар.2) Если вариант 1 не подходит, то создал бы таблицу, в которой бы поместил текст SQL запросов и на их основе компановал бы выражения.
Вот...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с управляемым пользователем WHERE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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