Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Установка фильтра / 6 сообщений из 6, страница 1 из 1
24.11.2010, 15:29
    #36974540
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра
Подскажите, как установить фильтр по значения поля GRIDа, а не по значению этого же поля в источнике? Например, таблица "Table" состоит всего из 1 поля - Auto n(4), в котором храняться индексы наименований автомобилей. Допустим этих значений немного и они не меняются(как их число так и значения), и мы решили в качестве источника для COLUMN1 (ControlSource) задать программный код - следующего содержания:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Do case
case auto= 1 
     return 'Audi'
case auto= 2 
     return 'BMW'
case auto= 3 
     return 'Renault'
otherwise
return ''
endcase

Как для данного примера установить фильтр типа: Наименование авто>'R'
...
Рейтинг: 0 / 0
24.11.2010, 16:05
    #36974722
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра
Вопрос можно закрыть.

Все заработало при:
SET FILTER TO code()=='Audi' IN Table
...
Рейтинг: 0 / 0
24.11.2010, 16:14
    #36974760
Юристишко-выпускник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра
faustgreenВопрос можно закрыть.

Все заработало при:
SET FILTER TO code()=='Audi' IN Table

зря

жигули приедут, что делать?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Create Cursor sprav (id i, name v( 50 ))
Insert into sprav values ( 1 , 'Audi')
Insert into sprav values ( 2 , 'BMW')
Insert into sprav values ( 3 , 'Renault')


Create Cursor tt (dat d( 8 ), id_spr i, numb i)
Insert into tt values ({^ 2010 - 01 - 01 },  1 ,  10 )
Insert into tt values ({^ 2010 - 03 - 01 },  2 ,  20 )
Insert into tt values ({^ 2010 - 06 - 01 },  3 ,  8 )
Insert into tt values ({^ 2010 - 06 - 01 },  4 ,  8 )


Select t.dat ;
     , t.id_spr ;
     , Nvl(s.name,'нема') ;
     , t.numb ;
   from tt t ;
      left join sprav s on s.id=t.id_spr
...
Рейтинг: 0 / 0
24.11.2010, 16:17
    #36974775
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра
faustgreenВопрос можно закрыть.

Все заработало при:
SET FILTER TO code()=='Audi' IN Table

Как-то через зад у тебя получилось. code() каждый раз будет вызываться при перемещении по записям.
Правильнее получить код для 'Audi' и по коду фильтровать.
Оно так гораздо быстрее будет работать и индекс фокс задействует если таковой есть.
...
Рейтинг: 0 / 0
24.11.2010, 16:34
    #36974854
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра
авторПравильнее получить код для 'Audi' и по коду фильтровать.

Ну для приведенного фильтра возможно. А если нужен фильтр :
Код: plaintext
SET FILTER TO code()>'BMW' IN Table
Причем само значение для сравнения мы не знаем, его задает пользователь.
...
Рейтинг: 0 / 0
24.11.2010, 18:02
    #36975173
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка фильтра
faustgreenавторПравильнее получить код для 'Audi' и по коду фильтровать.

Ну для приведенного фильтра возможно. А если нужен фильтр :
Код: plaintext
SET FILTER TO code()>'BMW' IN Table
Причем само значение для сравнения мы не знаем, его задает пользователь.
В конкретном примере не вижу никакого смысла, но более быстрый способ такой:
создать курсор из кодов удовлетворяющих условию выборки ">'BMW'", проиндексировать его, и пользоваться индексом. Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
Create Cursor MyFilter (id i)
Insert into MyFilter values ( 2 )
Insert into MyFilter values ( 3 )
index on id tag id
sele MyTable
set filter to IndexSeek(MyTable.Auto, .F., 'MyFilter', 'id')
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Установка фильтра / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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