Поиск:

Ответ в темуСоздание новой темы Создание опроса
> И снова LIKE 
:(
    Опции темы
PsiMagistr
Дата 31.1.2012, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Ребята,


Код


procedure TForm1.Button1Click(Sender: TObject);
var  s :string;
begin

s:='сандра';

Q.Active :=false;
Q.SQL.Clear;
Q.SQL.Add('select * FROM t WHERE fname LIKE ''%'+s+'%''');
Q.Active :=true;
end;

// Если В таблице t есть поля FName со значением, включающем в себя переменную s, то запрос вернет эти поля

//Например, если поле "Александра", а переменная s := 'сандра', то вернет, ибо поле в себя включает переменную.


Но мне необходим запрос, который проверял бы вхождение ПОЛЯ в переменную.

Огромное спасибо за помощь



Это сообщение отредактировал(а) PsiMagistr - 31.1.2012, 12:22


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Данкинг
Дата 31.1.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



СУБД? Access?
Код

Q.SQL.Add('select * FROM t WHERE  instr(1,fname,'+chr(39)+s+chr(39)+'<>0');



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Frees
Дата 31.1.2012, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



дак поменяй выражения местами
Код

Q.SQL.Add('select * FROM t WHERE '+QuotedStr(s)+' LIKE ''%''||fname||''%''');


Это сообщение отредактировал(а) Frees - 31.1.2012, 13:21


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
PsiMagistr
Дата 31.1.2012, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Менял, но у меня прописать не получается...

Добавлено через 59 секунд
Данкинг, 
Frees, 

Спасибо.

Добавлено через 7 минут и 41 секунду
Frees, Invalid us in vertical bars...

Добавлено через 10 минут и 44 секунды
Данкинг, 

Missing ) ] or item in QueryExpression   ... ....


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Данкинг
Дата 31.1.2012, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(PsiMagistr @  31.1.2012,  15:40 Найти цитируемый пост)
Missing ) ] or item in QueryExpression   ... .... 

Ну расставь скобочки-то:
Код

Q.SQL.Add('select * FROM t WHERE  instr(1,fname,'+chr(39)+s+chr(39)+')<>0');



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
PsiMagistr
Дата 31.1.2012, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Код

procedure TForm1.Button1Click(Sender: TObject);
var  s :string;
begin
s:='СтрокаАлександраСтрока';
Q.Active :=false;
Q.SQL.Clear;
Q.SQL.Add('select * FROM t WHERE  instr(1,fname,'+chr(39)+s+chr(39)+')<>0');
Q.Active :=true;





Расставил, ошибок нет, но и не возвращает ничего.  Поле fname со значением Александра точно есть.

Это сообщение отредактировал(а) PsiMagistr - 31.1.2012, 15:28


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Данкинг
Дата 31.1.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А если поставить двойные кавычки, т.е. chr(39) заменить на chr(34) ?

Добавлено через 2 минуты и 8 секунд
Ну или для верности к одному регистру привести и пробелы в поле обрезать:
Код

Q.SQL.Add('select * FROM t WHERE  instr(1,trim(ucase(fname)),'+chr(39)+ansiuppercase(s)+chr(39)+')<>0');



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
PsiMagistr
Дата 1.2.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Код


procedure TForm1.Button1Click(Sender: TObject);
var  s :string;
begin
s:='строкаАлександрасторока';
Q.Active :=false;
Q.SQL.Clear;
Q.SQL.Add('select * FROM t WHERE  instr(1,trim(ucase(fname)),'+chr(39)+ansiuppercase(s)+chr(39)+')<>0');
Q.Active :=true;
end;


Код

procedure TForm1.Button1Click(Sender: TObject);
var  s :string;
begin
s:='строкаАлександрасторока';
Q.Active :=false;
Q.SQL.Clear;
Q.SQL.Add('select * FROM t WHERE  instr(1,trim(ucase(fname)),'+chr(39)+ansiuppercase(s)+chr(39)+')<>0');
Q.Active :=true;
end;



Увы,  оба варианта возвращает пустыми... Что 39, что 34

Добавлено @ 11:58
Данкинг, 

Я сделал!

Благодарю Вас.

Во первых параметры надо местами поменять...


Код

procedure TForm1.Button1Click(Sender: TObject);
var  s :string;
begin
s:='строкаАлександраТест';
Q.Active :=false;
Q.SQL.Clear;
Q.SQL.Add('select * FROM t WHERE  instr(1, :d, FName)<>0');
Q.Parameters.ParamByName('d').Value := s;
Q.Active :=true;
end;



Это сообщение отредактировал(а) PsiMagistr - 1.2.2012, 12:00


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Данкинг
Дата 1.2.2012, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(PsiMagistr @  1.2.2012,  12:50 Найти цитируемый пост)
параметры надо местами поменять...

А, ну, возможно, хотя у меня вроде и так работало.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
PsiMagistr
Дата 1.2.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Данкинг, Оно и так работает, зависит какую строчку в какой ищем...


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Akella
Дата 1.2.2012, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Use QuotedStr(), Luke.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.