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

Вниз

ADODataSet - Parameters   Найти похожие ветки 

 
Silver_   (2003-04-11 15:30) [0]

ADODataSet1.CommandText имеет значение

Select * from table1
where :param1=True

в проге делаю
ADODataSet1.Close;
ADODataSet1.Parameters.ParamByName("param1").Value:=True;
ADODataSet1.Open;


в ответ получаю

...Sintax error (missing operator) in query expression " WHERE ? = True" ...


выделеную строчку в коде заменяю (что является аналогом :) )
ADODataSet1.Parameters.Items[0].Value:=True;

и опять 25 :(
В чем трабл то???


 
Silver_   (2003-04-11 15:34) [1]

кстати трасировщиком когда прохожу параметримеет нужное значение
а Дельфя полюбому выдает мол нету у него значения


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

это ты типа поле подставляешь или что?


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

А так?

Select * from table1
where :param1


 
AlexSerp   (2003-04-11 15:43) [4]

Всегда считал, что надо так

Select * from table1
where поле условие :param1

Например
Select * from table1
where field1 >= :param1



 
Silver_   (2003-04-11 16:21) [5]


>
> Select * from table1
> where :param1=True

это упрощенный пример само сабой нет особого смысла вот по другому:

Select * from table1
where :param1 or field1=:param2


пояснения: :)
т.е. если param1=True тогда "плевать" хотелось на ограничения field1=:param2 если param1=False тогда выдавать тока field1=:param2

тогда ошибка выглядит так

...Sintax error (missing operator) in query expression " WHERE ? or field2= ?" ...



 
Silver_   (2003-04-11 16:23) [6]

Да и вобще бог с ним с этим запросом почему он параметры не признает типа их ваще не задавал


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

СУБД???

Select * from table1
where ?param1 or (field1=?param2)


 
Жук   (2003-04-11 16:25) [8]

Select * from table1
where 1=:param1
Если надо истину, то ADODataSet1.Parameters.ParamByName("param1").AsInteger:=1;
Только не понятно к чему всё это ?


 
Silver_   (2003-04-11 16:43) [9]


> Соловьев © (11.04.03 16:23)

MS Access


> Жук © (11.04.03 16:25)
> Select * from table1
> where 1=:param1 Если надо истину, то ADODataSet1.Parameters.ParamByName("param1"). AsInteger:=1;

вы уверены что он тама (у ADODataSet) есть
ADODataSet1.Parameters.ParamByName("param1"). AsInteger


> Только не понятно к чему всё это ?

нада запрос такой

SELECT * FROM Table1
WHERE((:UseFromDate = False) OR (CurrDate >= :FromDate))
AND ((:UseTillDate = False) OR (CurrDate <= :TillDate))

если UseFromDate = False диапазон неограничен слева
если UseTillDate = False диапазон неограничен справа

ДА ДЕЛО НЕ В ЗАПРОСЕ ОН ПРАВЕЛЬНО РАБОТАЕТ (без параметров)


 
Соловьев   (2003-04-11 16:45) [10]


> Select * from table1
> where ?param1 or (field1=?param2)

обрати внимание на ?


 
Жук   (2003-04-11 16:47) [11]

Я бы просто динамически сформировал текст запроса.


 
Silver_   (2003-04-11 16:48) [12]

кстати почему я думаю что дело не в запросе,
потому что после добавления параметров в запрос я забыл присвоить им значения из проги и Дельфя ругнулся точно так-же как после того как я это исправил


 
Silver_   (2003-04-11 16:55) [13]


> Соловьев © (11.04.03 16:45)
>
> > Select * from table1
> > where ?param1 or (field1=?param2)
>
> обрати внимание на ?


не понял там ":" всегда так делал правда не в АДО, или я не о том :)


 
Silver_   (2003-04-11 16:58) [14]


> Жук © (11.04.03 16:47)
> Я бы просто динамически сформировал текст запроса.

не то чтоб настаивал но не отступать перед трудностями то :)
нада добить этот трабл есть возможность почему-бы не воспользоваться


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

с ? проверил или нет?


 
AlexSerp   (2003-04-11 17:00) [16]

Вот этого я и не понимаю.
Как в условии WHERE дать просто параметр?
Неужели в Аксессе можно просто написать параметр не сравнивая его ни с чем?
Пардон, конечно, но в Аксессе не работал.


 
Silver_   (2003-04-11 17:07) [17]


> AlexSerp © (11.04.03 17:00)


это было упрощенно потом привел более полноценно
SELECT * FROM Table1
WHERE((:UseFromDate = False) OR (CurrDate >= :FromDate))
AND ((:UseTillDate = False) OR (CurrDate <= :TillDate))


если UseFromDate = False диапазон неограничен слева
если UseTillDate = False диапазон неограничен справа


> Соловьев © (11.04.03 16:59)
> с ? проверил или нет?

Да даже в списке Parameters в Design-Time не появляются


 
AlexSerp   (2003-04-11 17:12) [18]

Попробуй все таки вместо
:UseFromDate = False
сделать
1 =:UseFromDate
и в параметре передавать 1 или 0


 
Mike Kouzmine   (2003-04-11 17:13) [19]

Вопрос False AND любое значение - что будет


 
Silver_   (2003-04-11 17:23) [20]

Ребята ПРОШУ ПРАЩЕНИЯ замучал всех, а всё изза того что хотел упростить понимание моего кода

НАШЕЛ где грабли были

Я привел следующий запрос

SELECT * FROM Table1
WHERE((:UseFromDate = False) OR (CurrDate >= :FromDate))
AND ((:UseTillDate = False) OR (CurrDate <= :TillDate))


а у меня было так
SELECT * FROM Table1
GROUP BY ...
WHERE((:UseFromDate = False) OR (CurrDate >= :FromDate))
AND ((:UseTillDate = False) OR (CurrDate <= :TillDate))


WHERE добавил потом и не заметил что НЕ ТУДА сунул надо было перед GROUP BY ...

ещё раз прошу ПРОЩЕНИЯ!!!
и СПАСИБО за отклики, теперь уверен мастера не оставят в трудную минуту



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

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

Наверх





Память: 0.49 MB
Время: 0.007 c
3-465
Сергей Б.
2003-04-14 14:26
2003.05.01
IB: как получить подытог в SQL запросе?


7-817
SasH_Ok
2003-03-14 06:02
2003.05.01
Сколько памяти занимает процесс


14-760
Шоломицкий
2003-04-14 13:21
2003.05.01
Картинки карт


1-511
Vitek
2003-04-20 20:33
2003.05.01
Как сделать окно активным?


3-459
oleg_k
2003-04-14 11:56
2003.05.01
Как в Delphi создать список файлов заданного каталога?





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