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

Вниз

Null в SQL и Delphi   Найти похожие ветки 

 
Kostafey ©   (2006-12-28 19:23) [0]

Доброго времени суток! Взгляните на этот код. В нем заполняются items для ComboBox.

   Active := false;
   CommandText := "select case when VOX.VOX_NAME is null then NULL else VOX.VOX_NAME end as Res from VOX";
   Active := true;
   ComboBox_VOX.Items.Clear;
   ComboBox_VOX.Items.Add(GlbVar.Vse_VOX);
   for i := 1 to RecordCount do begin
     if FieldValues["Res"] = NULL then
     begin
       next; continue;
     end;
     ComboBox_VOX.Items.Add(FieldValues["Res"]);
     next;
   end;
   ComboBox_VOX.ItemIndex := 1;

Код успешно работает. Но вот на какие мысли наталкивает его рассмотрение.

1) В SQL "is null" и "=null" не одно и то же, а в Delphi- пожалуста пишем if FieldValues["Res"] = NULL. Это правильно ?

2) Взгляните на вторую строчку кода. Казалось бы ничего не мешает написать просто "select VOX.VOX_NAME as Res from VOX" но нет же ошибка.
Так вот чем это может быть вызвано ?


 
Ega23 ©   (2006-12-28 19:29) [1]

Case в данном случае - бессмыслен.


 
Ega23 ©   (2006-12-28 19:31) [2]


> 1) В SQL "is null" и "=null" не одно и то же, а в Delphi-
>  пожалуста пишем if FieldValues["Res"] = NULL. Это правильно
> ?


В С (a==b) и (a=b) не одно и то же, а в Delphi- пожалуста пишем (a=b). Это правильно ?


 
Kostafey ©   (2006-12-28 19:40) [3]

> Case в данном случае - бессмыслен.

Ух, смотри-ка заработало! А что-ж у меня до этого не работало-то...? А что-ж я до этого там пил-то...? :)


> В С (a==b) и (a=b) не одно и то же, а в Delphi- пожалуста
> пишем (a=b). Это правильно ?

Хм. Просто я хочу сказать кто из них неправ? SQL (вкрнее стандарт ANSI SQL) или Delphi ?


 
Ega23 ©   (2006-12-28 19:47) [4]


> Хм. Просто я хочу сказать кто из них неправ? SQL (вкрнее
> стандарт ANSI SQL) или Delphi ?


Ты тёплое с мягким путаушь. В случае Delphi - это тип данных Variant


 
Kostafey ©   (2006-12-28 19:55) [5]

> Ты тёплое с мягким путаушь. В случае Delphi - это тип данных
> Variant

Да? Возможно мне пора бы вернуться к фундаментальной литературе на эту тему.
Хм. Кстати, мысль, но это уже во флуде. В любом случае спасибо.


 
DrPass ©   (2006-12-29 01:24) [6]


> Kostafey ©   (28.12.06 19:55) [5]

Да, не мешало бы :)
Null в SQL = "неопределенное значение"
Null в вариантных переменных Delphi = "пустое значение"


 
ЮЮ ©   (2006-12-29 03:55) [7]

Да и Дельфи лучче не сравнивать с Null и Unassigned, а использовать функции VarIsNull и VarIsEmpty, ибо случаются такие конфигурации, где прямое сравнение приводит е ошибкам преобразования. У меня дома такая конфигурация сложилась и я там отлавливаю такого типа ошибки, хотя на работе все происходит без ошибок.



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

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.074 c
15-1167636392
kaZaNoVa
2007-01-01 10:26
2007.01.21
Ошибка? прикол? баг?


4-1157332834
Viacheslav
2006-09-04 05:20
2007.01.21
Контекстное меню проводника.


5-1146823516
Керик
2006-05-05 14:05
2007.01.21
Серые значки пунктов меню


6-1155930238
Rescator
2006-08-18 23:43
2007.01.21
Клиент веб-чата на делфи. Как реализовать?


2-1167402196
AlexanderMS
2006-12-29 17:23
2007.01.21
Функция формирования римских цифр из арабских.