Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL запрос по текстовым полям [D7, Paradox]


vakir77 ©   (2004-07-13 23:46:00) 

Здравствуйте, подскажите, как в Delphi реализовать следующий запрос:

select * from table where surname='Иванов И.И.'

в общем любой запрос по текстовым полям. Я делаю так:

Query1.close;
Query1.Sql.clear;
Query1.sql.add('select * from table where surname='+'Иванов И.И.'')
Query1.open;

Вылетает ошибка. Обьясните пожалуйста, что я делаю не так.


vakir77   (2004-07-14 13:44:00) [1]

Всем большое спасибо, действительно помогли.


Соловьев   (2004-07-14 11:52:00) [2]

Все уже догадались:) А ты нет...


bushmen   (2004-07-14 11:43:00) [3]

> полное совпадение

> select *
> from table
> where surname like :param1||'%'

> частичное

> select *
> from table
> where surname like :param1||'%'

Чем они у тебя отличаются? :)


Anatoly Podgoretsky   (2004-07-14 11:29:00) [4]

Соловьев ©   (14.07.04 09:39) [8]
И конечно четвертый, как правило более нужный вариант - % с обеих сторон


Rostislav Rotaru   (2004-07-14 10:49:00) [5]

У меня всегда работает
Query1.sql.add('select * from table where surname='+#39+'Иванов И.И.'+#39


Соловьев   (2004-07-14 09:39:00) [6]

Желательно использовать Like(потом вдруг захотите искать по части фамилии) и параметры:
полное совпадение

select *
from table
where surname like :param1||'%'

частичное

select *
from table
where surname like :param1||'%'

без учета регистра:

select *
from table
where upper(surname) like upper(:param1)


Ильш   (2004-07-14 09:26:00) [7]

насколько я помню в Дельфи чтобы выдать кавычки одинарные надо их дважды написать типа
Query1.sql.add('select * from table where surname='+'''Иванов И.И.''')

вроде бы так.. или же вот С++ можно типа такого
Query1->sql->add("select * from table where surname="+"/"Иванов И.И./"")


Константин   (2004-07-14 08:59:00) [8]


Query1.Active := false;  
Query1.SQL.Text := 'SELECT *FROM chanel.db WHERE ODate BETWEEN ' + '''' + '03/01/' + inttostr(i + 2004) + '''' + ' AND ' + '''' + '03/31/' + inttostr(i + 2004) + '''';
Query1.Active := true;

У меня работает


menart   (2004-07-14 08:12:00) [9]

Query1.sql.add('select * from table where surname="Иванов И.И."'

попробуй так


Bacuc   (2004-07-14 06:28:00) [10]

SELECT * FROM table WHERE surname = "Иванов И.И."

А если писать
Query1.sql.add('select * from table where surname='+'Иванов И.И.')

Получится SQL-запрос:
SELECT * FROM table WHERE surname=Иванов И.И.

Разница есть?


P.N.P.   (2004-07-14 01:14:00) [11]

Query1.sql.add('select * from table where surname='+QuotedStr('Иванов И.И.'))


vakir77   (2004-07-14 00:34:00) [12]

Нет с Table все в порядке, не зарезервированное слово.
в Design запрос отрабатывает, в коде нет.

проблема насколько я понимаю в кавычках 'Иванов И.И.'.
в коде они не воспринимаются как кавычки.


Vemer   (2004-07-14 00:07:00) [13]

Возможно что Table - зарезервированное слово.
Задай SQL в Design-time с параметром:
Select * from My_Table Where Surname = :MY_Name

В коде
Query1.Close;
Query1.ParamByName('My_Name').AsString := 'Иванов И.И.'
Query1.Open


Наверх

Титульная страница Поиск, карта сайта Написать письмо