Вызов функции из хп.

Igemon
Дата: 10.09.2005 20:44:47
Здравствуйте.
Проблема.
Имеется запрос:
PARAMETERS [number] Text ( 255 );
INSERT INTO test ( номер )
VALUES (GenAcc([number]));

Нормально работает. Но, если вызвать его из екселя вот так:
Sub test()

Const Provider = "Provider = Microsoft.Jet.OLEDB.4.0;"
Const DataSource = "Data Source=C:\dbx.mdb"
Dim Catalog As New ADOX.Catalog
Dim RS As ADODB.Recordset
Dim Command As ADODB.Command

On Error GoTo Finally

Call Connection.Open(Provider & DataSource)
Set Catalog.ActiveConnection = Connection
Set Command = Catalog.Procedures("test1").Command
Command.Parameters("[number]").Value = "88"
Command.Execute

Connection.Close
Finally:
If Err.Number <> 0 Then
MsgBox (Err.Description)
End If
Set RS = Nothing
Set Connection = Nothing
End Sub

test1-имя процедуры

Вылезает сообщение:
Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру.

Если убрать из запроса вызов функции - работает. Но мне надо держать функцию именно в базе.

Где грабли?
Спасибо.
nibbles
Дата: 11.09.2005 00:09:07
Запускай ХП через DAO. Функция GenAcc вываливается за рамки того, что известно о СУБД-поставщике ADO. А у DAO более тесное взаимодействие с JET, она знает, как обрабатывать функции на VBA.
Еще как вариант - запускать Access в виде сервера автоматизации из твоего Excel - но это коряво
nibbles
Дата: 12.09.2005 09:28:02
получилось, нет?
Iskander68
Дата: 12.09.2005 12:26:44

Проверил твою процедуру. Из Аксесса не сработала. Не инициализирована
переменная Connection. Разве не нужно Set Connection = New
ADODB.Connection?

--
Regards
Alexander Artamonov


"Igemon" <nospam@sql.ru> сообщил/сообщила в новостях следующее:
news:1866201@sql.ru...
Здравствуйте.
Проблема.
Имеется запрос:
PARAMETERS [number] Text ( 255 );
INSERT INTO test ( номер )
VALUES (GenAcc([number]));


Нормально работает. Но, если вызвать его из екселя вот так:
Sub test()

Const Provider = "Provider = Microsoft.Jet.OLEDB.4.0;"
Const DataSource = "Data Source=C:\dbx.mdb"
Dim Catalog As New ADOX.Catalog
Dim RS As ADODB.Recordset
Dim Command As ADODB.Command

On Error GoTo Finally

Call Connection.Open(Provider & DataSource)
Set Catalog.ActiveConnection = Connection
Set Command = Catalog.Procedures("test1").Command
Command.Parameters("[number]").Value = "88"
Command.Execute

Connection.Close
Finally:
If Err.Number <> 0 Then
MsgBox (Err.Description)
End If
Set RS = Nothing
Set Connection = Nothing
End Sub


test1-имя процедуры

Вылезает сообщение:
Не удается найти объект в семействе, соответствующий требуемому имени или
порядковому номеру.

Если убрать из запроса вызов функции - работает. Но мне надо держать
функцию именно в базе.

Где грабли?
Спасибо.
Тема Ответить

Posted via ActualForum NNTP Server 1.3

Igemon
Дата: 12.09.2005 18:22:55
Нет, решения пока нет, просто руки до этой проблемы пока не дошли.

"Работает из Акцесс",

я имел ввиду, что если запустить этот запрос вручную, кнопками "Запрос" "Запуск".
То он нормально срабатывает, запросив требуемые параметры.

Поэтому

Set Connection = New
ADODB.Connection?

не нужно в данном случае.
Я ж из Екселя подключаюсь.
Iskander68
Дата: 14.09.2005 10:30:47

Не улавливаю связь:
"Запускаю запрос вручную - нормально срабатывает ==> Set Connection = New
ADODB.Connection не нужно в данном случае". Видимо мысль слишком
сконцентрирована. Я из Экселя и пробовал - не работает твой код.

--
Regards
Alexander Artamonov


"Igemon" <nospam@sql.ru> сообщил/сообщила в новостях следующее:
news:1870156@sql.ru...
Нет, решения пока нет, просто руки до этой проблемы пока не дошли.

"Работает из Акцесс",

я имел ввиду, что если запустить этот запрос вручную, кнопками "Запрос"
"Запуск".
То он нормально срабатывает, запросив требуемые параметры.

Поэтому

Set Connection = New
ADODB.Connection?


не нужно в данном случае.
Я ж из Екселя подключаюсь.
Тема Ответить

Posted via ActualForum NNTP Server 1.3