powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выходной параметр ХП
25 сообщений из 25, страница 1 из 1
Выходной параметр ХП
    #32287963
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помоготе пожалуйста.
Не получается получить выходной параметр из храранимой процедуры. Если оставить только входные параметры то процедура работает, а как присвоить акцесовской переменной значение выходного параметра процедуры не пойму.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    
Dim nomer As String
Dim qry As QueryDef
Dim PN_U As Integer

nomer='ff'

Set qry = CurrentDb.CreateQueryDef( "")
    qry.Connect = " ODBC;DSN=SRV;DATABASE=db1;LANGUAGE=English;Address=srvdb, 1433 ;AnsiNPW=No "
    qry.ReturnsRecords = False
    qry.SQL = " {call Pr1 ('" & nomer & "', @PO_U= " & PN_U & "  OUTPUT)}"


такой вариант на работает
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32287989
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли вообще получить из хранимой процедуры значение ее выходного параметра?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288098
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй ADO или ODBCDirect...
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288176
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 PA
Пожет примерчик какой-нибудь приведете
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288215
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот примерчик
только он для ADP
тебе придется строку подключения сделать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim cmd As New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText =  "sp_daystatus" 
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter( "@data" , adInteger, adParamInputOutput)
cmd.Parameters( 0 ) = datasql  'это входное значение'
cmd.Execute
dataintable = cmd.Parameters( 0 )  'это выходное значение'
Set cmd = Nothing
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288219
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 АлексейК
Да, классная вещь ADO. Спасибо, буду разбираться с ADO.
У меня правда проект на Access97, там вроде как ADO не поддерживается и надо устанавливать ссылку на библиотеку ADO (я еще не пробовал).
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288391
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Dim ws As Workspace
    Dim cn As Connection
    Dim strSQL As String
    Dim qd As QueryDef
    
    Set ws = CreateWorkspace( "ODBCWorkspace" ,  "admin" ,  "", dbUseODBC)
    Set cn = ws.OpenConnection(" Store ", dbDriverNoPrompt, False, _
    " ODBC;DSN=Store;DATABASE=Store;Network=DBMSSOCN;Trusted_Connection=Yes ")
    
    strSQL = " {call dbo.sp_Test (?,?)} "

    Set qd = cn.CreateQueryDef("  ", strSQL)

    qd.Parameters(0 ).Direction = dbParamInput
    qd.Parameters( 1 ).Direction = dbParamOutput
    qd.Parameters( 0 ) = " 1 "

    qd.Execute
    
    MsgBox qd.Parameters( 1 )
    
    cn.Close
    ws.Close
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288605
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и писать dbo.sp_Test (?,?) с ворпосами?

Код: plaintext
strSQL =  "{call dbo.sp_Test (?,?)}"  ?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288789
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"?" - это параметр процедуры dbo.sp_Test. Сколько параметров в твоей конкретной процедуре, столько "?" и ставь.
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288809
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно конечно, что параметр, просто синтаксис какой то странный
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288812
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. в твоем конкретном случае
Код: plaintext
1.
2.
3.
strSQL =  "{call Pr1 (?,?)}" 
qd.Parameters( 0 ).Direction = dbParamInput
qd.Parameters( 0 ) = nomer
qd.Parameters( 1 ).Direction = dbParamOutput

если конечно я правильно понял замысел - у процедуры Pr1 2 параметра, первый входной, второй выходной.
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32288816
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто синтаксис какой то странный
ну так этож DAO, в ADO поэлегантней. Сам решай что использовать.
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32289055
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Pavel
Да ты все правильно понял, спасибо.
Пока правда ODBC -ошибка вызова выдает, но буду искать где ошибка.
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32289275
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    Dim ws As Workspace
    Dim cn As Connection
    'Dim strSQL As String
    Dim qd As QueryDef
    
    Set ws = CreateWorkspace( "ODBCWorkspace" ,  "admin" ,  "", dbUseODBC)
    Set cn = ws.OpenConnection(" Store ", dbDriverNoPrompt, False, _
    " ODBC;DSN=SRV;DATABASE=db;LANGUAGE=English;Address=dbsrv, 1433 ;AnsiNPW=No ")
    
    strSQL = " {call dbo.fff (?,?,?,?)} "
    
    Set qd = cn.CreateQueryDef("  ")    
    qd.SQL = strSQL
    qd.Parameters(0 ).Direction = dbParamInput
    qd.Parameters( 1 ).Direction = dbParamInput
    qd.Parameters( 2 ).Direction = dbParamInput
    qd.Parameters( 3 ).Direction = dbParamInput    
    qd.Parameters( 0 ) = "a "
    qd.Parameters(1 ) =  2 
    qd.Parameters( 2 ) = "b"
    qd.Parameters( 3 ) =  4 
    qd.Execute   
   
    cn.Close
    ws.Close


Получаю - ODBC -ошибка вызова
Может подскажите где ошибка?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32289482
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала раскомментируй 'Dim strSQL As String. Но это не причина.
Скорее всего дело в строке подключения.
1. Замени имя коннекта на совпадающее с DSN, т.е. вместо "Store" поставь "SRV".
2.Сообщи тип аунтификации - SQL или смешанная.
3. При создании/редактировании DSN проходит тестовое соединение?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32289623
ustasw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Pavel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    Dim ws As Workspace
    Dim cn As Connection
    Dim strSQL As String
    Dim qd As QueryDef
    
    Set ws = CreateWorkspace( "ODBCWorkspace" ,  "admin" ,  "", dbUseODBC)
    Set cn = ws.OpenConnection(" SRV ", dbDriverNoPrompt, False, _
    " ODBC;DSN=SRV;DATABASE=db;LANGUAGE=English;Address=dbsrv, 1433 ;AnsiNPW=No ")
    
    strSQL = " {call dbo.fff (?,?,?,?)} "
    
    Set qd = cn.CreateQueryDef("  ")    
    qd.SQL = strSQL
    qd.Parameters(0 ).Direction = dbParamInput
    qd.Parameters( 1 ).Direction = dbParamInput
    qd.Parameters( 2 ).Direction = dbParamInput
    qd.Parameters( 3 ).Direction = dbParamInput    
    qd.Parameters( 0 ) = "a "
    qd.Parameters(1 ) =  2 
    qd.Parameters( 2 ) = "b"
    qd.Parameters( 3 ) =  4 
    qd.Execute   
   
    cn.Close
    ws.Close
 


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

1. Замени имя коннекта на совпадающее с DSN, т.е. вместо "Store" поставь "SRV".
-заменил
2.Сообщи тип аунтификации - SQL или смешанная.
- тип аунтификации SQL
3. При создании/редактировании DSN проходит тестовое соединение?
-смотрел в Profile, соединения нет
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685632
Rodion Doroshkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как от StoredProcedure получить массив записей, например рекордсет?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685659
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА как от StoredProcedure получить массив записей, например рекордсет?

обязательно в выходной параметр ?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685673
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rodion DoroshkevichА как от StoredProcedure получить массив записей, например рекордсет?
mdp/adp ?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685680
Rodion Doroshkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shuhard Rodion DoroshkevichА как от StoredProcedure получить массив записей, например рекордсет?
mdp/adp ?
Работаю в MDE, а в какой рекордсет? DAO или DAO все равно.
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685693
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAO или DAO все равно.
воистину все равно
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685716
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прямой запрос к серверу через ODBC - "exec SP Par1,Par2,Par3"
на запросе открываешь RecordSet
если надо параметры менять - через DAO.QueryDef
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim MyZap As DAO.QueryDef
Dim MyDb As DAO.Database
Dim RstSp as DAO.Recordset
Set MyDb = CurrentDb
On Error Resume Next
MyDb.QueryDefs.Delete "ZMyZap"
Set MyZap = MyDb.CreateQueryDef("ZMyZap")
MyZap.Connect = "ODBC;DSN=rumba;DATABASE=tel;Trusted_Connection=Yes"
MyZap.SQL = "exec SP Par1,Par2,Par3"
Set RstSp = MyZap.OpenRecordset
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685728
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shuhard

тока вроде автор хочет рекордсет получить в выходной параметр согласно теме топика ?
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685730
Rodion Doroshkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rodion Doroshkevich
Работаю в MDE, а в какой рекордсет? DAO или DAO все равно.
Сорри MDB, и DAO и ADO, конечно!
...
Рейтинг: 0 / 0
Выходной параметр ХП
    #32685743
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК2 Shuhard

тока вроде автор хочет рекордсет получить в выходной параметр согласно теме топика ?
я думаю,что автор ЭТОГО не хочет,а использует чужой топик в корыстных целях
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выходной параметр ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]