|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
Ситуация такая: есть отчет в Excel. Есть хранимая процедура на сервере. Как ее вызвать и получить выборку. Вроде бы надо делать это через ADO? Подключится, вызвать процедуру с параметрами, создать Recordset и выкинуть данные Excel. Только я этого не разу не делал. Помогите с кодом. Как это написать? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 06:58 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
rs.open "EXEC NAMESTOREPROCE" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 10:19 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
а у Екцеля есть метод CopyFromRecodset - для сброса всего рекордсета З.Ы. А параметры у процедуры есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 12:01 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
Да, параметры есть ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 13:08 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
Я так делаю если параметры ХП только входные: ADOcommand.CommandType = adCmdText ADOcommand.CommandText = "exec <Имя хранимой проц> [.., .., ..]" Set ADOrecordset = ADOcommand.Execute() ======================================= или если есть выходные параметры, то только так: ADOstream.Type = adTypeBinary ' я тут использую поток, ADOstream.Mode = adModeReadWrite ' так что тоже тебе может пригодится ADOstream.Open ' для передачи тела файлов в ХП ADOstream.LoadFromFile (path) ' (картинки, mp3, чё угодно) ' -= а это по твоему вопросу =- ADOcommand.CommandType = adCmdStoredProc ADOcommand.CommandText = "load_image_question" Set ADOparameter = ADOcommand.CreateParameter("@id", adInteger, adParamInput, 4, Ma_ID) ADOcommand.Parameters.Append ADOparameter Set ADOparameter = ADOcommand.CreateParameter("@df", adInteger, adParamInput, 4, Df_ID) ADOcommand.Parameters.Append ADOparameter Set ADOparameter = ADOcommand.CreateParameter("@flag", adBoolean, adParamInput, 1, False) ADOcommand.Parameters.Append ADOparameter '========================= 'я так передается поток: '========================= ADOstream.Position = 0 Set ADOparameter = ADOcommand.CreateParameter("@datai", adBinary, adParamInput, ADOstream.Size, ADOstream.Read) ADOcommand.Parameters.Append ADOparameter Set ADOrecordset = ADOcommand.Execute() ADOstream.Close P.S. Не забудь чистить параметры в команде после использования процедуры :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 14:48 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
а что так сложно вызываешь, через поток? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2003, 21:17 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
2Ulis : Ты хоть понял, что спросил? Я её и не вызываю через поток, а в процедуру передаю содержимое потока в качестве одного из параметров... :-) так вот.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2003, 09:41 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
Ой, какие умные собеседники есть, прям завидно. Я вызываю процедуру, например, так: Set rst = cnn.Execute("ИмяМоейПроцедуры('ПервыйПараметр','ВторойПараметр',ТретийПараметр)", adCmdStoredProc) cnn - текущее соединение с базой ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2003, 20:26 |
|
Помогите вызвать хранимую процедуру через ADO
|
|||
---|---|---|---|
#18+
2Ulis Уважаемый, Ulis, мы наверное говорим о разных вещах. Ваш пример хорош, у меня другая сиитуация: нуна перебрасывать по 10 метров данных в базу - без потока - не обойтись... А в твоем варианте содержимое потока переслать - КАК? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2003, 14:08 |
|
|
start [/forum/topic.php?fid=60&msg=32179537&tid=2171163]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 140ms |
0 / 0 |