-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Как получить редактируемый Recordset из UDF

Среда, 08 Августа 2018 г. 12:15 + в цитатник
Есть MDB со связанными на SQL Server таблицами. На сервере UDF типа:
CREATE FUNCTION [dbo].[TestUDF]
(	
	@forCode int
)
RETURNS TABLE 
AS
RETURN 
(
	SELECT top (100) PERCENT * FROM Box WHERE Box.Code=@forCode
)

Как из неё получить редактируемый Recordset ?
Я пытался, так же как открываю SP:
+
Public Function OpenSP(ByVal name As String, cmdType As ADODB.CommandTypeEnum, ParamArray ParamsAndValues()) As ADODB.Recordset
    Dim e As Error
    Dim cnn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim param As ADODB.Parameter
    Dim rst As ADODB.Recordset
    Dim expr As String
    Dim I As Long
        
On Error GoTo err_me

    Set cnn = New ADODB.Connection
    cnn.Open ConnString
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = cnn
    
    Set rst = New ADODB.Recordset
    Set rst.ActiveConnection = cnn
    
    cmd.CommandText = name
    cmd.CommandType = cmdType
    cmd.NamedParameters = True
    
    ' evaluated params 
On Error Resume Next
    For Each param In cmd.Parameters
        If param.Direction = adParamInput Or param.Direction = adParamInputOutput Then
            expr = GetOriginalName(param.name)
            param.Value = Eval(expr)
        End If
    Next param
On Error GoTo err_me
    'passed params
    For I = LBound(ParamsAndValues) To UBound(ParamsAndValues) Step 2
        Set param = cmd.Parameters("@" & ParamsAndValues(I))
        param.Value = ParamsAndValues(I + 1)
    Next I
    
    rst.CursorType = adOpenDynamic
    rst.CursorLocation = adUseClient
    rst.Open cmd
    
    Set OpenSP = rst

exit_me:
    Exit Function
err_me:
    Debug.Print Now, Err.Number, Err.Description
    For Each e In DBEngine.Errors
        Debug.Print "", e.Number, e.source, e.Description
    Next e
    Debug.Print , , name
    Debug.Assert False
    Err.Clear
    Resume exit_me
End Function

Вызов
?openSP("TestUDF",adCmdText ,"forCode",7777).RecordCount 

Но ошибка уже на этапе работы с коллекцией параметров.

http://www.sql.ru/forum/1300647/kak-poluchit-redaktiruemyy-recordset-iz-udf


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку