Как в коде VB получить значение выходного параметра хранимой процедуры???
Формулировка задачи:
делаю клиентское приложение в access 2007 для sql server 2005
обработчик события click:
передаю входные параметры ХП: @b_code, @r_un, @date_z, @srok_v (это всё Input), выходной параметр: @out_msg (output):
CurrentDb.QueryDefs("new_registration").SQL = "use library EXECUTE new_registration @b_code='" & Me.ПолеСоСписком20.Value & "', @r_un='" & [ПолеСоСписком3] & "', @date_z='" & Me.Поле58.Value & "', @srok_v='" & Me.Поле38.Value & "', @out_msg=1 "
выполняю запрос:
DoCmd.OpenQuery ("new_registration")
запрос хорошо отрабатывается, но вот не мзнаю, как в VB получить значение выходного параметра @out_msg (int) !!!
вот сама ХП:
ALTER proc [dbo].[new_registration]
@b_code char(10), @r_un int, @date_z datetime, @srok_v datetime=null, @out_msg int output
as
exec ostatok /*обращаюсь к процедуре подсчета текущего числа экземпляров каждой книги по каждому залу*/
declare @rr char(10)
set @rr=(select library.dbo.readers.rr_id from library.dbo.readers where library.dbo.readers.reader_un=@r_un) /*вычисляю номер зала, за которым закреплен читатель*/
if (select book_ost from library.dbo.book_count where library.dbo.book_count.book_code=@b_code and library.dbo.book_count.rr_id=@rr)>0 /*определяю наличие экземпляров (>=1) выбранной книги в зале*/
and (select library.dbo.readers.Date_vyp from library.dbo.readers where library.dbo.readers.reader_un=@r_un) is NULL /*"валидация" читателя*/
begin
INSERT INTO Registration (book_code, reader_un, date_zakr, srok_vozvr) VALUES (@b_code, @r_un, convert(datetime,@date_z,104), convert(datetime,@srok_v,104)) /*если хотя бы один экземпляр выбранной книги имеется в наличии, осуществляю акт регистрации записи в регистрационном журнале*/
exec ostatok /*обновляю сведения о текущем количестве книг*/
set @out_msg=1
end
else
begin
set @out_msg=0
end
return @out_msg
Помогите, пожалуйста, братцы, сроки меня поджимают уже!!!!
обработчик события click:
передаю входные параметры ХП: @b_code, @r_un, @date_z, @srok_v (это всё Input), выходной параметр: @out_msg (output):
CurrentDb.QueryDefs("new_registration").SQL = "use library EXECUTE new_registration @b_code='" & Me.ПолеСоСписком20.Value & "', @r_un='" & [ПолеСоСписком3] & "', @date_z='" & Me.Поле58.Value & "', @srok_v='" & Me.Поле38.Value & "', @out_msg=1 "
выполняю запрос:
DoCmd.OpenQuery ("new_registration")
запрос хорошо отрабатывается, но вот не мзнаю, как в VB получить значение выходного параметра @out_msg (int) !!!
вот сама ХП:
ALTER proc [dbo].[new_registration]
@b_code char(10), @r_un int, @date_z datetime, @srok_v datetime=null, @out_msg int output
as
exec ostatok /*обращаюсь к процедуре подсчета текущего числа экземпляров каждой книги по каждому залу*/
declare @rr char(10)
set @rr=(select library.dbo.readers.rr_id from library.dbo.readers where library.dbo.readers.reader_un=@r_un) /*вычисляю номер зала, за которым закреплен читатель*/
if (select book_ost from library.dbo.book_count where library.dbo.book_count.book_code=@b_code and library.dbo.book_count.rr_id=@rr)>0 /*определяю наличие экземпляров (>=1) выбранной книги в зале*/
and (select library.dbo.readers.Date_vyp from library.dbo.readers where library.dbo.readers.reader_un=@r_un) is NULL /*"валидация" читателя*/
begin
INSERT INTO Registration (book_code, reader_un, date_zakr, srok_vozvr) VALUES (@b_code, @r_un, convert(datetime,@date_z,104), convert(datetime,@srok_v,104)) /*если хотя бы один экземпляр выбранной книги имеется в наличии, осуществляю акт регистрации записи в регистрационном журнале*/
exec ostatok /*обновляю сведения о текущем количестве книг*/
set @out_msg=1
end
else
begin
set @out_msg=0
end
return @out_msg
Помогите, пожалуйста, братцы, сроки меня поджимают уже!!!!
Решение задачи: «Как в коде VB получить значение выходного параметра хранимой процедуры???»
textual
Листинг программы
<font color="blue">Sub</font> Get_DAO_OutputParam() <font color="blue">Dim</font> q <font color="blue">As</font> DAO.QueryDef <font color="blue">Dim</font> txt <font color="blue">As</font> <font color="blue">String</font> <font color="blue">Dim</font> RetVal <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Dim</font> OutParam <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Dim</font> r <font color="blue">As</font> DAO.Recordset txt = <font color="teal">"ODBC;DSN=Radio;UID=sa;PWD=;DATABASE=Radio;Network=DBNMPNTW"</font> <font color="blue">Set</font> q = CurrentDb.CreateQueryDef(<font color="teal">""</font>) q.Connect = txt txt = <font color="teal">"declare @Unicum int "</font> & _ <font color="teal">" declare @RC int "</font> & _ <font color="teal">"EXEC @RC = GetUNum 401, 'р1', 2, @Unicum OUTPUT "</font> & _ <font color="teal">"select @Rc RetVal, @Unicum OutParam"</font> q.SQL = txt q.ReturnsRecords = True <font color="blue">Set</font> r = q.OpenRecordset OutParam = r!OutParam <font color="#00AA00">'Output parameter</font> RetVal = r!RetVal <font color="#00AA00">' Return value</font> r.<font color="blue">Close</font>: <font color="blue">Set</font> r = <font color="blue">Nothing</font> q.<font color="blue">Close</font>: <font color="blue">Set</font> q = <font color="blue">Nothing</font> Debug.<font color="blue">Print</font> RetVal, OutParam <font color="blue">End</font> <font color="blue">Sub</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д