Форум: "Базы";
Текущий архив: 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=:param1ADODataSet1.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.006 c