Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / DataGrid и фильтр / 11 сообщений из 11, страница 1 из 1
13.04.2005, 12:24
    #33012983
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
Трабла в следующем:
есть MS DataGrid Control 6.0 (SP5) (MS VC), с помощью которого выводятся на экран данные из базы данных (SQL2000) сформированные посредствам ADO-шного рекордсета. Все было бы более менее нормально, но решил я использовать метод Filter указанного выше рекордсета. Задаю условие для него - в DataGrid'е - все нормально отфильтровалось, только беда: нажимаю клавишу "стрелка вверх"- в гриде все ползет вниз, та же самая беда с полосами прокрутки (причем делается это циклически- т.е. когда доходит до последней записи- перескакивает на верхнюю запись и далее вниз).
Все нормально происходит при первоначальном задании значения фильтра (первое открытие данных). При задании нового фильтра - начинаются фокусы.
При повторном задании этого же самого фильтра - опять нормально.
Может кто сталкивался, помогите разобраться в чем сермяжная правда.

З.Ы. А вообще, есть еще что-нибудь более "продвинутое" чем MS DataGrid Control с поддержкой ADO для MS VC? Где посмотреть/взять?

Спасибо за внимание...
...
Рейтинг: 0 / 0
13.04.2005, 18:51
    #33014363
Ste@lth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
нового вроде как ничего нет, а DataGrid очень глючный...

единственное что приходит в голову, при смене фильтра переделывай привязку грида к рекордсету, если не поможет, то попробуй переоткрывать рекордсет
...
Рейтинг: 0 / 0
13.04.2005, 18:55
    #33014369
Ste@lth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
или еще:

DataSet->Filtered=false;
DataSet->Filter="...";
DataSet->Filtered=true;
...
Рейтинг: 0 / 0
14.04.2005, 10:27
    #33015072
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
Дело было в форме открытия рекордсета: не любит грид серверные курсоры- ему на клиенте подавай!
А теперь вот такая заморочка: как отфильтровать по полю (тип string) с условием: not like '*abrakadabra*'. Просто like '*abrakadabra*' понимает, с отрицанием - exeption выбрасывает (что то про несовместимость типов).
Т.е. как в методе Filtr (ADO Recordset) задать отрицание (в доке говорится только о =,>=,<=,<>,like) и возможно ли это вообще? И еще не понимает конструкцию типа like '*abrakadabra' (т.е. проверка на совпадение окончания).
Грустно...
...
Рейтинг: 0 / 0
14.04.2005, 11:03
    #33015203
Ste@lth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
Filters can compare field values to literals and to constants using the following comparison and logical operators:

Operator Meaning
< Less than
> Greater than
>= Greater than or equal to
<= Less than or equal to
= Equal to
<> Not equal to
AND Tests two statements are both true
NOT Tests that the following statement is not true
OR Tests that at least one of two statements is true
+ Adds numbers, concatenates strings, adds numbers to date/time values (only available for some drivers)
- Subtracts numbers, subtracts dates, or subtracts a number from a date (only available for some drivers)
* Multiplies two numbers (only available for some drivers)
/ Divides two numbers (only available for some drivers)
* wildcard for partial comparisons (FilterOptions must include foPartialCompare)
By using combinations of these operators, you can create fairly sophisticated filters.

Хотя LIKE я использовал и работало нормально...
вместо NOT LIKE попробуй NOT (LIKE ...)

а также почитай описание формата шаблона для LIKE (звездочки там нету:)
% Any string of zero or more characters.
_ (underscore) Any single character.
[ ] Any single character within the specified range ([a-f]) or set ([abcdef]).
[^] Any single character not within the specified range ([^a-f]) or set ([^abcdef]).
...
Рейтинг: 0 / 0
14.04.2005, 11:09
    #33015225
Ste@lth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
не правильно написал...

возможный синтаксис:
field NOT LIKE 'pattern'
NOT field LIKE 'pattern'
NOT (field LIKE 'pattern')

что-нить должно работать
...
Рейтинг: 0 / 0
14.04.2005, 12:54
    #33015637
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
Ste@lthне правильно написал...

возможный синтаксис:
field NOT LIKE 'pattern'
NOT field LIKE 'pattern'
NOT (field LIKE 'pattern')

что-нить должно работать

Не хотит ни так, ни эдак...
По-видимому отрицания в данном методе не предусмотрено...
...
Рейтинг: 0 / 0
14.04.2005, 13:21
    #33015732
Ste@lth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
ну тогда такой вариант обхода:

есть некое условие LIKE: field NOT LIKE 'pattern'

а теперь в запрос добавляем следующую вещь:

SELECT ........, case when field NOT LIKE 'pattern' then 1 else 0 end check_field FROM .........................

а потом в фильтре вместо LIKE пишем: check_field=1
...
Рейтинг: 0 / 0
15.04.2005, 07:41
    #33017297
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
Ste@lthну тогда такой вариант обхода:

есть некое условие LIKE: field NOT LIKE 'pattern'

а теперь в запрос добавляем следующую вещь:

SELECT ........, case when field NOT LIKE 'pattern' then 1 else 0 end check_field FROM .........................

а потом в фильтре вместо LIKE пишем: check_field=1

Не, так тоже не пойдет: фильтрация идет по "видимым" полям в гриде и гридов этих немерено (это для каждого рекордсета надо будет менять запрос)
...
Рейтинг: 0 / 0
15.04.2005, 10:03
    #33017472
Ste@lth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
ну у меня фантазия иссякла...
хотя честно, я практически не использовал фильтры, предпочитал переоткрывать ADOQuery, переделывая запрос....

просто писал свой собственный VCL фильтр...
...
Рейтинг: 0 / 0
15.04.2005, 10:23
    #33017511
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и фильтр
Хочется сделать универсальный фильтр. Сделать то сделал, но вот с такими ограничениями...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / DataGrid и фильтр / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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