Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/43: Рейтинг темы: голосов - 43, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
Oracle

Фильтр по нескольким полям

01.03.2012, 13:58. Показов 9000. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Использую OracleDataSet - Zayavka.
Пишу "последовательный" фильтр, (когда-то был такой вопрос, но на Acces, и там работало норма) вида:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 with DataModule2.ZAYAVKA do
    begin
      Filtered:= false;
        Filter:= '';
        if Edit1.Text<>'' then
          Filter:= Filter+'[GLAVNUI_OTVETSTVENUI] = ' + QuotedStr(Edit1.Text);
 
        if Edit3.Text<>'' then
          begin
            if Filter='' then
              Filter:= '[ZAKAZCHIK] = ' + QUOTEDSTR(Edit3.Text);
            if Filter<>'' then
              Filter:= Filter+' and [ZAKAZCHIK] LIKE '+ QuotedStr(Edit3.Text + '%');
          end;
 Filtered:= true;
выплывает ОШИБКА типа: LIKE identifier not allowed here. Подскажите, пожалуйста, как решить проблему, использовать нужно по-любому OracleDataSet, очень этим поможете!!!!
Заране благодарен!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2012, 13:58
Ответы с готовыми решениями:

Фильтр в Table'e по нескольким полям
Здравствуйте! Плиз хелп! Нужно реализовать фильтрацию записей в таблице (TTable) по одному(нескольким) полям с неточным поиском (по типу...

Не совсем обычный фильтр по нескольким полям
подскажите пожалуйста, мне надо сделать базу данных, в которой в делфи при заполнении можно выбирать страну, например, Россия, а в...

Фильтр по нескольким полям в одном Edit
Есть Table1, DBGrid1, Edit1 :) Поиск осуществляется хоть сначала, хоть с середины, без учета регистра :) НО... ищет только по полю Name1....

35
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 12:08  [ТС]
Студворк — интернет-сервис помощи студентам
напиши, пример MsGuns "последовательного" фильтра по всем полям через оракл. если шаришь
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
02.03.2012, 12:15
А ты не пробовал встать на поле Filter твоего компонента и нажать F1?
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 12:23
Цитата Сообщение от de_Montgomery Посмотреть сообщение
напиши, пример MsGuns "последовательного" фильтра по всем полям через оракл. если шаришь
Ага человек который 10 лет работает с Access с помощью фильтров и ADOTable.
Канешно шарит
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 12:57  [ТС]
perepe4a, я с тобой полностью согласен. понты кидать и новичков обсерать в каком-то деле я тоже умею. а когда, нужно показать делом, что ты умеешь - так в кусты
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 13:07
de_Montgomery, я тебе уже сказал. Переделай все на Query или StoredProc.
Почитай литературу PL/SQL. Связные переменные
То что ты делаешь это сравнимо с тем, что у тебя мерседес, а ездишь ты на нем 10км в час.
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 14:00  [ТС]
я читал PLSQL, и пишу на нем процедруы, которые вызываю через delphi. я знаю, что такое связанные переменные, как делать запрос с параметром. но, я еще не додумался чтобы сделать именно такой параметрический запрос, какой бы делал "последовательную" фильтрацию.
Если просто фильтровать - это легко, например кода
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DataModule1.ADOQuery1.Active:=false;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('SELECT *');
DataModule1.ADOQuery1.SQL.Add('FROM Заявка');
DataModule1.ADOQuery1.SQL.Add('WHERE [Главный ответственный] LIKE :glava11');
DataModule1.ADOQuery1.SQL.Add('OR [Тема] LIKE :tema11');
DataModule1.ADOQuery1.SQL.Add('OR [Заказчик] LIKE :zakazchik11');
 
 
 
