Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: 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 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.154 c
2-1342945485
Ярослав
2012-07-22 12:24
2013.03.22
Склейка формы


10-1182370787
miks
2007-06-21 00:19
2013.03.22
Проблема открытия файла в MS Word


15-1334739336
oldman
2012-04-18 12:55
2013.03.22
Забыл решение...


15-1347981872
dm_member
2012-09-18 19:24
2013.03.22
(Специфичный случай) Сохранение строк в байтовом формате


15-1350040484
Pavia
2012-10-12 15:14
2013.03.22
Видео связь