Главная страница
    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
14-1107779180
wicked
2005-02-07 15:26
2005.02.27
Наблюдения над ошибкой 500....


1-1108447358
ТехникПТО
2005-02-15 09:02
2005.02.27
Продолжите плиз...


8-1100374144
frEEstyler
2004-11-13 22:29
2005.02.27
как передать имя открытого файла программе?


1-1107966737
juice
2005-02-09 19:32
2005.02.27
Глобальная переменная


14-1107706812
aga
2005-02-06 19:20
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский