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

Вниз

Параметры в запросе   Найти похожие ветки 

 
Kostafey ©   (2006-11-16 01:08) [0]

Прошу подсказать где я потерял мозги, так как не смотря на всю глупость вопроса не смог с ним разобраться.

Посылаю запрос в датасет:
Select ...
from ...
where (DATE_ZVK1 between :DateFrom and :DateTo)
union
Select ...
from ...
where (DATE_ZVK1 between :DateFrom and :DateTo)
order by ...

ADODataSet1.Parameters.ParamByName("DateFrom").Value:="2006.04.01";
ADODataSet1.Parameters.ParamByName("DateTo").Value:="2006.05.01";

И не работает ! Пишет ошибка в параметре.

Вот так будет работать, но это слишком некрасиво:
Select ...
from ...
where (DATE_ZVK1 between :DateFrom and :DateTo)
union
Select...
where (DATE_ZVK1 between :DateFrom_1 and :DateTo_1)
order by ...

ADODataSet1.Parameters.ParamByName("DateFrom").Value:="2006.04.01";
ADODataSet1.Parameters.ParamByName("DateTo").Value:="2006.05.01";
ADODataSet1.Parameters.ParamByName("DateFrom_1").Value:="2006.04.01";
ADODataSet1.Parameters.ParamByName("DateTo_1").Value:="2006.05.01";

Я уж пытался и статические объекты Parameters делать, и без них - ничего не помогает.


 
MikePetrichenko ©   (2006-11-16 01:14) [1]


> И не работает ! Пишет ошибка в параметре.

И не будет. Правильно пишет.


> Вот так будет работать, но это слишком некрасиво:

Только так и будет, нравится это тебе или нет.


 
Kostafey ©   (2006-11-16 01:20) [2]

> > И не работает ! Пишет ошибка в параметре.
> И не будет. Правильно пишет.
> > Вот так будет работать, но это слишком некрасиво:
> Только так и будет, нравится это тебе или нет.


Ух, а если мне надо 10 дат одинаковых проставить, а затем еще 10 других (тоже одинаковых) что ж писать
простое перечисление одинаковых значений ??? Да притом все с разными именами. Так и запутаться несложно.

Ну что ж. Все равно спасибо за помошь, то б может еще чего пробовать стал бы - лишь время бы потерял.
Будем перечислять значит...


 
Kostafey ©   (2006-11-16 01:20) [3]

> > И не работает ! Пишет ошибка в параметре.
> И не будет. Правильно пишет.
> > Вот так будет работать, но это слишком некрасиво:
> Только так и будет, нравится это тебе или нет.


Ух, а если мне надо 10 дат одинаковых проставить, а затем еще 10 других (тоже одинаковых) что ж писать
простое перечисление одинаковых значений ??? Да притом все с разными именами. Так и запутаться несложно.

Ну что ж. Все равно спасибо за помошь, то б может еще чего пробовать стал бы - лишь время бы потерял.
Будем перечислять значит...


 
MikePetrichenko ©   (2006-11-16 01:40) [4]


> Ух, а если мне надо 10 дат одинаковых проставить, а затем
> еще 10 других (тоже одинаковых) что ж писать
> простое перечисление одинаковых значений ??? Да притом все
> с разными именами. Так и запутаться несложно.

Скажем так. Часто встречался с потребностью указать одно и тоже значение для нескольких параметров. Одинаковые названия параметров не выдавали ошибку. Долго ковырялся в классе TParam (давно это было). В итоге понял, что так оно не работает. Забил.. И стал писать много разных параметров...


 
sniknik ©   (2006-11-16 01:44) [5]

> Одинаковые названия параметров не выдавали ошибку.
это в BDE... там да, можно, с одним именем на несколько.


 
MikePetrichenko ©   (2006-11-16 01:49) [6]


> sniknik ©   (16.11.06 01:44) [5]
> > Одинаковые названия параметров не выдавали ошибку.
> это в BDE... там да, можно, с одним именем на несколько.
>

Это я опечатался. ВЫДАВАЛИ ОШИБКУ.

P.S. BDE никогда не пользовал. Терпеть его не могу.


 
sniknik ©   (2006-11-16 01:54) [7]

> Это я опечатался. ВЫДАВАЛИ ОШИБКУ.
не важно. в BDE опечатка действительна...


 
ЮЮ ©   (2006-11-16 03:10) [8]

Subj-евый запрос порождает 4 параметра, а двукратное использование ParamByName заплняет только два из них. Напиши свою фунцию SetParamByName,  в которой пробежав по всем Parameters и найдя с нужным именем присваивай значение и используй её в дальнейшем.

Если движок/сервер позволяет несколько операторов в запросе, как например, MS SQL, то текст запроса можно написать так:

Declare @DateFrom datetime
Set @DateFrom = :DateFrom
Declare @DateTo datetime
Set @DateTo = :DateTo  
Select ...
from ...
where (DATE_ZVK1 between @DateFrom and @DateTo)
union
Select ...
from ...
where (DATE_ZVK1 between @DateFrom and @DateTo)
order by ...


В этом случае будем иметь по одному экземплру в Parameters с имнами "DateFrom" и "DateTo"


 
ЮЮ ©   (2006-11-16 03:12) [9]

Subj-евый запрос порождает 4 параметра, а двукратное использование ParamByName заплняет только два из них. Напиши свою фунцию SetParamByName,  в которой пробежав по всем Parameters и найдя с нужным именем присваивай значение и используй её в дальнейшем.

Если движок/сервер позволяет несколько операторов в запросе, как например, MS SQL, то текст запроса можно написать так:

Declare @DateFrom datetime
Set @DateFrom = :DateFrom
Declare @DateTo datetime
Set @DateTo = :DateTo  
Select ...
from ...
where (DATE_ZVK1 between @DateFrom and @DateTo)
union
Select ...
from ...
where (DATE_ZVK1 between @DateFrom and @DateTo)
order by ...


В этом случае будем иметь по одному экземплру в Parameters с имнами "DateFrom" и "DateTo"


 
Anatoly Podgoretsky ©   (2006-11-16 09:13) [10]

> Kostafey  (16.11.2006 01:20:02)  [2]

Буковки в запросе ничего не значат, это всего лишь алиасы для плейсхолдеров, у тебя четыре параметра и все. Ты даже запрос можешь записать так

select ... where a=:? and a=:? ... a=:?

Смотрим ADODataSet1.Parameters.Count делаем выводы
Не нравится?
Тогда перепеши АДО и БДЕ или все таки используй ADODataSet1.Parameters[I]
А что делать когда это будет не левое, а правое выражение, вешать прикажешь или монетку бросать?


 
Anatoly Podgoretsky ©   (2006-11-16 09:16) [11]

Другими словами ParamByName это "ассоциативный" массив.



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

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

Наверх




Память: 0.5 MB
Время: 0.065 c
2-1163508999
Дева
2006-11-14 15:56
2006.12.03
древовидная структура базы данных


2-1163537269
Kostafey
2006-11-14 23:47
2006.12.03
Сложный SQL запрос к БД


15-1163524439
ArtemESC
2006-11-14 20:13
2006.12.03
Как сделать поворотник...


1-1161757720
Jetus
2006-10-25 10:28
2006.12.03
Как скопировать картинку из TWebBrowser в TImage?


2-1163473730
Wood
2006-11-14 06:08
2006.12.03
Continue, вложенный цикл.