|
|
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Я новичок и пока мне трудно разобратся. Вопрос следующий: Есть форма mform, на ней грид grid1, текстовое поле и кнопка. В гриде 6-ть колонок с разными данными (имя, адрес и т.д). RecordSource у грида из table1 данные хранятся именно там. Необходимо что бы вводя любое искомое в text1 и нажимая кнопку оно выделялось в гриде. Пробовал с locate и set filter. С locate разобраться не получилось. set filter работает но только тот который идет первый. Если я ставлю 6-ть фильтров на кнопку поиска то срабатывает только первый: IF NOT USED("table1") USE "table1" excl IN 0 ENDIF sele table1 select table1 set filter to alltrim(thisform.text1.value)$alltrim(table1.Namesite) set filter to alltrim(thisform.text1.value)$alltrim(table1.count) остальные игнорируются... ( Буду благодарен за любые камменты. Извините если вопросы покажутся тупыми P.S поиском по форуму пользовался но разобраться пока не получается. Спасибо в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 12:48 |
|
||
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
Timofey781set filter to alltrim(thisform.text1.value)$alltrim(table1.Namesite) set filter to alltrim(thisform.text1.value)$alltrim(table1.count) остальные игнорируются... ( Настройки не могут накапливаться. Действует всегда только последняя настройка. В locate, в прочем как и в set filter, условия отбора объединяются логическими операторами OR или AND. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 13:06 |
|
||
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
Никаких фильтров не нужно x = table1.Namesite y = thisform.text1.value LOCATE FOR table1.Namesite = y IF FOUND()= .F. WAIT "Нету таких у нас..." WINDOW NOWAIT LOCATE FOR table1.Namesite = x && возвр. на ту запись, где стояли до поиска ENDIF thisform.Refresh() - надо обязательно обновить форму thisform.Grid1.SetFocus - и установить фокус на Grid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 13:07 |
|
||
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
Спасибо! Буду разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 13:17 |
|
||
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
то что ты хотел по фильтрам можно сделать так обычно все что тебе надо пихаестя в 1 или несколько прог потом set proc to .. additive и дальше вызываешь Add_filter([kol=1]) * -------------------------- Func Add_filter PARAM m.fil , From_Begin Priv _fil IF ! Empty( m.Fil ) && Если уже есть - не добавлять m.Fil = Norm( m.Fil ) * а если там хитрый фильтр - типа OR - то может быть некорректно * ( kol >1 or kol<100 ) - kol < 1 IF m.Fil $ Filter() && чтобы 2 раз не вешать Retu .t. ENDIF ENDIF If From_Begin _fil= Add_Cond1 (m.Fil , Filter() ) Else _fil= Add_Cond1 (Filter() , m.Fil) Endif Set filter to &_fil * -------------------------- * было m.From_Right справа (можно просто поменять параметры местами !!!) * теперь .T. - без скобок * и не ставлю скобок если не надо * Usl = Name_Gp=""СЛОHИМСКОЕ ТОАО "СВИТАHОК" " * !!!!!!!! Внимание если в строке уже были кавычки то Norm( Usl) --> NAME_GP="" !!! Func Add_Cond1 Para Old ,add1 , No_Skobki IF Empty(m.Old) Retu m.add1 Endif IF Empty(m.add1) Retu m.Old Endif * --------------------------------------------- * Оба не пустые IF m.No_Skobki Retu m.Old + ' AND ' + m.add1 ENDIF * Скобки только в случае если надо (есть OR) * NOT имеет высший приоритет над AND m.Old = NORMALIZE(m.Old) m.Add1 = NORMALIZE(m.Add1) * && '.NOT.' $ m.Old OR * Добавлять скобки только если их нет IF '.OR.' $ m.Old AND ; ! ( Left(m.Old,1) ='(' AND Right(m.Old,1) =')' ) m.Old = '('+m.Old+')' ENDIF IF '.OR.' $ m.add1 AND ; ! ( Left(m.Add1,1) ='(' AND Right(m.Add1,1) =')' ) m.add1 = '('+m.add1+')' ENDIF Retu NORMALIZE ( m.Old + ' AND ' + m.add1 ) && ! .AND. * ------------------------------------------------ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2008, 17:17 |
|
||
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
Чуть поправил возврат на ту запись где стояли!!! "Сергей Емельянов" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:5455374@sql.ru... > Автор: Сергей Емельянов > Никаких фильтров не нужно > x = RecNo("table1.Namesite") > y = thisform.text1.value > > LOCATE FOR table1.Namesite = y > IF FOUND()= .F. > WAIT "Нету таких у нас..." WINDOW NOWAIT > && Ну это же медленно!!! LOCATE FOR table1.Namesite = x && возвр. на ту запись, где стояли до поиска goto record (x) > ENDIF > > thisform.Refresh() - надо обязательно обновить форму > thisform.Grid1.SetFocus - и установить фокус на Grid > Тема Ответить Сообщение > Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 05:21 |
|
||
|
Помогите пожалуйста с поиском по grid
|
|||
|---|---|---|---|
|
#18+
Круто! И кто же Вс так надоумил? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. x = RECNO() - > GO (x) И не нужно ни чего искать А вообще интерактивный поиск в Grid В TextBox1.InterActiveChange Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2008, 11:46 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35213669&tid=1587988]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 396ms |

| 0 / 0 |
