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

Вниз

Передача параметра со значение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.104 c
3-1276194806
Дмитрий Белькевич
2010-06-10 22:33
2013.03.22
Еще вопрос по оптимизации запроса.


15-1343987497
AV
2012-08-03 13:51
2013.03.22
Quip 2012. Как раз и навсегда изменить порт с 433 на 5190?


15-1351492704
oldman
2012-10-29 10:38
2013.03.22
Задачка. Ответа я не знаю.


2-1335937740
Александр_12
2012-05-02 09:49
2013.03.22
Возможно ли управлять PowerPoint


15-1339791776
OPOPO
2012-06-16 00:22
2013.03.22
Как отключить Alt+Tab В XP?





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