Вниз
Скачать: CL | DM;

Передача параметра со значение NULL   Найти похожие ветки 

 
alex810810 ©   (2012-03-23 15:06) [0]

Всем добрый день. Есть запрос.

       DataOtchet1.Выбор_объектов_факт.Params[0].Value:=шифр;
       DataOtchet1.Выбор_объектов_факт.Params[1].Value:=начальная_дата1;
       DataOtchet1.Выбор_объектов_факт.Params[2].Value:=конечная_дата1;
       if блок="" then
        begin
         DataOtchet1.Выбор_объектов_факт.Params[3].Value:=Null ;
        end;
       if блок<>"" then
        begin
         DataOtchet1.Выбор_объектов_факт.Params[3].Value:=блок;
        end;
       DataOtchet1.Выбор_объектов_факт.Execute;
       DataOtchet1.Выбор_объектов_факт.First;


но в этой строке значение NULL не передается

пробывал и так

DataOtchet1.Выбор_объектов_факт.Params[3].AsString:=Null ;

Подскажите как передать параметром значение NULL


 
Anatoly Podgoretsky ©   (2012-03-23 15:17) [1]

> alex810810  (23.03.2012 15:06:00)  [0]

DataOtchet1.Выбор_объектов_факт.Params[3].Clear конечно если твоя СУБД
поддерживает


 
alex810810 ©   (2012-03-23 15:18) [2]

CУБД Oracle тоже пробывал не помогает. Когда передавать параметр на сохранение срабатывает, а на выборку нет.


 
Anatoly Podgoretsky ©   (2012-03-23 15:23) [3]

Вроде как Оракл не поддерживает, у них нет NULL для строк.


 
alex810810 ©   (2012-03-23 15:26) [4]


SELECT  distinct a.kod_obekta
 FROM jurnal026br12010 a
 where a.shifr_obekta=058-2362-10-00517-00000"  and a.data_provedeniy_rabot between to_date("01.02.2012","dd.mm.yyyy") and to_date("29.02.2012","dd.mm.yyyy")
       and (a.priznak_otgula="Работа в выходной" or a.priznak_otgula is null)  and
nomer_bloka=is null


если параметры вручную прописать то все срабатывает


 
alex810810 ©   (2012-03-23 15:27) [5]

А вот параметром не получается.


 
Ega23 ©   (2012-03-23 15:38) [6]

попробуй так:


var
 v: variant;
begin
DataSet.CommandText := "select xxx from yyy where (:param1 is null or :param2=zzz)";
if блок = "" then
 v := null
else
 v := блок;
 
DataSet.ParamByName("param1").Value = v;
DataSet.ParamByName("param2").Value = v;



 
alex810810 ©   (2012-03-23 15:50) [7]

Нет. Пишет [1]: ORA-00920: invalid relational operator


 
sniknik ©   (2012-03-23 15:53) [8]

> :param2=zzz)";
тут ошибка (ни или может быть ошибка), нужно так
:param2 =zzz)";


 
alex810810 ©   (2012-03-23 15:53) [9]

Оказалось проше сделать так =)

if блок="" then
        begin
         DataOtchet1.Выбор_объектов_факт.SQL.Text:="SELECT  distinct a.kod_obekta "+
         "FROM "+ "jurnal"+UPromejutochnay.код_цеха+"br"+код_бригады_табель+UPromejutochnay.год_открытия+
         " a where a.shifr_obekta="""+шифр+""" and a.data_provedeniy_rabot between to_date("""+начальная_дата1+""""+
         ",""dd.mm.yyyy"") and to_date("""+конечная_дата1+""",""dd.mm.yyyy"")"+
         " and (a.priznak_otgula=""Работа в выходной"" or a.priznak_otgula is null)  and nomer_bloka is null";
        end;
       if блок<>"" then
        begin
         DataOtchet1.Выбор_объектов_факт.MacroByName("jurnal026br12010").Value:=
         "jurnal"+UPromejutochnay.код_цеха+"br"+код_бригады_табель+UPromejutochnay.год_открытия;
         DataOtchet1.Выбор_объектов_факт.Params[0].Value:=шифр;
         DataOtchet1.Выбор_объектов_факт.Params[1].Value:=начальная_дата1;
         DataOtchet1.Выбор_объектов_факт.Params[2].Value:=конечная_дата1;
         DataOtchet1.Выбор_объектов_факт.Params[3].Value:=блок;
        end;

хотя хотелось бы этого избежать =)


 
Ega23 ©   (2012-03-23 16:54) [10]


> тут ошибка (ни или может быть ошибка), нужно так
> :param2 =zzz)";
>


Тогда уж zzz=:param2  :)


> Оказалось проше сделать так =)


Скажи, а чем тебя else не устраивает? Религия запрещает?
Не, оно конечно ненаказуемо. Но ввергает в содрогание.

function ConvertBooleanValue(Value: Boolean): Boolean;
begin
 if Value = True then
 begin
   Result := False;
 end
 else
 begin
   if Value = False then
   begin
     Result := True;
   end
   else
   begin
     raise Exception.Create("Unknown boolean value")
   end;
 end;
end;


:)



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

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



Память: 0.48 MB
Время: 0.049 c
2-1345986998
Wadimka
2012-08-26 17:16
2013.03.22
Кто-нибудь работал с компонентом SecureBridg?


2-1337847952
Bojo
2012-05-24 12:25
2013.03.22
Сократить код


15-1351950219
Wonder
2012-11-03 17:43
2013.03.22
Какой хулиган удалил мой логин?


2-1339941974
ankazh
2012-06-17 18:06
2013.03.22
ShowModal


2-1334607403
Непомнящий
2012-04-17 00:16
2013.03.22
Кончается память




   Наверх