|
|
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
Задача: в форме есть поле, где я хочу указывать условие для запроса, что-то типа >200 <200 >=100 and <=400 >=800 =1000 есть сохраненный запрос - как в него передать это условие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 16:43:38 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
в каком виде доступен результат запроса, через DoCmd.OpenQuery или отображается на форме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 16:56:25 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
в виде списка в форме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:04:07 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
ну тогда тебе надо в начале строки условия и после каждого лог. оператора вставлять имя поля, по которому происходит отбор, а затем для списка сделать след. : me.Lst.RecordSource = "Select * From MyQuery WHERE " & обработаная строка условия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:07:12 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
kedzoесть сохраненный запрос - как в него передать это условие? модифицируй текст сохраненного запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:07:18 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
В запросе есть свойство SQL - можно его изменять (т.е. через QueryDef - я это делал в 97 в паралитике, позже не делал - хп в адп использую, но через adox, я думаю, тоже можно всё это получить). При этом нужно следить за порядком инструкций - если у тебя есть сортировки или группировки - т.е. придётся делать разбор строки по ключевым словам. Ну а если в запросе есть требуемое поле в выборке, то нет проблем написать select * from Query Where [условие по полям]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:10:08 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
dim Uslovie as string querydef.sql="Select ..." & "where myVariable" & Uslovie ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:11:32 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
легкая задача держи в коде константу с запросом до 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 Точно таким же макаром строятся запросы с переменным (отбираемым пользователем) числом полей и группировкой по ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:16:42 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
ок. всем спасибо. думал мож кто попроще способ подскажет. сидел ждал :) а то думаю начну копать в направлении модификации запроса, а кто-нибудь знает простой и элегантный способ, которого я не вижу. ну и ладно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:21:52 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
2 Alexus12 Вот есть у меня сохранённый запрос. В нём есть группировки и сортировки, но нет полей для условия Where (т.е. условие по тем полям, которых нет в селекте для того, чтобы не было дублирования записей, именно для этого стоит группировка по выбранным полям). Эта задача решается модификацие текста запроса с установкой where в нужное место, а не конкатенацией строк. P.S. Пользователь не должен создавать запросы - или вы предлагаете описывать ему всю структуру таблиц в БД?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:34:28 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
to kedzo: Это видел уже? Там тоже есть варианты для указания условий через AND, OR, NOT... но пока только для текста. Руки до разбора сторки ">=100 and <=400" для чисел и ">=09/09/2004" для дат пока не добрались :( Но эти условия там делаются по-другому, не так красиво, но зато работает. Тут недавно для ADP слегка переделал - тоже хорошо работает. Может чего пригодится. В самом конце страницы там есть пример для скачивания в MSA 2000 и 97. Правда толстые они - по 500 kb, потому что с тестовыми данными. Если напишешь интерпретатор строки для числовых условий, дай посмотреть. А? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 22:48:37 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
страничку видел. интерпретартор пока писать не стал, объехал 2 полями и жестким AND - задача это позволяла. Но чувство неудовлетворенности осталось будет время, займусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 09:17:16 |
|
||
|
Запрос с управляемым пользователем WHERE
|
|||
|---|---|---|---|
|
#18+
kedzoок. всем спасибо. думал мож кто попроще способ подскажет. сидел ждал :) а то думаю начну копать в направлении модификации запроса, а кто-нибудь знает простой и элегантный способ, которого я не вижу. ну и ладно Модифицировать запросы - самое последнее дело. :) Я бы сделал так: Вар.1) Создавал бы динамический SQL запрос на основе указанного сохраненного запроса (уже было) Код: plaintext Вар.2) Если вариант 1 не подходит, то создал бы таблицу, в которой бы поместил текст SQL запросов и на их основе компановал бы выражения. Вот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 13:59:52 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32692316&tid=1671772]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 310ms |

| 0 / 0 |
