Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка при вызове хп с параметрами. Помогите / 15 сообщений из 15, страница 1 из 1
09.12.2008, 15:36
    #35703032
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Доброго времени суток, уважаемые

Подскажите пожалуйста как можно избежать ошибки, которая возникает при назначении входных параметров для хранимой процедуры.
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
' Выполняет хранимую процедуру и заносит значения выходных параметров в массив типа Variant(если он не NULL, т.е. если выходные параметры нужны)
' Рекомендована к использованию только если требуются выходные параметры, иначе ExecuteCommand
'   [in] oCn             - ADO Connection
'   [in] sProcedure      - Имя хранимой процедуры
'   [in] aParamsIn()     - Массив входных параметров процедуры
'   [out] aParamsOut()   - Возвращаемый массив выходных параметров
'   [out] sErr           - Сообщение об ошибке
Public Sub ExecuteProcedure(oCn As ADODB.Connection, sProcedure As String, aParamsIn() As String, aParamsOut() As String, sErr As String)
    Dim oCmd As ADODB.Command
    Dim oRs As ADODB.Recordset
    Dim oParams As ADODB.Parameters

    Dim nIn As Integer
    Dim nOut As Integer
    Dim i As Integer
    On Error GoTo OnError

    Set oCmd = New ADODB.Command
    With oCmd
        Set .ActiveConnection = oCn
        .CommandType = adCmdStoredProc
        .CommandText = sProcedure
        .CommandTimeout = CMDTimeout
        Set oParams = .Parameters

    End With

    If Not IsNull(aParamsIn) Then
        nIn = UBound(aParamsIn,  1 )
        For i =  0  To nIn
            oParams.Item(CInt(aParamsIn(i, IDX_PARAM))) = aParamsIn(i, IDX_VALUE)
        Next
    End If

    oCmd.Execute , , True

    If Not IsNull(aParamsOut) Then
        nOut = UBound(aParamsOut,  1 )
        For i =  0  To nOut
            'Собственно вот тут и валится

            aParamsOut(i, IDX_VALUE) = oParams.Item(CInt(aParamsOut(i, IDX_PARAM)))
        Next
    End If

    sErr = ""
    Exit Sub
OnError:
    sErr = Err.Number & " " & Err.Source & " " & Err.Description
    Exit Sub
End Sub
выдает ошибку: "-2147217900 Microsoft OLE DB Provider for SQL Server Ошибка синтаксиса или нарушение прав доступа"
...
Рейтинг: 0 / 0
09.12.2008, 15:46
    #35703084
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
> Автор: Kallandor
> Доброго времени суток, уважаемые

Добрый, с возвращением

> выдает ошибку: "-2147217900 Microsoft OLE DB Provider for SQL Server Ошибка синтаксиса или нарушение прав доступа"

Не оно ?

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.12.2008, 15:53
    #35703123
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Игорь Горбонос,

и тебе, "здрасте". Мне хочется узнать как вылечить эту ошибку. На базе я ведь dbo. ему какую-то конвертацию надо еще дописать, так чтоли?
...
Рейтинг: 0 / 0
09.12.2008, 15:58
    #35703149
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
И еще вопрос нужно ли задавать размер объекта oParams?
...
Рейтинг: 0 / 0
09.12.2008, 16:02
    #35703162
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
> Автор: Kallandor
> Игорь Горбонос,
>
> и тебе, "здрасте". Мне хочется узнать как вылечить эту ошибку. На базе я ведь dbo. ему какую-то конвертацию надо
> еще дописать, так чтоли?


Нет, для начала узнать какой версии, твой МДАК и если чего, то обновить, ссылка была на той странице, или же пойти по
ссылке:
330199 (http://support.microsoft.com/kb/330199/ ) Появление сообщения об ошибке «Ошибка синтаксиса или нарушение
доступа» при использовании в команде SQL определенной последовательности ASCII-знаков
и почитать, какие последовательности символов приводят к этой ошибке, и если чего написать апдейт, на их исправление и
чек или тригер на первентивный отсмотр и исправление для будущих поколений

Я бы начал с обновления, хотя могут быть варианты, например использование какого-нибудь поведения, которое изменено в
новой версии МДАКа, и дабы не перепахивать весь проект, просто изменение самих данных.
А раз ты дбо, то тебе и карты в руки.

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.12.2008, 16:03
    #35703167
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
> Автор: Kallandor

а как ты задашь размер объекта?

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.12.2008, 16:11
    #35703201
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Наверное я пока туплю.
Ошибка возниает при назначении входных параметров для хранимой процедуры. А именно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
If Not IsNull(aParamsIn) Then
        nIn = UBound(aParamsIn,  1 )
        For i =  0  To nIn
'            вот тут
            oParams.Item(CInt(aParamsIn(i, IDX_PARAM))) = aParamsIn(i, IDX_VALUE)
        Next
    End If

дальше подключена библиотека Microsoft ActiveX Data Objects 2.7 Library (вот тут не понимаю с чем могут быть проблемы)

параметры передаются как string. В вызываемой хранимой процедуре они определены как Varchar(4)

Вопрос: что надо сделать, чтобы мой код наконец-таки заработал?
...
Рейтинг: 0 / 0
09.12.2008, 16:12
    #35703205
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Игорь Горбонос
> Автор: Kallandor

а как ты задашь размер объекта?

--
С уважением Горбонос Игорь Леонидович


входные массивы у меня редимлены. а вот oParams - наверное нет. Как его задать?
...
Рейтинг: 0 / 0
09.12.2008, 16:31
    #35703284
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
> Автор: Kallandor
> Наверное я пока туплю.

Наверное ;)))

