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

Вниз

Как передать в TQuery параметр равный null   Найти похожие ветки 

 
alsov1   (2004-11-05 16:03) [0]

Приветствую Мастера!

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

делаю так:

query.sql.add("select * from table1 where id=:id");
query.Parameters.Items[0].Value := "Null";
query.open;

Делфя компилит, а при выполнении ругается.

Причём пробывал вместо
query.Parameters.Items[0].Value := "Null";
писать и
query.Parameters.ParamValues["id"] := "Null"
и
query.Parameters.ParamByName("id").value := "Null"

Если кто знает - помогите

Заранее спасибо


 
Vlad ©   (2004-11-05 16:06) [1]


> query.Parameters.Items[0].Value := "Null";

LOL :-)

query.Parameters.ParamByName("id").Clear;


 
alsov1   (2004-11-05 16:12) [2]

Vlad

Не работает, даже делфя не компильнула - говорит нет метода Clear.

Может стоит оговориться, что используется TADOQuery


 
Vlad ©   (2004-11-05 16:14) [3]


> alsov1   (05.11.04 16:12) [2]

Сорри, тогда Value:= null;


 
Соловьев ©   (2004-11-05 16:14) [4]


> query.Parameters.Items[0].Value := "Null";
>
> LOL :-)
>
> query.Parameters.ParamByName("id").Clear;

uses Variants;

query.Parameters.Items[0].Value := Null;


 
alsov1   (2004-11-05 16:26) [5]

На это -
query.Parameters.Items[0].Value := Null;

тот же эффект - компилин но не работает
пишет "неправильно определён объект Parametr"


 
Vlad ©   (2004-11-05 16:29) [6]


> alsov1   (05.11.04 16:26) [5]

свойства DataType, Direction установлено?


 
Соловьев ©   (2004-11-05 16:34) [7]


> "select * from table1 where id=:id"

а что автор хочет получить от запроса
select * from table1 where id=null?
для сравнения с NULL надо писать where field is null


 
alsov1   (2004-11-05 16:35) [8]

DataType - ftUnknown
direction - pdInput

Поигрался с параметрами - добился того чтоб не ругалось
Attributes - [paNullable]
DataType - тип поля ftInteger

но результат всё-равно отличается от запроса
select * from table1 where id is null


 
alsov1   (2004-11-05 16:40) [9]

Есть таблица
id  ido   text
1   null  gjdg
2   null  dfgsdg
3    1    dfgdsfgds

надо выводить поочерёдно то все записи где ido = null,
то где ido = числу


 
Johnmen ©   (2004-11-05 16:56) [10]

where (:id1 is null) or (id=:id2)
где пар.id1=id2


 
alsov1   (2004-11-05 17:01) [11]

Johnmen
откуда idl взялся


 
KSergey ©   (2004-11-05 17:01) [12]

> [10] Johnmen ©   (05.11.04 16:56)
> where (:id1 is null) or (id=:id2)

Только оптимизатору это дюже не понравится...
Я бы 2 запроса сколбасил разных. В зависимости от ситуации.


 
Johnmen ©   (2004-11-05 17:06) [13]

>KSergey ©   (05.11.04 17:01) [12]

Да, ты прав. Зависит от правила вычисления лог.выражений.

where (:id1 is null) or ((id=:id2) and (:id3 is not null))
id1=id2=id3


 
alsov1   (2004-11-05 17:08) [14]

Так выходит лучше два запроса писать?

Дело в том, что эта процедурка довольно часто повторяться будет, не сильно ли это замедлит работу?


 
KSergey ©   (2004-11-05 17:10) [15]

> [13] Johnmen ©   (05.11.04 17:06)
> >KSergey ©   (05.11.04 17:01) [12]
>
> Зависит от правила вычисления лог.выражений.

Это я не совсем понял, признАюсь...
Вообще я имел в виду то, что OR оптимизатор жутко не любит, фактически оптимизация сразу летит в чертям. Когда-то тоже таким баловался "отключая" ненужные в данный момент парамтеры, но скорость была отвратной. Переделал на несколько запросов, разных, по ситуации.


 
Johnmen ©   (2004-11-06 00:04) [16]

>KSergey ©  (05.11.04 17:10) [15]

Ну про оптимизатор говорить - пустое. Ведь мы не знаем про тип СУБД.
А лог.выр. могут выч-ся слева-направо и наоборот.



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

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

Наверх




Память: 0.48 MB
Время: 0.042 c
1-1101306761
makingoff
2004-11-24 17:32
2004.12.05
открытие проги из списка "открыть с помощью"


6-1096115383
Yuri Btr
2004-09-25 16:29
2004.12.05
Не возникает события OnConnect


9-1088438773
Evgeniy_K
2004-06-28 20:06
2004.12.05
VSync


14-1100675384
Dmitriy O.
2004-11-17 10:09
2004.12.05
Опрос Какую игру Вы преобрели за послений месяц ?


11-1083862844
Delphi5.01
2004-05-06 21:00
2004.12.05
Вот такой баг был замечен мной и моим другом.





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