Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

Помогите пожалуйста. Проблема с запросом SQL. Вот код:   Найти похожие ветки 

 
Ol-G   (2003-05-19 21:17) [0]

Есть код

Query1.SQL.add("Select * from lico.db");
Query1.SQL.add("Where name in("ЕЛЕНА","СЕРГЕЙ")");
Query1.Prepare;
Query1.Open;

Все работает, все замечательно.
а если делать через переменную, то фиг чего выходит:

Query1.SQL.add("Select * from lico.db");
Query1.SQL.add("Where name in(:Nam)");
Query1.ParamByName("Nam").AsString :=""ЕЛЕНА","СЕРГЕЙ"" ;
Query1.Prepare;
Query1.Open;
В чем тут ошибка? Я уже голову сломал.


 
sniknik   (2003-05-19 21:40) [1]

попробуй вот так
Query1.SQL.add("Select * from "lico.db"");
Query1.SQL.add("Where name in (:Nam1, :Nam2)");
Query1.ParamByName("Nam1").AsString:= "ЕЛЕНА";
Query1.ParamByName("Nam2").AsString:= "СЕРГЕЙ";


 
Ol-G   (2003-05-19 22:16) [2]

Спаибо за совет, но меня интересует то, чтобы я мог поставить в переменную "Nam" сколько мне угодно значений, например 10.Как быть в этом случае? Не описывать же их в виде :Nam1...Nam10


 
sniknik   (2003-05-19 22:23) [3]

> Не описывать же их в виде :Nam1...Nam10
или так или не работает а как вам нужно выбирайте...

или без переменных как в первом варианте.


 
Johnmen   (2003-05-19 22:31) [4]

>Ol-G

То, что ты хочешь, по сути, не параметр, а макроподстановка.
Не поддерживается она...
Посему просто динамически формируй строку запроса...


 
Ol-G   (2003-05-20 08:34) [5]

Всем спасибо, я всетаки допер.
Если кому вдруг надо будет:
Var
S:String
begin
S:= "Where name in("ЕЛЕНА","СЕРГЕЙ")";{Здесь можно вставлять что хочешь}
Query1.SQL.add("Select * from lico.db");
Query1.SQL.add(S);
Query1.Prepare;
Query1.Open;
end;



 
Leron   (2003-05-20 09:25) [6]

Эт фича до меня давно допёрла. Вся система запросов у меня построена таким образом))))


 
sniknik   (2003-05-20 10:20) [7]

Ol-G (20.05.03 08:34)
и чем это отличается от первого(в вопросе) варианта? а ничем. даже переменную s (если нигде больше не используется) оптимизатор выкинет.

уж если хочется улутшений то оформи это в виде процедуры и передавай внутрь изменяющуюся часть строки ""ЕЛЕНА","СЕРГЕЙ"" в этом случае. строку изменяй динамически как уже говорили.


 
Zn   (2003-05-20 10:51) [8]

Извините, вопрос в тему.
У меня не работает такой код:
with QDelete do
begin
SQL.Clear;
if RadioGroup1.ItemIndex=0 then
SQL.Add("Delete from t1 where id=1")
else SQL.Add("Delete from t1 where id=2")
Prepare;
ExecSQL;
end;
Выдаёт ошибку на Prepare. В чём ошибка?


 
sniknik   (2003-05-20 10:56) [9]

ну скорее всего ты забыл скобку ";" перед ним и как вариант тип QDelete не TQuery :о)).


 
Zn   (2003-05-20 11:09) [10]


> sniknik © (20.05.03 10:56)

Да нет, скобку я не забыл, это здесь ошибся. И QDelete как раз TQuery.
Странно, только что ещё раз попробовал - заработало.




 
Remis   (2003-05-21 11:47) [11]

А что будет если не использовать Prepare?



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

Форум: "Базы";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-26485
sam-Lite
2003-05-29 09:04
2003.06.09
Как добраться до адреса с переменными какой-то пргоги.


8-26621
Sergeys
2003-02-19 20:03
2003.06.09
сглаживание картинки


1-26468
pumba
2003-05-23 17:47
2003.06.09
Прозрачность


14-26690
Дмитрий К.К.
2003-05-23 06:11
2003.06.09
Именинники 23 мая


6-26626
Евген
2003-04-04 10:28
2003.06.09
Как прочитать данные принятые IdUDPServer?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский