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

Вниз

Как передать в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
14-1100200907
Викусик
2004-11-11 22:21
2004.12.05
Глупый вопрос.


14-1099300270
ИМХО
2004-11-01 12:11
2004.12.05
500 Internal Server Error


1-1101109577
Артем К.
2004-11-22 10:46
2004.12.05
Компонент TreeView, чтобы узел дерева имел несколько колонок?


3-1099979637
Explorer
2004-11-09 08:53
2004.12.05
AdoDataSet для работы c StoredProc


1-1101193853
starling13
2004-11-23 10:10
2004.12.05
ANSI в ASCII