Как сделать фильтр в рекордсет?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Как сделать фильтр в рекордсет?

Сообщение АндрейБ » 07.11.2006 (Вт) 11:39

Привет, ни как не могу сделать фильтр в рекордсет.
У меня таблица 3 милииона записей и что бы постянно не открывать снова рекордсет с 3,000,000 с критерием (время много уходит) записей, я его один раз описал и задал и хочу что бы форма могла постоянно к нему обращаться и искать по критерию нужные записи.
Причем я хочу получать информацию так что бы знать сколько таких записе по критерию, 0 - 1 - и много и соответсвенно по ним получать информацию. Филтр самое оптимальное, но я ни как не могу задать. Можете мне скинуть пример на VB?
Заранее спасибо.
Кто ищет, тот всегда найдет ...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 07.11.2006 (Вт) 12:12

фильтр я сделал а есть методы более быстрые чем Filter?
Seek быстрее?
Кто ищет, тот всегда найдет ...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.11.2006 (Вт) 12:15

Seek -- это не фильтр, это поиск по индексированным полям. Причем применим только к MDB-файлам.
Используй индексы, серверные курсоры и фоновую загрузку данных.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.11.2006 (Вт) 12:16

3 млн записей никто обычно в клиентском рекордсете не фильтрует :lol:

для этого существуют серверы SQL, дай им поработать :D

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 07.11.2006 (Вт) 12:41

а где можно про QSL почитать и можно ли SQL базы обрабатывать в VB?
Кто ищет, тот всегда найдет ...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.11.2006 (Вт) 12:54


АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 07.11.2006 (Вт) 13:11

Спасибо, а как удалить фильтр в рекордсет, что бы все записи востановились?
Кто ищет, тот всегда найдет ...

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 07.11.2006 (Вт) 13:20

присвоить фильтру =""

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.11.2006 (Вт) 16:58

andreymp писал(а):ИМХО. 3 миллиона записей в рекордсет!? Как то ...бррр. Может как то на уровне постановки задачи еще подумать. Вряд ли такое кол-во надо.


Точнее - такое количество наверняка не надо.
Проблема решается с помощью TOP...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 09.11.2006 (Чт) 17:22

Это не прихоть, 3,000,000 - в таблице лежит и надо в этой таблице найти соответвенно по критерию значение есть ли оно и если есть то сколько раз повторяется.
Кто ищет, тот всегда найдет ...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.11.2006 (Чт) 17:24

А ты не пробовал, для разнообразия, почитать, что такое SQL?
Например, про оператор GROUP BY. Или хотя бы COUNT.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.11.2006 (Чт) 17:26

alibek писал(а):А ты не пробовал, для разнообразия, почитать, что такое SQL?
Например, про оператор GROUP BY. Или хотя бы COUNT.


Еще можно и про WHERE почитать...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 09.11.2006 (Чт) 19:19

Нет уж, начинать надо с SELECT.

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 10.11.2006 (Пт) 1:53

пример фильтрадля вб
Код: Выделить всё
tmp = "SELECT  *  FROM Table1 WHERE Column2 > 200"
Data1.RecordSource = tmp
Data1.ReadOnly = False
Data1.Refresh

можно ешо так
Код: Выделить всё
tmp = "SELECT  *  FROM Table1 WHERE Column6  = 'Вася'  AND Column2 > 200"

* мона заменить на ... Column1, Column2, Column6, Column4,...
мона ешо использовать операторы OR NOT >,<,=<>=...
и так мона -> "...WHERE Column6 IN ( 'Вася', 'Петя' )"
и так -> "... WHERE Column2 BETWEEN 'A' AND 'П'"
есть LIKE также есть SUM и AVG, COUNT, MAX, и MIN,
щоб убрать дубликаты есть ( DISTINCT Column6 )
шоб включить дубликатыв COUNT ( ALL Column6 )
щоб подсчитать общее число строк в таблице, используй функцию COUNT
шоб упорядочить поля пишы -> "... FROM Table1 ORDER BY Column6 DESC"
мона использовать подзапросы тапа
"... FROM Table1 WHERE Column6 = ( SELECT Column6 FROM Table2 WHERE Column2 = 2 );


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 105

    TopList