![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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