Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
14-751
Manjak
2003-04-12 15:00
2003.05.01
Как можно отредактировать exe файл.(Изменить пару значений)


14-792
Minog
2003-04-15 19:00
2003.05.01
Где можно найти справочник по функциям в дельфи?


14-691
Дмитрий К.К.
2003-04-16 06:18
2003.05.01
Именинники 16 апреля


3-484
reticon
2003-04-14 12:21
2003.05.01
удаление записи в таблице dBase


1-538
Rocker
2003-04-18 11:36
2003.05.01
Помогите, пожалуйста, с работой Delphi+Word