PDA

View Full Version : سوال: اجرای store procedure از طریق vba در اکسس



IMANAZADI
پنج شنبه 25 تیر 1394, 19:18 عصر
با سلام
لطفا یکی کامل توضیح بده چطوری میشه یک store procedure روی sql که شامل پارامتر هم می باشد رو با کد vba در اکسس اجرا کرد ؟
ممنون میشم

IMANAZADI
شنبه 27 تیر 1394, 11:54 صبح
دوستان کسی جواب این سوال رو نمیدونه :گریه::متعجب::افسرده::متفکر:

mhamedm2008
شنبه 27 تیر 1394, 23:22 عصر
login
cmd.CommandText = "sp_name"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = Cnxn

cmd.Parameters.Append cmd.CreateParameter("AutoNumber", adInteger, adParamInput, 10, [AutoNumber])
cmd.Parameters.Append cmd.CreateParameter("group_id", adInteger, adParamInput, 10, [group_id])
cmd.Parameters.Append cmd.CreateParameter("exp_erja", adVarChar, adParamInput, 255, [exp_erja])
cmd.Execute
MsgBox "ok"
Set cmd = Nothing

logout

تابع login و logout هم مربوط به باز و بسته کردن کانشکن sql می باشد

IMANAZADI
یک شنبه 28 تیر 1394, 06:40 صبح
دوست گرامی ممنون ولی میشه لطفا بیشتر توضیح بدی
کانکشن رو چی تعریف کنم
دستور cmd رو با چه فعال کنم

mhamedm2008
یک شنبه 28 تیر 1394, 14:28 عصر
این ها را میتونی توی یک تابع عمومی تعریف کنی

Public Cnxn As New ADODB.Connection
Public cmd As New ADODB.Command

Public Function login()

strCnxn = "Provider='SQLOLEDB';Data Source='192.168.100.100';" & _
"Initial Catalog='DatabaseName';User ID='YourID';Password='Password';"
Cnxn.Open strCnxn
rst.CursorLocation = adUseClient
End Function

Public Function logout()
If rst.state = adStateOpen Then
rst.Close
End If
Cnxn.Close
Set cmd = Nothing
End Function

IMANAZADI
یک شنبه 28 تیر 1394, 16:34 عصر
در تکمیل پست دوست عزیز mhamedm2008 (http://barnamenevis.org/member.php?196140-mhamedm2008)






Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset


cnn.ConnectionString = "Provider=sqloledb;Data Source=serverAddress;Initial Catalog=dataBaseName;User Id=usr;Password=psw;"
cnn.Open

cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "xxx"
cmd.Parameters.Append cmd.CreateParameter("@p2", adVarChar, adParamInput, 20, "44")
cmd.Parameters.Append cmd.CreateParameter("@p3", adInteger, adParamOutput)





Set rst = cmd.Execute

مقدار بازگشتی پس از اجرای پروسیجر(روشهای مختلف)

MsgBox cmd.Parameters(1).Value
MsgBox cmd.Parameters("@p3")
MsgBox cmd("@p3").Value

cnn.Close





اینم خود store procedure



ALTER PROCEDURE [dbo].[xxx]




@p2 nvarchar(20) = '48',
@p3 int output
AS
BEGIN


select @p3=count(aa) from dd where aa=@p2



END