Назначьте хранимую процедуру для report.recordset в Microsoft Access - PullRequest
0 голосов
/ 28 мая 2020

Я слышал, что вы можете сделать это только с помощью adp, я подключаюсь напрямую к SQL серверу и хочу назначить хранимую процедуру записи, и я получаю сообщение об ошибке, которое можно сделать только в файле adp ?

Я не связан с SQL сервером, я подключаюсь к нему напрямую с драйвером ODB C.

Есть ли способ назначить эту хранимую процедуру отчету?

Спасибо ..

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Все, что вам нужно сделать, это создать запрос в Access, но пометить его (изменить) как запрос pass-thougthh.

Итак, запрос pt может быть

Exec MyStoredProcedure

Сохраните запрос. Теперь просто используйте этот запрос как источник для отчета. Вам действительно не нужно писать здесь код. Теперь, конечно, если вам нужно передать значение или какой-то параметр?

Ну, тогда вы можете использовать этот код:

Предположим, что хранимая процедура возвращает данные для данного номера счета-фактуры .

Итак, ваш код будет выглядеть так:

dim strInvoiceNumber   as string
strInvoiceNumber = InputBox("Enter invoice number")

currentdb.QueryDefs("MyPass").sql = "EXEC StorProc " & strInvoiceNumber

' code here follows to open report
 docmd.OpenReport "MyInoice",acViewPreview

Итак, вы можете создать сквозной запрос и ввести в него любой exe c или команду, которая запустить / вызвать хранимую процедуру. И, как уже отмечалось, если параметры отсутствуют, вам вообще не нужно писать код - просто создайте сквозной запрос и используйте его в качестве источника для отчета.

0 голосов
/ 28 мая 2020

Должно работать при правильном подключении в любых accdb / accde. Попробуйте выполнить следующее, чтобы проверить, сможете ли вы подключиться, используя fittin strconnADO. После этого вы можете назначить локальную первую очередь отчету или сформировать et c.

Public Function fctGetData(intReportNummer As Integer) As Boolean




Dim cnn As New adodb.Connection
Dim cmd As New adodb.Command
Dim rst As New adodb.Recordset   'PDO: Enthält die Empfaenger, die abzuarbeiten sind.






'PDO: Start
cnn.Open strconnADO
cmd.ActiveConnection = cnn
cmd.CommandTimeout = 180


cmd.CommandText = "dbo.q_YOUR_QUERY_sp"
cmd.CommandType = adCmdStoredProc
'cmd.CommandType = adCmdText   ' PDO: Version for PassThrough, use a SQL-Statement for CommandText


cmd.Parameters.Append cmd.CreateParameter("@Return_Value", adInteger, adParamReturnValue)
cmd.Parameters.Append cmd.CreateParameter("@Report_Nummer", adSmallInt, , , intReportNummer)


rst.CursorType = adOpenStatic
rst.CursorLocation = adUseClient
rst.LockType = adLockReadOnly



Set rst = cmd.Execute()

If Err.Number <> 0 Then

    ' Do something

        GoTo Err_Handler
End If

If cmd.Parameters("@Return_Value") <> 0 Then

    ' Do something

        GoTo Err_Handler
End If

DoEvents



'PDO: Work with your recordset

If rst.EOF Then


    ' Do something

    GoTo Err_Handler
End If




        Do While Not rst.EOF

                ' Do something

        Loop '






'Cleanup


Err_Handler:
On Error Resume Next


rst.Close

Set rst = Nothing


Set cmd = Nothing
cnn.Close
Set cnn = Nothing




End Function
...