Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.024 c
1-1100599296
Майя
2004-11-16 13:01
2004.12.05
Application.Terminate


1-1101304126
Mishenka
2004-11-24 16:48
2004.12.05
Переопределение свойства у компанента


1-1100774096
slaga
2004-11-18 13:34
2004.12.05
Как создать сервис ?


14-1099338839
Piter
2004-11-01 22:53
2004.12.05
Составление нового FAQ для этого сайта


4-1098283077
L.evil
2004-10-20 18:37
2004.12.05
TFileStream




   Наверх