ورود

View Full Version : طرز استفاده از Stored Procedure در VB6



kitcat_m18
چهارشنبه 13 بهمن 1389, 23:22 عصر
با سلام خدمت دوستان گرامی،:لبخندساده:

چند وقتی با بسته نرم افزاری لرد کار می کنم و به نکات جالبی در مورد دیتابیس این بسته برخوردم که برام تازگی داره!

فایل اجرایی اتوران این بسته نرم افزاری فکر کنم با دلفی کامپایل شده البته برخی از دوستان هم اشاره دارن که کار VB هست.

اما مسئله بانک اطلاعاتی این بسته هست که با پسوند DBA.lrd موجوده!
بر طبق مطالعاتی که داشتم در دیتابیس این بسته از stored procedure استفاده شده باشه البته چیز ریادی ازش نمی دونم و تقاضا دارم که طرز استفاده از stored procedure رو تو VB آموزش بدین

سوالی که دارم اینه:
چطوری می تونم محتویات این دیتا بیس رو ببینم و یا با VB بهش متصل بشم؟


با تشکر :لبخندساده:

xxxxx_xxxxx
پنج شنبه 14 بهمن 1389, 12:05 عصر
در رابطه با سؤالتون در مورد Lord اطلاعی ندارم.


تقاضا دارم که طرز استفاده از stored procedure رو تو VB آموزش بدین
اگر کار با ADO رو بلد باشید، Stored Procedures هم چیز خاصی توی VB نداره. (البته فرض می کنیم Procedure رو قبلاً توی SQL نوشته اید و حالا میخواید فراخوانیش کنید)

بعد از اینکه ADO رو گذاشتید Connect شد. باید خاصیت CommandType از شئ Command رو روی adCmdStoredProc قرار بدید.
نام Procedure رو هم به CommandText میدید.
برای پارامترهای Procedure هم باید اینطور عمل کنید:

Command.Parameters.Append ?
در قسمت علامت سؤال باید پارامتری که میخواید رو همراه با مشخصاتش ایجاد کنید. (با استفاده از متود CreateParameter).

در نهایت هم متود Execute رو اجرا کنید.

ali190
پنج شنبه 14 بهمن 1389, 17:48 عصر
سلام
ممنون از توضيحاتتون
ميشه يك مثال قرار بديد
ممنون
ياعلي

kitcat_m18
پنج شنبه 14 بهمن 1389, 20:11 عصر
با سلام،