> Ошибка возниает при назначении входных параметров для хранимой процедуры. А именно:

Потому, что в первом посте, ошибка у тебя была указана при попытке вычитки возвращаемых результатов

>
> If Not IsNull(aParamsIn) Then
> nIn = UBound(aParamsIn, 1)
> For i = 0 To nIn
> ' вот тут
> oParams.Item(CInt(aParamsIn(i, IDX_PARAM))) = aParamsIn(i, IDX_VALUE)
> Next
> End If
>
> дальше подключена библиотека Microsoft ActiveX Data Objects 2.7 Library (вот тут не понимаю с чем могут быть
> проблемы)

С тем, что в версиях Microsoft ActiveX Data Objects ниже 2.8 при попадании в параметр текстовых данных с
последовательностью символов 0x0D, 0x1C, and 0x0D будут возвращать ошибку, которую ты и получаешь

>
> параметры передаются как string. В вызываемой хранимой процедуре они определены как Varchar(4)
>
>
> входные массивы у меня редимлены. а вот oParams - наверное нет. Как его задать?

потому, что они массивы, а oParams это коллекция(объект) параметров, он или есть, или его нет, размер ты ему никак не
задашь

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.12.2008, 16:41
    #35703322
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Игорь Горбонос,

Ну, пожурил и хватит :)
с тем что в коде поставила не правильный комментарий согласна. Объект создается. Но в дебагере для данного объекта хоть и появляется плюсик, но в поле Count появляется запись "Ошибка синтаксиса или нарушение прав доступа". Это получается что объект не создался что ли?
...
Рейтинг: 0 / 0
09.12.2008, 17:08
    #35703415
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
А делать .Parameters.Refresh перед Set oParams = .Parameters кто будет?
Или руками создавать параметры, примерно так:
cmd.Parameters.Append cmd.CreateParameter(sField, typePar, , -1, val)

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.12.2008, 17:15
    #35703446
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Игорь Горбонос,

Когда я делаю .Parametrs.Refresh - ругается той же самой ошибкой
что-то мы с бейсиком сегодня друг друга не понимаем
Кстати вручную задавать параметры мне не очень хочется, так как процедура вроде бы универсальная должна быть. Вот.
...
Рейтинг: 0 / 0
09.12.2008, 17:22
    #35703468
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
> Автор: Kallandor
> Игорь Горбонос,
>
> Когда я делаю .Parametrs.Refresh - ругается той же самой ошибкой

Так может действительно не хватает прав на доступ к процедуре???

> Кстати вручную задавать параметры мне не очень хочется, так как процедура вроде бы универсальная должна быть.
> Вот.

Да кто-же мешает, очень похвальное стремление :)

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.12.2008, 17:29
    #35703487
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
Игорь Горбонос,

процедура прописана с правами для группы1 как я понимаю dbo. имеет право выполнять любую процедуру на сервере, или нет?
просматрела все еще раз. И все равно ругается (((
...
Рейтинг: 0 / 0
09.12.2008, 18:16
    #35703640
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка при вызове хп с параметрами. Помогите
> Автор: Kallandor
> Игорь Горбонос,
>
> процедура прописана с правами для группы1 как я понимаю dbo. имеет право выполнять любую процедуру на сервере,
> или нет?
> просматрела все еще раз. И все равно ругается (((


Насколько, я понимаю, то что ты датабейз_овнер, ещё не значит что на тебя не распространяются правила безопасности.
Добавь дбо в группу1 и проверь. "Ложки на самом деле нет"

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка при вызове хп с параметрами. Помогите / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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