DataModule1.ADOQuery1.Parameters.ParamByName('glava11').Value:=
'%'+ Edit2.Text +'%';
DataModule1.ADOQuery1.Parameters.ParamByName('tema11').Value:=
'%'+Edit1.Text +'%';
DataModule1.ADOQuery1.Parameters.ParamByName('tema11').Value:=
'%'+Edit3.Text +'%';
как в этом случае сделать "последовательно" чтобы записи фильтровали друг друга. я вижу только одни понты, и учи то, да се. а простейшего примера не скинул ни кто, и ответ на свой вопрос я так и не полчил
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 14:10
Oracle 11 SQL
1
2
3
4
5
SELECT * 
FROM zayavka
WHERE     (([Главный ответственный] LIKE :glava11 AND :glava11 !=0) OR :glava11=0) 
      AND (([Тема] LIKE :tema11 AND :tema11 !=0) OR :tema11=0 ) 
      AND (([Заказчик] LIKE :zakazchik11 AND :zakazchik11!=0 )  OR :zakazchik11=0 )
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 14:11  [ТС]
ну хоть уже что-то. правда, это пока ADO.
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 14:13
ТА КАКАЯ НАХРЕН РАЗНИЦА!!!!!!!!!! запросы то одинаковые везде
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 14:16  [ТС]
да.и перепеча, ты забываешь, что нужно учитывать, что какойто из edit может быть пустой. как в этом случае?

Добавлено через 1 минуту
видно, что не работал с ораклом. ладно. ответь на вопрос.
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 14:17
Цитата Сообщение от de_Montgomery Посмотреть сообщение
да.и перепеча, ты забываешь, что нужно учитывать, что какойто из edit может быть пустой. как в этом случае?
Мде ... нет слов.

Delphi
1
 if Length(edit1.text)=0 then param:=0
Добавлено через 1 минуту
Добавлено через 1 минуту
видно, что не работал с ораклом. ладно. ответь на вопрос.[/QUOTE]

никаких больше ответов. Жлобина ты
1
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 14:20  [ТС]
сам жлобина, пришлось вытягивать из тебя ответ) но, скажу спасибо за пример.
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 14:25
видно, что не работал с ораклом. ладно. ответь на вопрос.
Прочитал бы это я раньш. Получил бы ть пример, потом догнал и еще раз получил
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 13
02.03.2012, 14:27  [ТС]
та ладно, не обижайся. все норм.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
02.03.2012, 14:43
Зачем присваивать пустому значению 0, если можно для пустого значения написать
SQL
1
(:val1 IS NULL) OR (fld1 = :val1)
Работа с NULL - это штатное средство БД для работы с неопределенными значениями.
Тем более, что в БД может быть значащий 0.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
02.03.2012, 14:45
Delphi
1
Ага человек который 10 лет работает с Access с помощью фильтров и ADOTable.
Чукча только пишет... С акцесом я работаю по мере необходимости не 10 лет, а больше. Когда требуется. А на работе работал с Interbase, Firebird, Yaffil (в принципе это похожее, но не одно и то же !), MS SQL Server, PostgreSQL, Oracle.. теперь вот чувствую придется с мускулом поиграться
И на счет "шарит".. Да не очень, если честно, и поэтому стараюсь писать только то, что знаю наверняка ну или почти
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2012, 14:45
Помогаю со студенческими работами здесь

Поиск по нескольким полям
Всем привет! Подскажите пожалуйста, как организовать поиск по нескольким полям. Причем может вводится 1-ое значение , а второе например...

Поиск по нескольким полям
что то я делаю не так... если делаю так: ADOQuery1.SQL.Clear; AdoQuery1.Sql.Add('SELECT * FROM База WHERE Наименование LIKE :nam or...

Поиск по нескольким полям
авм Добавлено через 6 минут Если не ввести временной интервал отказывается искать в БД Кто поможет разобраться? вот код : ...

Запрос по нескольким полям
Не получается сделать запрос. Если ADOQuery1.SQL.Add('SELECT*FROM БД where 1=1 '); if edit1.text&lt;&gt;'' ADOQuery1.SQL.Add(' and LIKE ...

Поиск по нескольким полям в Базе Данных
Здаствуйте, хотел бы попросить выложить пример, с поиском по нескольким атрибутам в Базе Данных. Желательно что-бы там был осуществлён...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru