Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
Столкнулся тут с проблеммой ... думаю она актуальна для многих. Надо сгенерировать в Delphi SQL запрос, но это получается настолько громоздко что как то не решаюсь его написать Поиск по четырем полям ... причем с выбором условия "и"-"или".... Запрос получается такого типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Если представить что в поиске будет принимать минимум полей 50 то каких же размеров получится тогда код ... Может кто с таким сталкивался ... как это можно решить, упростить это дело??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 13:43 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
А может использовать что то в таком стиле: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 16:39 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
т.е. FieldByNumber(1) -> FieldByNumber(i) конечно. Но идея должна быть понятной, так же можно имена полей если они не называются field1-100 брать из таблицы T1.Fields .FieldName ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 16:48 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
[scr]T1.Fields .FieldName[/scr] Блин, режет этот форум [ i ] без пробелов, не первый раз уже наступаю на эти грабли, все никак не привыкну :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 16:51 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
Дело в том что у меня некоторые параметры являются подзапросами .. например: Код: plaintext 1. это еще полбеды ... все беда в том что если два поля заполнены то получается запрос Код: plaintext 1. Можно конечно это упростить добавив одно поле в таблицу в базе данных, но это не решит проблеммы ... с Edit работать - себе дороже, т.к. тут уже придется использовать динамически StringList .... А для DBEdit нужен IBQuery причем в базе нет таблицы где поля бы совпадали с с полями которые нужны в этом IBQuery.... остается только создать в базе отдельную таблицу что то вроде GOODSEARCH, но для каждого поиска то не будешь создавать, накладно выходит .. :( Так что проблемка та еще .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 16:57 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
Как вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 16:58 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
Мой предыдущий вариант относился к простой таблице,а не к подзапросам, пока писал ответа еще не было. После уточнения он конечно не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 17:02 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
к простым таблицам я делал с dinamical array все замечательно проходило ... а тут :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2003, 17:04 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
Ну а если попробовать так: procedure frmSearchh.SerachBtnClick(Sender: TObject); {} function AddSqlStr( const Name, AndOr: String ): String; begin IBQuery.FieldByName( Name ).Value <> null then Result := AndOr + ' Name = :Name ' else Result := ''; end; {} var sql: string; i: Integer; begin IBQuery.Close; sql := 'SELECT field1, field2, field3, field4 FROM table1 WHERE field1 = :var1'; for i := 1 to IBQuery.FieldCount - 1 do begin if GroupButtonBox.ItemIndex = "and" then begin sql := sql + AddSqlStr( IBQuery.Fields.Fileds .FieldName, 'AND' ); end else begin if GroupButtonBox.ItemIndex = "or" then begin sql := sql + AddSqlStr( IBQuery.Fields.Fileds.FieldName, 'OR' ); end; end; end; IBQuery.Sql.Text := Sql; IBQuery.Open; end; Ну а внутри ф-ции AddSqlStr сделать обработку на вложенные запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2003, 14:30 |
|
||
|
Поиск по нескольким полям ...
|
|||
|---|---|---|---|
|
#18+
2 Hammer Идея конечно хорошая ... но в том то и дело что вариантов множество ...но среда них ни один еще не подошел ... потому что проблема именно в этом подзапрое where fieldname = :fieldname :fieldname = (Select .... ) - вот что будет постоянно разным ... :( ну ничего ...я в принципе нашел выход из этой ситуации ... правда он подходит для не очень большого количества полей ... Но все равно спасибо .... ты подал мне еще одну очень хорошую идею .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2003, 19:16 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32206538&tid=2117678]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
4ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 369ms |

| 0 / 0 |
