powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с фильтром в grid
13 сообщений из 13, страница 1 из 1
Помогите с фильтром в grid
    #36308180
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме имеется Grid по таблице SP c полями: SP_nomer, SP_name, produkt_name .
Пример записей:
SP_nomerSP_name produkt_name №1Наимен1 хлеб батон калач .... №2Наимен2 мука хлеб №3Наимен3 мясо колбаса сосиски .... ..................
При открытии формы передается значение переменной produkt , например:
produkt=бородинский хлеб
или produkt=батон "праздничный"
или produkt=молочный калач

Как сделать фильтр записей в grid по полю produkt_name, совпадающие с частью выражения в переменной produkt?
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308217
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yulia_P
Как сделать фильтр записей в grid по полю produkt_name, совпадающие с частью выражения в переменной produkt?
Код: plaintext
1.
SET FILTER TO produkt$produkt_name IN SP
GO TOP IN SP
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308256
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rewareYulia_P
Как сделать фильтр записей в grid по полю produkt_name, совпадающие с частью выражения в переменной produkt?
Код: plaintext
1.
SET FILTER TO produkt$produkt_name IN SP
GO TOP IN SP


В такой конструкции ищется полное соответствие переменной produkt в поле produkt_name таблицы SP, т.е. работает только когда produkt=хлеб или produkt=батон...А мне нужно чтобы фильтровало при частичном совпадении, если produkt=бородинский хлеб или produkt=батон "праздничный"!!! Как это сделать?
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308268
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А обязательно это нужно делать в виде фильтра или достаточно обойтись курсором?
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308292
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DagА обязательно это нужно делать в виде фильтра или достаточно обойтись курсором?
мне лишь бы работало, а через фильтр или курсор- все равно...Как сделать тогда через курсор?
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308357
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yulia_P,

Лучше всего в форму передавать не одно, а несколко т.н. ключевых слов.
Например не "хлеб Бородинский" а "хлеб" и "Бородинский". И фильтр ставить по всем этим словам.
Иначе придется при формальном подходе делить передаваемую фразу по словам по пробелам, а далее, возможно, еще перебирать по 1-2-3-4 и т.д. буквы, и все равно выходим на то, что лучше иметь несколько отдельных слов сразу.
Кстати, вместо "Праздичный" можно передать "праздничн", чтобы нашлось больше совпадений, и искать именно оператором "$", например по "хлеб" тогда будут найдены и "хлеб подовый" и "хороший хлеб".
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308379
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не советовал бы выражение фильтра помещать в переменную. Может добавить свойство формы и туда записывать фильтр?
Фильтр можно строить с функцией LIKE(cExpression1, cExpression2)
Можно сделать источником грида и курсор.
select * from table where m.produkt like '%'+rtrim(produkt_name)+'%'
Надо еще помнить, что для фоксика еще важен регистр.
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308428
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yulia_P
В такой конструкции ищется полное соответствие переменной produkt в поле produkt_name таблицы SP, т.е. работает только когда produkt=хлеб или produkt=батон...А мне нужно чтобы фильтровало при частичном совпадении, если produkt=бородинский хлеб или produkt=батон "праздничный"!!! Как это сделать?
А надо яснее излагать, что такое "частичное совпадение". Перевожу в нормализованную форму (за вас) - при передаче переменной produkt="бородинский хлеб" требуется отфильтровать записи, где встречаются либо "бородинский", либо "хлеб", либо и то и другое. Если я угадал (опять в угадайки играем), то следует входную переменную produkt вначале разбить на составляющие слова функциями GETWORDCOUNT() и GETWORDNUM(). Назовем эти составляющие слова produkt1, produkt2... и т.д. Тогда фильтр будет такого типа
Код: plaintext
1.
SET FILTER TO produkt1$produkt_name .OR. produkt2$produkt_name .OR. produkt3$produkt_name IN SP
GO TOP IN SP
Если хочется курсора, то приведенное условие фильтрации поместите в WHERE команды SELECT. Тот-же эффект.
P.S. Только не надо так кричать и сыпать восклицаниями.
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308542
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GoshaSНе советовал бы выражение фильтра помещать в переменную. Может добавить свойство формы и туда записывать фильтр?


Почему выражение в переменной и почему не разделить на слова - поясняю: есть форма1 на которой grid1 по таблице doc_prod. В эту таблицу заносят наименование продукта в поле name_prod и данные по продукту, при заполнении поля doc_sp отрывается форма2 в которой и находится вышеописанный grid по таблице SP, его и нужно отфильтровать по переменной produkt=doc_prod.name_prod......

авторФильтр можно строить с функцией LIKE(cExpression1, cExpression2)
Можно сделать источником грида и курсор.
select * from table where m.produkt like '%'+rtrim(produkt_name)+'%'
Надо еще помнить, что для фоксика еще важен регистр.

Не очень поняла где размещать :select * from sp where produkt like '%'+rtrim(produkt_name)+'%'
в init формы?
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308559
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. Только не надо так кричать и сыпать восклицаниями.[/quot]

И вовсе не кричала..спасибки за советы!!!
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308570
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что за функции такие GETWORDCOUNT() и GETWORDNUM() ? не могу найти описание. У меня VFP 8
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36308929
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yulia_PА что за функции такие GETWORDCOUNT() и GETWORDNUM() ? не могу найти описание. У меня VFP 8
Вы не в курсе, что следует указывать свою версию фокса ? Если не указано, подразумевается последняя. Или продолжаем играть в угадайки и ищем здесь телепатов, угадывающих реальное положение ваших проблем по одному сказанному слову ?
Эти функции ищите в VFP9. По большому счету, не сильно трудно разложить символьную переменную на слова и без этих встроенных функций. Для совсем сильно занятых - функция Words() в Foxtools.fll (даже для VFP5).
...
Рейтинг: 0 / 0
Помогите с фильтром в grid
    #36309004
Yulia_P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем! Задачу решила. Тема закрыта
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с фильтром в grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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