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

Вниз

ibQuery.ParamByName( My_param ).Value := null; - не работает??   Найти похожие ветки 

 
Jack128   (2003-04-15 12:51) [0]

Добрый день.
Есть IbQuery c SQL.TEXT := "select id, name from addresses where parentid = :parentid"
Таблица Addresses - простейшее дерево, корнями, которого являются элементы с parentid равным null"ю.
Необходимо выбрать эти "корни"
with ibquery do
begin
parambyname("parentid").value := null;
if not transaction.intransaction then
transaction.starttranscation;
try
open;
while EOF do
begin
Memo1.lines.Add(FieldByName("name").AsString);
Next;
end;
Close;
transaction.Commit;
except
transaction.Rollback;
raise;
end;
end;
Не выдает не одной записи, хотя в базе они(записи) есть.
Если зделать так
parambyname("parentid").AsInteger := 1;
то все работает, как надо..
В чем моя ошибка??


 
Zacho   (2003-04-15 12:55) [1]

Ошибка в том, что в этом случае запрос должен быть таким:
select id, name from addresses where parentid is NULL
Кстати, FIBPlus вроде бы умеет правилино преобразовывать запросы в случае если параметр=null


 
Соловьев   (2003-04-15 12:55) [2]

вообще-то корням присваивают - 0.

> Не выдает не одной записи, хотя в базе они(записи) есть.

не пробовал перед присвоением параметра сделать Close; ?


 
Соловьев   (2003-04-15 12:56) [3]

А зачем с транзакциями? ты вроде с БД ничего не делаешь?


 
kravchuk   (2003-04-15 12:59) [4]

while EOF do рекомендую заменить на
while NOT EOF do


 
Jack128   (2003-04-15 13:11) [5]

kravchuk © (15.04.03 12:59)
Реально конечно написано not EOF, просто когда я вопрос набирал - ошибся...

> Соловьев © (15.04.03 12:56)
> А зачем с транзакциями? ты вроде с БД ничего не делаешь?

А выполнение запроса (ibquery.Open) - это не чего не делаю? ;-)

Zacho © (15.04.03 12:55) Обидно.. Досадно.. Ну ладно..


 
Соловьев   (2003-04-15 13:15) [6]


> (ibquery.Open) - это не чего не делаю? ;-)

ничего.


 
Johnmen   (2003-04-15 13:19) [7]

>Соловьев ©

Если не стартанет сам, то стартанет неявно...:)


 
Соловьев   (2003-04-15 13:22) [8]


> Johnmen © (15.04.03 13:19)

оно то да. Но как можно вывести БД из не противоречивого состочния с помощью select * from table? мне не понятно... Или это на счет сбора мусора?


 
kaif   (2003-04-15 13:23) [9]

Совет:
Чтобы не мучиться, лучше для корневых сделать parent_id = 0 в самой таблице. И вообще объявить это поле NOT NULL. И индекс на него сделать, чтобы искал быстрее.

Если же сие невозможно, то можно сделать запрос типа:
"select id, name from addresses where (parentid = :parentid) or
(:parent_id = 0 and parent_id is null)"


 
kravchuk   (2003-04-15 13:25) [10]

//Соловьев © (15.04.03 13:22)
select в ИБ выполняется в рамках транзакции


 
Johnmen   (2003-04-15 13:29) [11]

Любые запросы в любых SQL-серверных БД выполняются в рамках тр-ии...


 
MsGuns   (2003-04-15 13:45) [12]

>Johnmen © (15.04.03 13:29)
>Любые запросы в любых SQL-серверных БД выполняются в рамках тр-ии...

А генераторы ?



 
Johnmen   (2003-04-15 13:54) [13]

>MsGuns © (15.04.03 13:45)

Что генераторы ? :)))


 
Соловьев   (2003-04-15 14:09) [14]

все верно, что любая операция с БД на серваке проходит (обязана!!!) в рамках транзакции. Я имел в виду, что в этом случае(код Jack128), старт тр-ции лишнее.


 
Johnmen   (2003-04-15 14:21) [15]

>Соловьев © (15.04.03 14:09)

Просто он сам управляет тр-ми, что, согласись, есть хороший тон...:)


 
Соловьев   (2003-04-15 14:23) [16]

соглашаюсь :)))



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
9-12596
greenrul
2002-09-18 15:22
2003.05.05
Delphi+DirectX и DelphiX


14-12861
CGI
2003-04-16 12:54
2003.05.05
Посоветуйте компоненты для публикации БД в Web...


1-12723
Ajax
2003-04-22 20:11
2003.05.05
Непрозрачные итемы в ListView


1-12797
Cranium
2003-04-21 15:37
2003.05.05
Как в событии GridDrawColumnCell определить какой столбец рисуетс


14-12896
pawel
2003-04-17 14:05
2003.05.05
Русский HELP для Delphi6





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