Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

SQL запрос по текстовым полям   Найти похожие ветки 

 
vakir77   (2004-07-13 23:46) [0]

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

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

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

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

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


 
Vemer ©   (2004-07-14 00:07) [1]

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

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


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

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

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


 
P.N.P. ©   (2004-07-14 01:14) [3]

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


 
Bacuc ©   (2004-07-14 06:28) [4]

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

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

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

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


 
menart ©   (2004-07-14 08:12) [5]

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

попробуй так


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


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;

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


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

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

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


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

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

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

частичное

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

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

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


 
Rostislav Rotaru ©   (2004-07-14 10:49) [9]

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


 
Anatoly Podgoretsky ©   (2004-07-14 11:29) [10]

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


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

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

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

> частичное

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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
3-1089586197
Daniil
2004-07-12 02:49
2004.08.08
Многострочный DBGrid


3-1089660270
softmaster
2004-07-12 23:24
2004.08.08
И снова по ФастРепорт вопросик...


3-1089711869
Igor2
2004-07-13 13:44
2004.08.08
DBGrid


1-1090534167
Victor!
2004-07-23 02:09
2004.08.08
TXMLDocument не понимает по русски


14-1090577643
VHS
2004-07-23 14:14
2004.08.08
Ошибка при FormActivate