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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
4-1105420792
leonidus
2005-01-11 08:19
2005.02.27
Как определить язык Windows


14-1107237517
Vlad Oshin
2005-02-01 08:58
2005.02.27
Досуг, свободное время, хобби и т.п.


4-1105599914
Anonimus
2005-01-13 10:05
2005.02.27
Операционная система


1-1107941413
Rusan
2005-02-09 12:30
2005.02.27
Как проверить наличие параметра в реестре


1-1108060365
LedWorm
2005-02-10 21:32
2005.02.27
Ассоциация файлов с моим приложетем.