Въпрос за MS SQL Server 2000 процедура

5 отговора 273 прегледа
#1

Въпрос за MS SQL Server 2000 процедура

Някой знае ли как се връщат стойности от съхранена процедура към VBA.

От VBA функция извиквам съхранена процедура която връща нещо. Как върнатата стойност да се предаде на променлива от функцията?

Ако някой знае как, моля да ми изпрати един елементарен пример. Ще бъда много благодарен.

Отговор
в отговор на Dani #2

Re: Въпрос за MS SQL Server 2000 процедура


sub example
dim rs as New AdoDB.Recordset
dim strVar as String

rs.Open "yourstoredprocedure", CurrentProject.Connecttion
strVar = rs!Value
rs.Close

end sub
'
' Your procedure :
' select Value from table
'
'


Отговор
в отговор на Dani #3

Thank you. Here is another solution as well

Hi,

Thank you for your reply. Meanwhile I found another solution using Command.

Here is a sample:

VBA client side:
'-------------------------------------------------------------
Private Function GetDestinationID(OrderID As Long) As Long
On Error GoTo GetDestinationID_Err

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command

With cmd

.ActiveConnection = CurrentProject.Connection
.CommandText = "usp_GetDestinationID"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("@intOrderID", adInteger, adParamInput, , OrderID)
.Parameters.Append .CreateParameter("@intDestinationID", adInteger, adParamOutput)
.Execute
GetDestinationID = .Parameters("@intDestinationID").Value
End With

WrapUp:


Exit_GetDestinationID:
Set cmd = Nothing
Exit Function

GetDestinationID_Err:
Call LogMsgError(Err.Description, Err.Number, ModuleName$, "GetDestinationID")
Resume Exit_GetDestinationID
End Function

'-----------------------------------------------------
T-SQL server side:

CREATE PROCEDURE dbo.usp_GetDestinationID

(
@intOrderID int,
@intDestinationID int=0 OUTPUT
)

AS

SET NOCOUNT ON

BEGIN

SELECT @intDestinationID=lv.DestinationID
FROM dbo.[Land Voyages] AS lv INNER JOIN dbo.[Pickup Booking List] AS pbl
ON lv.LandVoyageID=pbl.LandVoyageID
WHERE pbl.OrderID = @intOrderID

END
GO
'------------------------------------

Regards

Dani


Отговор
в отговор на planik #4

За общи приказки всики дава акъл.

За общи приказки всеки дава акъл и се пише разбирач, а като стане въпрос някой да зададе конкретен въпрос никой не се обажда.

Дайте конкретен работещ пример за използване на Recordset за обръщане към съхранена процедура при която да се връщат стойности.

Вече разбрах как става с Command. Мога да придавам и стойности чрез Connection а, с Recordset някой знае ли дали може.

Отговор
в отговор на Dani #5

Re: За общи приказки всики дава акъл.

tezi klubowe sa za dawane na syweti i pomo6t taka 4e da nau4i6 ne6to. Towa ne e mqsto kydeto idwa6 i kazwa6 'daite mi primeren kod za towa i towa'. Ako pita6 kak se prawi, ima hora koito da ti obqsnqt, ako iska6 konkreten kod, malko hora sa meraklii da sednat da ti go napi6at...

Отговор
в отговор на fiffy #6

Re:Не искам конкретен код

Не искам конкретен код. Искам какъвто и да е кратък код който да показва по принцип как се използва Recordset за обръщане към съхранена процедура която да връща стойност.

Пак повтарям че с Command мога да го направя, но ми е интересно дали може с Recordset.

Отговор