Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 00:43   #11
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Цитата:
Сообщение от koma_grusha Посмотреть сообщение
насчет строки из memo все равно както не то, ну и ладно - вам виднее, а насчет format попрбуйте in
Код:
format in ('*.txt', '*.rtf', '*.doc')
ну и по мере выбора пользователя добавите значния в скобки
Вот это интереснее, только вот сработает ли это в фильтре. В какой книжке или источнике о таком варианте описано. Если скажете буду очень благодарен.
---------------
Делаю такой код:
Код:
  AdoQuery1.Filtered:=False;
  AdoQuery1.Filter:='format in ('+quotedstr('*.txt')+','+quotedstr('*.rtf')+','+quotedstr('*.doc')+')';
  RxReFiltr.Text:=AdoQuery1.Filter;
  AdoQuery1.Filtered:=True;
выводит после запуска:
Код:
format in ('*.txt','*.rtf','*.doc')
и выводит ту же самую ошибку, возможно ошибка в синтаксисе или фильтр не поддерживает in
Если есть возможность можно рабочий пример с использованием in именно для фильтра AdoQuery, а не SQL.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 12.05.2009 в 00:54.
ArtInt вне форума
Старый 12.05.2009, 00:57   #12
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

сработает точно, да и легче его контролировать, вот только литературы у меня пока нет, но как найду, сразу скину, но выглядеть это будет примерно так
Код:
(path like '%d%')
and
(format in ('*.txt', '*.rtf', '*.doc', '*.chm', '*.pdf', '*.djvu', *.7z', '*.zip', '*.rar'))
 and 
(status=0)
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума
Старый 12.05.2009, 01:04   #13
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

насчет литературы - есть важная тема про литературу в этом разделе

а ошибка - все равно у тебя на мемо, объясню почему:
сам текст ошибки выводится именно при неправильном определении аргументов, восприятие дельфи таково %d, %s, т.е. а ты в строке посылаешь %d%, пусть для тебя это мемо, но для дельфи это параметры переменных, он ждет от тебя %d - числа и % - а вот тут он не видит ничего после, вот и ругается. Если ты хочешь указать приблизительное значение строки из мемо, поробуй написать %%d%% (по идее он сам должен потом превратить их в одинарные, ну как с апострофами)
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума
Старый 12.05.2009, 01:37   #14
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Большинство литературы я уже просматривал. Но нигде не встречал чтобы фильтр поддерживал выражение с in. SQL несомненно это поддерживает.
Вот поэтому и спросил про литературе и ссылку, потому что для фильтра такого не видел применения in.
Пробую в коде прописывать, пока что не получается. Хотелось бы узнать, точно in поддерживается ли в фильтре Adoquery.(потому что много функций из SQL в фильтре не поддерживается или синтаксис изменен)? У Вас данный пример с in в фильтре употреблялся?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 12.05.2009, 19:53   #15
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

да и не раз, и все нормально было, да причем фильтры у меня были очень даже приличные и or, и and, и in, и вперемешку. А тот текст ошибки, который вы описали выше чаще всего возникают именно при нправильной передаче переменных в строку
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума
Старый 12.05.2009, 20:21   #16
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Хорошо, пробовал с in, почему то никак не получается записать правильно.
По идее ввожу format='*.txt' и идет фильтрация по данному значению, что аналогично как я думаю
format in ('*.txt') и с in выдает ошибку, что не так?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 12.05.2009, 22:38   #17
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

может модулек на почту или сюда, а то-что-то не видя советовать тяжеловато, там явно не так со строкой
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума
Старый 12.05.2009, 23:32   #18
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Создал примерный шаблон, так как в основной программе, там все "перемешано". И разбираться даже ночи может не хватить.
Дело, в том что все генерации фильтра работали, если каждому полю таблицы соответствует одно значение для фильтра и соединяется с другими полями через and или or. Для того чтобы не было ошибки, там писал специальный алгоритм конечного автомата для вставки скобок в нужных местах.
Но вот, если одно поле - несколько значений через or , то уже ошибка, конечно можно взять скобками последнее значение format и другое поле, если между ними and, но это будет не совсем логично.
Вообщем вылаживаю шаблон, если можно хочется узнать синтаксис с in в фильтре.
или какие другие идеи.
Из предыдущего скрина думаю понятно, что каждое поле может соединяться через and или or и генерация кода происходит при выборе чекбокс каждого поля.
Вложения
Тип файла: rar ошибка and or.rar (50.1 Кб, 9 просмотров)
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 13.05.2009, 00:18   #19
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

теперь все ясно.
я обычно для такого сложного фильтра не использую фильтр компонента, а пишу запрос, так оно вернее работает, поэтому и тебе предлагаю этот метод, по крайней мере избавишься от расставления скобок
в общем глянешь образец

ошибка and or.rar
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума
Старый 13.05.2009, 01:10   #20
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Наверное, действительно лучше все переписать на SQL запросы, так как подозреваю, что in фильтр не поддерживает, как и многое другое кстати. Первоначально, хотел сделать простенькую программу для хранения путей книг (с автоматическим занесением) и простенькую фильтрацию по полям, чтобы знать какая книга есть и открыть ее. В целом написал ее за часика 3. В принципе, все работает и пользуюсь. Но потом, захотелось чтобы фильтрация множественная была, чтобы значения фильтров сохранялись и загружались, отчеты в текстовом и html и worde, там другое по мелочи. В общем, как следствие изменение структуры таблицы. В целом эта оптимизация и дополнения в как минимум раз в 10 занимают больше времени. Уже почти все реализовал, кроме нормальной множественной фильтрации. Думаю тоже, лучше потратить время на пересмотр алгоритма на SQL , зато тупиковых ситуаций не будет как с фильтрами.
И еще раз, спасибо за советы, пробовал оставить отзыв, но правила форума не позволили."Вы должны добавить отзыв кому то еще прежде чем сможете добавить ее koma_grusha".
Кому еще добавить отзыв? Если мы только вдвоем эту тему обсуждали, а других тем с вопросами пока нет, в основном, отвечаю.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AdoQuery lenuxoid БД в Delphi 6 25.03.2010 18:24
AdoQuery Stanislav БД в Delphi 34 26.06.2009 22:09
ADOQuery Только_Учусь Помощь студентам 2 16.07.2008 00:31
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08
adoquery Toxa БД в Delphi 10 12.02.2007 20:07