output parameter

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

output parameter

Сообщение RuslanG » 18.08.2006 (Пт) 11:04

Подскажите пожалуйста как вызвать хранимую процедуру с output parameter из vb с использованием ADO

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.08.2006 (Пт) 11:06

А как ты вызываешь хранимую процедуру с input параметром?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.08.2006 (Пт) 11:09

Не через объект ли Command? :wink:
Лучший способ понять что-то самому — объяснить это другому.

RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

Сообщение RuslanG » 18.08.2006 (Пт) 11:18

Смотрите, есть код

objCmd1.CommandText = "GetKeyWordDescription"
objCmd1.CommandType = adCmdStoredProc
Set objConn = GetNewConnection
objCmd1.ActiveConnection = objConn
objCmd1.Parameters.Refresh
objCmd1(1) =listview1.SelectedItem.Text
Set objRs = objCmd1.Execute

GetKeyWordDescription эта функция имеет 1 входной и один выходной параметр. входной параметр я знаю как объявить, а как объявить выходной параметр и извлечь его значение после выполнения процедуры?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.08.2006 (Пт) 11:36

Что за бардак в терминологии? Что значит "объявить"? Объявлен он в хранимой процедуре - @param int output
Может все таки "получить значение"? ObjCmd.Parameters("param").Value
Лучший способ понять что-то самому — объяснить это другому.

RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

Сообщение RuslanG » 18.08.2006 (Пт) 11:41

Прежде чем получить значение, надо создать выходной параметр и добавить его в объект Cmd.Как это сделать?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.08.2006 (Пт) 11:49

Во-первых, ты сказал, что знаешь, как добавить входной параметр. Выходной точно так же. А во-вторых тебе этого вообще делать не нужно. Ты же делаешь .Parameters.Refresh.
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 18.08.2006 (Пт) 11:54

Код: Выделить всё
Public Function sys_Module_GetKey(ByVal ModuleID As Integer, ByVal ModuleName As String, ByVal KeyName As String, ByRef KeyValue As String) As Long
Dim cmd As ADODB.Command, p As ADODB.Parameters
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = modADO.GetConnectionString()
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "sys_Module_GetKey"
    Set p = cmd.Parameters
    p.Append cmd.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue)
    p.Append cmd.CreateParameter("@ModuleID", adSmallInt, adParamInput, , ModuleID)
    p.Append cmd.CreateParameter("@ModuleName", adVarChar, adParamInput, 50, ModuleName)
    p.Append cmd.CreateParameter("@KeyName", adVarChar, adParamInput, 20, KeyName)
    p.Append cmd.CreateParameter("@KeyValue", adVarChar, adParamOutput, 2000)
    p.Append cmd.CreateParameter("@IsEncrypted", adBoolean, adParamOutput)

    cmd.Execute , , adExecuteNoRecords

    KeyValue = p("@KeyValue")

    sys_Module_GetKey = p("RETURN_VALUE").Value
    Set p = Nothing
    Set cmd = Nothing
End Function

RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

Сообщение RuslanG » 18.08.2006 (Пт) 13:18

Antonariy , спасибо тебе чувак! опять помог :)
ступил я что-то, рефреш все переменные собирает уже.
Konst_One тоже спасибо, но у меня твой код не компилировался,
ругался на тип Parameters


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 135

    TopList