|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
поиск много раз обсуждался на форуме, но так и не нашел случая как у меня. Мне надо реализовать на форме поиск по всем столбцам. Сделал кнопку ПОИСК и текстовое поле для ввода слова для поиска. Я смог сделать только поиск по одному столбцу Фамилия с помощью фильтрации SET FILTER. Код у кнопки ПОИСК: select table1 set filter to alltrim(thisform.text1.value)$alltrim(table1.family) thisform.refresh Как сделать, чтобы он мог фильтровать и по остальным столбцам, а не только по фамилии? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2010, 13:08 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
самое простое решение, «в лоб»: 1. положить на форму эдитбоксы edtFam, edtIm, edtOt (или какие вам ещё нужны будут); 2. Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2010, 13:18 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.comСделал кнопку ПОИСК и текстовое поле для ввода слова для поиска. Ну так чего тебе еще надо? 1) Если нужен поиск а не фильтрация, то смотри в сторону команды LOCATE FOR 2) Условии поиска/фильтрации ставишь or и сравниваешь с каждым полем. Не забываешь про приведение типов - TRANSFORM тебе в помощь. 3) Если список полей заранее неизвестен, сформировать список полей можно через AFIELDS. В этом случае формируешь строковую переменную lcStr условия поиска/фильтрации и делаешь макроподстановку что-то вроде Код: plaintext 1. 2. 3.
P.S. Все непонятный слова можно посмотреть в хэлпе ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2010, 13:19 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
ребята, огромное спасибо вам! Все получается)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2010, 13:39 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
а если сделать фильтрацию по нескольким полям? Допустим, найти всех Ивановых с отчеством Петрович. Я добавил еще пару тексбоксов, на кнопке Поиск прописал код, но что-то видимо не то. Помогите, кто знает. select table1 GO top set filter TO ; alltrim(thisform.text1.value)$alltrim(table1.family); alltrim(thisform.text2.value)$alltrim(table1.imya); alltrim(thisform.text3.value)$alltrim(table1.otch); thisform.refresh ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2010, 14:23 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.com select table1 GO top set filter TO ; alltrim(thisform.text1.value)$alltrim(table1.family); alltrim(thisform.text2.value)$alltrim(table1.imya); alltrim(thisform.text3.value)$alltrim(table1.otch); thisform.refresh Несколько условий соединяются союзом and. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2010, 16:06 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
Ffffffffffffffffaraks.com select table1 GO top set filter TO ; alltrim(thisform.text1.value)$alltrim(table1.family); alltrim(thisform.text2.value)$alltrim(table1.imya); alltrim(thisform.text3.value)$alltrim(table1.otch); thisform.refresh Несколько условий соединяются союзом and. ну это понятно, но такой вариант не работает, поэтому и прошу о помощи select table1 GO top set filter TO ; alltrim(thisform.text1.value)$alltrim(table1.family) and; alltrim(thisform.text2.value)$alltrim(table1.imya) and; alltrim(thisform.text3.value)$alltrim(table1.otch) thisform.refresh ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2010, 17:40 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.com ну это понятно, но такой вариант не работает, поэтому и прошу о помощи Так и не понял, зачем вообще нужна фильтрация, если речь вроде идет о поиске. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2010, 18:26 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
reware, я просто неправильно выразился, хотел фильтрацию) чтобы отфильтровалось и в гриде остались только те, кто нужен, поэтому использую set filter TO ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2010, 18:53 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.comreware, я просто неправильно выразился, хотел фильтрацию) чтобы отфильтровалось и в гриде остались только те, кто нужен, поэтому использую set filter TO В таком случае, что именно не работает при фильтрации ? Условие фильтра такое же, что и при поиске. Код: plaintext 1. 2. 3. 4.
и больше ничего не надо, никаких SELECT table1, никаких Refresh(). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2010, 02:29 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
reware, сделал, как вы посоветовали. Не фильтруется. Вообще ничего не происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2010, 10:06 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
помогите кто-нибудь (( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 08:14 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
[]$[Иванович]=.f. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 13:10 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.comпомогите кто-нибудь (( Надо выложить сюда архивом форму с таблицами. Мало ли где там у Вас еще какие баги завелись. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 14:10 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
rewarearaks.comreware, я просто неправильно выразился, хотел фильтрацию) чтобы отфильтровалось и в гриде остались только те, кто нужен, поэтому использую set filter TO В таком случае, что именно не работает при фильтрации ? Условие фильтра такое же, что и при поиске. Код: plaintext 1. 2. 3. 4.
и больше ничего не надо, никаких SELECT table1, никаких Refresh(). Несколько ошибок в этом примере: 1. оператор $ регистрозависимый поэтому надо перевести все в один регистр 2. '' $ 'что-то' дает .F. поэтому надо проверять на пустоту искомого значения поэтому надо примерно так Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 15:01 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
Dima T, попробовал. не получилось(( igorbik, выкладываю форму и таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 20:13 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.com, Код кнопки "Найти" выглядит, например, так: ************************ IF EMPTY(thisform.text4.Value) && пол всегда нужно указать. Кроме того, нужна "затравка" для фильтра RETURN ENDIF f3 = 'upper(thisform.text4.Value) = ; upper(alltrim(table1.pol))' IF NOT empty(thisform.text1.value) f3 = f3 + ' and upper(alltrim(thisform.text1.value)) ; $ upper(alltrim(table1.family))' ENDIF IF NOT empty(thisform.text3.value) f3 = f3 + ' and upper(alltrim(thisform.text3.value)) ; $ upper(alltrim(table1.gorod))' ENDIF select table1 set filter TO &f3 GO TOP thisform.Refresh ****************** ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 20:45 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
Попробуй сам открыть свой архив и определить, чего там нет. Второй раз уже выкладываешь неизвестно что. До сих пор не научился. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 20:51 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
Ffffffffffff, вообще-то я первый раз выкладываю что-то. Признаюсь, неправильно залил ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 21:16 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
igorbik, спасибо, работает отлично! А без "затравки" не получится?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 21:20 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
igorbik, я тоже вставил этот код, все отлично работает. Просто если хочу найти какого-нибудь Петрова, то помимо "Петров" надо обязательно пол "м" тоже писать для поиска. А без пола никак не получится, чтоб только один допустим критерий поиска написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 21:30 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.comigorbik, спасибо, работает отлично! А без "затравки" не получится?)) Ну, наличие AND заставляет с чего-то начинать. Кроме того, я написал что побыстрее. Если продолжить в том же духе, то можно написать так: *********** f3 = '' IF NOT empty(thisform.text4.value) f3 = 'upper(thisform.text4.Value) = ; upper(table1.pol)' IF NOT empty(thisform.text1.value) f3 = f3 + ' and upper(alltrim(thisform.text1.value)) ; $ upper(table1.family)' ENDIF IF NOT empty(thisform.text3.value) f3 = f3 + ' and upper(alltrim(thisform.text3.value)) ; $ upper(table1.gorod)' ENDIF if at("AND" , upper(allt(f3)),1) = 1 f3 = substr(allt(f3),4) endif * Для полного счастья нужно проверить F3 на пустоту перед установкой фильтра, а также запомнить текущий фильтр, чтобы потом к нему вернуться. ************* ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 21:34 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
igorbik, спасибо! буду разбираться) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2010, 21:47 |
|
прошу помочь с поиском
|
|||
---|---|---|---|
#18+
araks.com, Более компактный вариант на ту же тему. Работает даже без проверки фильтра на пустоту. filter1 = ; IIF(EMPTY(thisform.text4.Value), '', 'and upper(ALLTRIM(thisform.text4.Value)) $ upper(pol) ') ; + IIF(EMPTY(thisform.text1.Value), '', 'and upper(alltrim(thisform.text1.value)) $ upper(family) ') ; + IIF(EMPTY(thisform.text3.Value), '', 'and upper(alltrim(thisform.text3.value)) $ upper(gorod)') filter1 = SUBSTR(filter1,5) select table1 set filter TO &filter1 GO TOP thisform.Refresh ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2010, 10:21 |
|
|
start [/forum/topic.php?fid=41&msg=36526040&tid=1585408]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 375ms |
total: | 561ms |
0 / 0 |