Главная страница
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.061 c
4-1088268505
Nomolos
2004-06-26 20:48
2004.08.08
Как получить количество физических жестких дисков?


14-1090666379
olookin
2004-07-24 14:52
2004.08.08
Советую послушать Matia Bazar - Aristocratica


14-1090374652
MSSQL
2004-07-21 05:50
2004.08.08
Музыка регионов


14-1090439118
Apsi
2004-07-21 23:45
2004.08.08
Базы данных Dbase без BDE!!!


14-1090188675
Piter
2004-07-19 02:11
2004.08.08
Magic Forum beta6 - клиент форума delphimaster