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

Вниз

Передача параметров в TADOAtoredProc - HELP!!   Найти похожие ветки 

 
Дуся ©   (2002-05-27 16:59) [0]

Не будут ли любезны уважаемые мастера, общавшиеся с ADO, поделиться, всегда ли оно (он?) при вызове процедуры передает параметры в нее последовательно? то есть вызов идет вида

exec <имя процедуры>;1 "параметр1", "параметр2", 4312., 0


а не по имени, как было в почившем BDE:
exec <имя процедуры>;1 @parm1="параметр1", @parm2="параметр2", @parm3=4312, @parm4=0


 
Дуся ©   (2002-05-27 17:46) [1]

Ну неужели никто не пробовал передавать параметры независимо от последовательности указания их в процедуре?..


 
DmitryK   (2002-05-27 18:27) [2]

вообще-то в Дельфи можно передовать параметры по именам в АДОпроцедуры

ADOStoredProc.Parameters.ParamValue[Name]:=VariantData

если неошибаюсь так (или посмотри по хелпу)


 
Дуся ©   (2002-05-27 18:33) [3]

Это само собой, это я так и делаю:

ADOStoredProc.Parameters.ParamByName("name").Value := value


Однако при исполнении процедуры ( ADOStoredProc.Open) она шлет запрос на SQL именно указанного выше вида, т.е. порядок параметров увы! имеет значение. Что не есть хорошо. Совсем то есть не хорошо, для меня по крайней мере.


 
DPetrovich ©   (2002-05-27 18:52) [4]

Дуся, а какое, если не секрет, имеет значение порядок?


 
DPetrovich ©   (2002-05-27 18:54) [5]

В смысле, для Вас, по крайней мере...


 
Дуся ©   (2002-05-27 19:02) [6]

Вовсе не секрет. Например: на SQL есть процедура:

CREATE PROCEDURE dbo.sp_do_something
@parm1 float = 0.5,
@parm2 char(1)
AS
SELECT "Oppla!"
GO

Как видно, второй параметр имеет дефолт-значение, т.е. я его могу вообще не передавать и не знать о его существовании. Однако, в описанном мной случае, я вынуждена его тоже указывать, иначе ничего не получится. Таким образом, исправление процедуры влечет за собой неизбежное исправление Delpi-кода, что сами понимаете - просто аццтой.
:)


 
DPetrovich ©   (2002-05-27 19:11) [7]

Дуся, чё-то я не пойму проблему...
Причём тут последовательность параметров?
Ежели вы хотите что бы а процедуре использовалось дефолт-значение, то не присваивайте ентому параметру значение в Делфи... почему не получается не указывать-то?


 
Дуся ©   (2002-05-27 19:19) [8]

Да потому что моя программа все равно должна знать о существовании этого параметра, чтобы "не указать" в нем значение!!.. А на этапе создания она может этого и не знать. Плюс, если не присваивать значение, то все равно передается NULL, а это согласитесь не то же самое что брать дефолт...

Может, я неясно выражаюсь?


 
DPetrovich ©   (2002-05-27 19:32) [9]

Дуся, чё-то я не пойму проблему...
Причём тут последовательность параметров?
Ежели вы хотите что бы а процедуре использовалось дефолт-значение, то не присваивайте ентому параметру значение в Делфи... почему не получается не указывать-то?


 
DPetrovich ©   (2002-05-27 19:39) [10]

Дуся, "не знать" программа не может... Если Вы добавляете параметр, то должны добавить его в свойстве TADOStoredProc.Parametrs ...
А на счёт дефолт, на сколько я понимаю оно берётся как раз в случае если значение пришло null...


 
jonik pegas ©   (2002-05-28 08:51) [11]

DPetrovich ©, Дуся © права права такое поведение ADO-зависимость передачи параметров от их порядка следования в хранимой процедуре не есть совсем хорошо.


 
Zemal ©   (2002-05-28 09:42) [12]

Угу... я с вами тоже согласен... эти разработчики из Microsoft... полный отстой... кто писал эту библиотеку OLE DB, которую инкапсулируют ADO-компоненты?! Кстати, в ранних версиях OLE DB (ADO) таких проблем не было... я точно помню... а щас появились... и у меня тоже... отстооооой! Программеры из Мелкософта! Ау! Мать вашу! Вы что так переделываете концепции своих COM-объектов?! А как же мы?!
А... всё-равно не услышат... дорогие прикладные программисты... мой вам совет: пишите и тестируйте свои программы для одной версии "винды"... и работают они пускай под оной... только в таком случае проблем не будет :(... вот... ;(


 
Дуся ©   (2002-05-28 09:43) [13]

2DPetrovich © : Вы видимо мало имели дело с MS SQL.. null - это null, а дефолт берется в случае вообще неуказания параметра.
2jonik pegas ©: И что, неужели нет выхода?? Может, переписать компонент??.. Как он формирует командную строку?


 
Zemal ©   (2002-05-28 09:45) [14]

P.S. Или есть вариант: пишите свой набор COM-компонентов и работайте через них... в основном все хорошие программы именно так пишутся... только вот правильно написать COM-объект это будет посложнее, чем написать приложение для работы с БД. :)


 
Zemal ©   (2002-05-28 09:49) [15]

Дуся... дорогая... переписывай или не переписывай компонент... это не играет роли... у тебя наверное винда 2000 стоит... с сервпаками :)... так что переписывать придётся COM-объект... вот :(... так нас кинул мелкософт, всемирная история сберкассы и т.д.... история продолжается :(...


 
Дуся ©   (2002-05-28 11:40) [16]

Спасибо.. Видимо придется смириться или как-то динамически извращаться с получением набора параметров... Потому что переписывание COM-объекта в моем случае - стрельба по воробьям из пушки.



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

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

Наверх




Память: 0.51 MB
Время: 0.034 c
1-65117
ed_209
2002-06-07 02:07
2002.06.20
Search in file


1-65072
Alexy
2002-06-10 12:22
2002.06.20
Как распечатать TImage???


3-64932
Sirus
2002-05-20 07:59
2002.06.20
Форма виснет во время выполнения SQL запроса...


1-65069
BofA
2002-06-09 15:56
2002.06.20
Вопрос по StringGrid у


14-65242
XeN
2002-05-18 23:01
2002.06.20
Гыгыгыгы