جناب xxxxx_xxxxx (http://barnamenevis.org/member.php?46030-xxxxx_xxxxx) عزیز لطف کنین یه مقدار مقدماتی تر برای بنده توضیح بدین من تاحالا با پروسیجر ها کار نکردم ترجیحا اگه یه نمونه برام قرار بدین ممنون میشم
اگه لینکی هم در رابطه با پروسیجر و آموزش استفاده از اونها دارین ممنون میشم که قرار بدین


با تشکر:لبخندساده:

xxxxx_xxxxx
جمعه 15 بهمن 1389, 21:16 عصر
سلام،
یک مثال میزنم. آستین ها رو بالا بزنیم دست به کیبورد شیم.
یک جدول بسازیم با سه فیلد Fname و Lname و Age . این جدول رو بسازید و نامش رو Family بگذارید. Type دو فیلد اول، nvarchar باشه، سومی هم Int.

چند رکورد به جدول اضافه کنید با اسامی و سن های مختلف.

حالا میخوایم یک Stored Procedure بنویسیم که بیاد سن رو دریافت کنه و نام و فامیل رو بده.

زیرشاخه دیتابیسی که توی SQL ساختید رو باز کنید، به قسمت Stored Procedures برید. در قسمت سمت راست، راست کلیک کنید و New Stored Procedures رو کلیک کنید تا Procedure رو بنویسیم.
برای اون کاری که قراره انجام بدیم یه همچین Procedure ای باید بنویسیم:


CREATE PROCEDURE getInfo @age int
AS
SELECT Fname, Lname, Age FROM Family WHERE Age=@age
GO


توضیح اینکه، getInfo اسم Procedure ما هست. یک پارامتر داره با نام age و نوع Int. (این پارامتر الزاماً نباید همنام با فیلدتون باشه)
خب، حالا Procedure رو با نام getInfo ذخیره کنید. اگر تا اینجا همه کارها رو درست انجام داده باشید نباید خطایی دریافت کنید.

حالا میریم سراغ VB
سه تا TextBox و یک CommandButton بزارید روی فرم. (txtFname, txtLname, txtAge)

مثل همیشه ابتدا تعاریف اولیه:

Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As ADODB.Command
در رویداد Load فرم، ConnectionString رو مثل همیشه تنظیم کنید.

حالا؛ در رویداد کلیک CommandButton بنویسید:


Set cmd = New ADODB.Command
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "getInfo"
دقت کنید، getInfo اسم همون Stored Procedure ما هست.


حالا، دستور اصلی:

cmd.Parameters.Append cmd.CreateParameter("age", adInteger, adParamInput, 4, txtAge.Text)اون age که به عنوان نام پارامتر داده شده اجباری نیست. و میتونه هر چیزی باشه. حتی میتونید نامی براش در نظر نگیرید. اون نام شئ پارامتر هست.
پارامتر Size رو هم عدد 4 دادم. این Size، اندازه همون Type ای هست که گذاشتیم adInteger.
پارامتر آخر هم که مقدار ورودی پارامتر SP ما هست.(age)

حالا Command رو اجرا میکنیم:

Set rs = cmd.Execute

If Not rs.EOF Then
txtFname.Text = rs.Fields(0)
txtLname.Text = rs.Fields(1)
End If

و تمام/


برنامه رو اجرا کنید، توی TextBox مربوط به Age یک عددی که توی جدول Family وجود داره رو وارد کنید و بعد هم Command رو کلیک کنید.


این یک مثال خیلی خیلی ساده از Stored Procedure ها بود. شما میتونید پارامترهای بیشتری داشته باشید، پارامترهای ورودی و هم خروجی داشته باشید و ... که دیگه تو یک پست نمیگنجه.


عنوان تاپیک رو هم ویرایش کردم.

موفق باشید/

ali190
جمعه 15 بهمن 1389, 22:46 عصر
سلام
جناب xxxxx_xxxxx (http://barnamenevis.org/member.php?46030-xxxxx_xxxxx) عزيز ممنون از پاسختون
فكر ميكنم كار پروسيجرها مثل عبارات sql اي است (select) كه در واقع recordsource يك adodc رو بهش نسبت ميديم و ado رو باهاش فيلتر ميكنيم
ممنون ميشم اشاره بفرمائيد كه من درست متوجه شدم يا برعكس و قدرت و كارآيي پروسيجرها بيشتر از اين حرفهاست
باز هم از توضيحاتتون كمال تشكر رو دارم
ياعلي

xxxxx_xxxxx
شنبه 16 بهمن 1389, 20:27 عصر
فكر ميكنم كار پروسيجرها مثل عبارات sql اي است (select) كه در واقع recordsource يك adodc رو بهش نسبت ميديم و ado رو باهاش فيلتر ميكنيم
ممنون ميشم اشاره بفرمائيد كه من درست متوجه شدم يا برعكس و قدرت و كارآيي پروسيجرها بيشتر از اين حرفهاستفکر میکنم شما با Access به صورت حرفه ای کار می کنید. Stored Procedure ها در SQL مثل همون Query ها در Access هستند. یک روال هست که شما براش برنامه نویسی می کنید. پارامترهای ورودی خروجی داره، چندین query رو میتونیم در یک SP بنویسیم و ... .


ممنون ميشم اشاره بفرمائيد كه من درست متوجه شدم يا برعكس و قدرت و كارآيي پروسيجرها بيشتر از اين حرفهاستمزیتی که نوشتن SP ها نسبت به نوشتن دستورات SQL در خود VB داره این هست که Procedure شما از امنیت بیشتری برخوردار هست و همچنین سریعتر اجرا میشه.

موفق باشید/