PDA

View Full Version : اجرا نشدن SP در VB6



ali190
چهارشنبه 05 مرداد 1390, 19:30 عصر
با سلام و عرض خسته نباشید
من در دیتابیس SQL Server ام یک select sp ساده به شرح زیر دارم نام aaa : sp

CREATE PROCEDURE aaa
@a varchar(50)
AS
select * from table3
where a=@a
GO

حالا میخوام از طریق vb6 این sp رو اجرا و RecordCount کنم

Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As ADODB.Command
Dim strconnect As String
Public SQLQuery As String

Private Sub Command1_Click()
Set cmd = New ADODB.Command
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "aaa"
cmd.Parameters.Append cmd.CreateParameter("a", adVarChar, adParamInput, 50, Text1.Text)
Set rs = cmd.Execute
MsgBox rs.RecordCount
Set cmd.ActiveConnection = Nothing
End Sub

Private Sub Form_Load()
strconnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=milad;Data Source=."
con.Open strconnect
End Sub

ولی همش هنگام RecordCount مقدار 1- را دریافت میکنم
ممنون میشم کمکم کنید
یاعلی

ali190
پنج شنبه 06 مرداد 1390, 21:40 عصر
سلام
دوستان مشکل از sp هست یا کدهای vb؟

یوسف زالی
پنج شنبه 06 مرداد 1390, 22:52 عصر
سلام.
من خیلی VB نمی دونم.
اما SP سالمه.
شاید در VB این کد اشکال داشته باشه:
CreateParameter("a")// here
جاش a@ رو تست کنید.
اما اگر جواب نداد در روم VB حتما جواب می گیرید.

ali190
جمعه 07 مرداد 1390, 08:52 صبح
ممنون از پاسختون
a@ رو جایگزین کردم ولی باز هم 1- ر ودریافت کردم
به نظر خودم خطایی نمیبینم
در تالار vb هم مطرح کردم ولی جوابی نگرفتم
ممنون
یاعلی

m_omrani
جمعه 07 مرداد 1390, 17:26 عصر
ابتدای SP تون SET NOCOUNT ON بگذارید.

RecordCount هم در ADODB.RecordSet به این دلیل -1 می ده که کرسرتون سرور سایده (Server-Side). باید از کرسر Client-Side استفاده کنید.