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

Вниз

Как правильно формировать запрос?   Найти похожие ветки 

 
chir   (2005-01-12 00:50) [0]

Люди, помогите правильно сформировать запрос.

Сейчас использую такую технологию:

SQL.Text := "UPDATE table SET f1="+IntToStr(var1)+" WHERE id="+id;

Ну вот так он у меня формируется, только он намного больше.

Вообще мне надо записать NULL если var1=0.

Пожалуйста, помогите правильно его сформировать. Понимаю, что можно сделать переменную типа String со значением "NULL", проверять var1 и записывать уже либо var1 либо "NULL" типа:

SQL.Text := "UPDATE table SET f1=";
if var1=0 then
 SQL.Text := SQL.Text+"NULL"
else
 SQL.Text := SQL.Text+IntToStr(var1);
SQL.Text := SQL.Text+" WHERE id="+id;

Если сделать так, то (у меня много таких полей) получится очень громоздко. Наверняка есть способы лучше. Пожалуйста, помогите.


 
chir   (2005-01-12 01:23) [1]

Попробовал SQL.Text := SQL.Text+"bla-bla-bla" - не работает :(


 
GanibalLector ©   (2005-01-12 01:47) [2]

>SQL.Text := "UPDATE table SET f1="+IntToStr(var1)+" WHERE id="+id;

Что такое params знаешь?Если нет,то открой любую книгу.
SQL.Text := "UPDATE table SET f1:=f1 WHERE id:=id";


 
chir   (2005-01-12 02:13) [3]

про параметры знаю, спасибо...
просто не хотелось переходить на них...

да я вроде и так сделал что-то... будет время переведу на параметры... с ними наверное действительно удобнее будет.

фенкс


 
DSKalugin ©   (2005-01-12 13:41) [4]

можно и без параметров обойтись таким макаром:

SQL.Clear;
SQL.Add("UPDATE table SET");
if var1=0
 then SQL.Add("f1=null")
 else SQL.Add("f1="+IntToStr(var1));
SQL.Add("WHERE id="+id);

только сдается мне что переменная id челочисленного типа и ее тоже надо к строке преобразовать чтобы было
SQL.Add("WHERE id="+IntToStr(id));


 
Соловьев ©   (2005-01-12 13:45) [5]

да я вроде и так сделал что-то... будет время переведу на параметры... с ними наверное действительно удобнее будет.

Не удобнее, а правельнее! Когда будут даты - почувствуешь разницу!


 
Sergey13 ©   (2005-01-12 13:47) [6]

2chir   (12.01.05 00:50)
Это конечно зависит от логики таблицы, но может лучше вместо NULL писать как раз 0?


 
chir   (2005-01-12 18:50) [7]

спасибо всем. обязательно переведу все на параметры, как только разрешу новый вопрос... который видимо ставит под угрозу весь мой труд :(...

А с датами уже встретился, я их пока так записываю:
" date_of_birth="""+FormatDateTime("yyyy-mm-dd",cxDE_date_of_birth.Date)+""","+


 
chir   (2005-01-27 20:11) [8]

мастера. перешел я на параметры значит... но теперь никак не получается записать NULL-значения в базу. как бы сделать правильно?

пример:
 DM.ADOQ2.Close;
 DM.ADOQ2.SQL.Text := "UPDATE employees SET "+
   " inn=:prm_inn"+
   " WHERE id_e=:id_e"

 if cxTE_inn.Text = "" then
   DM.ADOQ2.Parameters.ParamByName("prm_inn").Value := Null
 else
   DM.ADOQ2.Parameters.ParamByName("prm_inn").Value := cxTE_inn.Text;

 DM.ADOQ2.ExecSQL;

На такой код ошибка: Parameter object is improperly defined...

В ADOQе параметры не вносил. только этот код.


 
ЮЮ ©   (2005-01-28 05:46) [9]

В запросе 2 параметра и второй ты не задал


 
ЮЮ ©   (2005-01-28 05:49) [10]

P.S. Помимо Parameter.Value не мешает определить тип, т.к. из Null нничего не выяснить автоматом



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

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

Наверх




Память: 0.46 MB
Время: 0.037 c
4-1105700892
Net
2005-01-14 14:08
2005.02.27
Свернуть приложение...


14-1107932513
Vlad Oshin
2005-02-09 10:01
2005.02.27
а ля Задорнов. Просто...потому что достало...


6-1102686698
Atomic2004
2004-12-10 16:51
2005.02.27
NET SEND


14-1107851666
Vlad Oshin
2005-02-08 11:34
2005.02.27
Поставлю памятник автору Radminов! и Вопрос


1-1108221983
Massiv
2005-02-12 18:26
2005.02.27
Шрифт





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский