ايران ويج

نسخه‌ی کامل: استفاده از اشیاء ADO و DataGrid برای کار با پایگاه داده ها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
استفاده از اشیاء ADO و DataGrid برای کار با پایگاه داده ها (خلاصه)


مهمترین مبحث در برنامه نویسی، پایگاه داده هاست. به بررسی تازیخچه پایگاه داده ها نمیپردازیم چون خارج از بحث ماست. اگه با نرم افزار Microsoft Access کار کرده باشید بهتر میتونید مطلب رو بگیرید. خیلی ها کار کردن با پایگاه داده ها و بلدن امّا از شئ Data که اصلاً قابل قیاس با ADO نیست استفاده میکنند. به طور کلّی بهترین انتخاب برای کار با پایگاه داده ها، استفاده از شئ ADO است که مورد تایید و توصیّه شرکت Microsoft است. توصیّه ما هم استفاده از شئ ADO است. امّا شئ DataGrid رو میتونیم مهمترین شئ بعد از ADO بدونیم، چون تقریباً شئ DataGrid هست که تونسته کاری کنه که شئ ADO مورد استفاد عموم قرار بگیره. یعنی اگر شئ DataGrid نبود، شاید شئ ADO هم مورد استقبال زیادی قرار نمیگرفت.


شئ ADO قابلیّت انعطاف پذیری خیلی زیادی داره به طوریکه میتونه با تمام پایگاه داده ها و با Engine های مختلف کار کنه و از دستورات متنوعی برخورداره. اگر هدف شما کار با پایگاه داده های Access باشه میتونید این آموزش رو تا تهش بخونید و دیگه از نظر پایگاه داده ها مشکلی نداشته باشید. من برای آموزش هر چه بهتر شما و خسته نشدن شما از این آموزش براتون آموزش ساختن یک دفتر تلفن ساده امّا بسیار فدرتمند رو شروع میکنم (خودتون میفهمید چرا گفتم قدرتمند). ممکنه کمی خسته کننده به نظر برسه امّا اگه واقعاً قصد یادگیری دارید تا آخر بخونید.


بریم سره آموزش:


یک پروژه جدید باز کنید و از منوی Project گزینه Components... رو انتخاب کنید و گزینه های Microsoft ADO Data Control 6.0 (OLEDB) و Microsoft DataGrid Control 6.0 (OLEDB) رو علامت بزیند و کلید OK زو بزینید تا به ToolBox اضافه بشن و بعد هر دوتاشون رو به فرمتون اضافه کنید. در این مرحله شما باید یک پایگاه داده هاتون رو به شئ ADO ربط بدین برای اینکار ابتدا روی شئ ADO راست کلیک کنید و گزینه ADODC Properties رو انتخاب کنید، در کادری که باز میشه (Property Pages) گزینه Use Connection String رو انتخاب و روی Build... کلیک کنید، پنجره دیگه ای باز میشه (Data Link Properties)، در اون پنجره باید گزینه Microsoft Jet 4.0 OLE DB Provider رو انتخاب و کلیک Next رو بزنید تا وارد مرحله بعدی بشید. در این مرحله باید آدرس یک پایگاه داده ها رو تعیین کنید. به مسیری که ویژوال بیسیک رو نصب کردید برید و فایل NWIND.mdb و انتخاب کنید و کلید Open رو بزینید، حالا در پایین کادر یک کلید به نام Test Connection وحود داره، روی اون کلیک کنیدتا بفهمید عملیات تا اینجا موفقیّت آمیز بوده یا نه. اگه پیغام Test Connection Succeeded به نمایش در اومد یعنی همه چیز درسته؛ روی OK کلیک کنید و دوباره OK رو بزنید تا زمانیکه تمام کادرهای باز، بسته بشن. حالا دوباره روی ADO راست کلیک کنید و گزینه آخر رو انتخاب کنید و در کاردی که ظاهر شده، برگه سوّم یعنی RecordSource و انتخاب کنید و در قسمت Command Type روی ComboBox کلیک کنید و گزینه 2 – adCmdTable رو انتخاب کنید که با اینکار ComboBox پایینش فعّال میشه و باید در اون قسمت جدول Customers رو انتخاب کنید و کلید OK رو بزنید تا همه چیز تموم بشه، تنها کاری که باید بکنید ربط دادن شئ DataGrid به شئ ADO ست که خیلی آسونه.


روی شئ DataGrid کلیک کنید و در جعبه Properties (سمت راست) گزینه DataSource رو پیدا کنید و روش کلیک کنید،باید به طور خودکار گزینه Adodc1 آشکار بشه، روش کلیک کنید تا انتخاب بشه حالا دوباره روی شئ DataGrid راست کلیک کنید و گزینه Retrieve Fields رو بزنید تا شئ DataGrid به طور خودکار خودش رو با جدول Custumers تطبیق بده. حالا برنامه رو اجرا کنید، امّا هنوز کامل نشده، بعضی از فیلدها اضافی هستن مثل فیلد CustomerID. برای حذف فیلدهای اضافی روی DataGrid راست کلیک کنید و گزینه Edit رو انتخاب کنید و فیلدهای CustomerID ، ContactName ، ContactTitle ، Region و PostalCode رو حذف کنید (راست کلیک روی فیلد و انتخاب گزینه Delete) و بعد یک جای خالیه فرم کلیک کنید تا تغییرات اعمال بشه. حالا دوباه برنامه رو اجرا کنید.


تا اینجا ممکنه کمی خسته کننده بوده باشه امّا از اینجا به بعد دیگه مثل آب خوردنه.


فرمتون رو کمی بزرگتر کنید و یک TextBox و یک Command Button تو فرمتون بذارید Caption شئ Command Button و بذارید "Search" و شئ ADO رو مخفی کنید (Visible = False) و کد زیر رو در قسمت جنرال فرمتون وارد کنید :


Private Sub Command1_Click()


Adodc1.Recordset.fliter = "Country = '" & Text1.Text & "'"


End Sub


این کد باعث میشه اونایی که در کشور خاصی قرار دارن به نمایش در بیان. برنامه رو اجا کنید و درون TextBox تایپ کنید "UK" و کلیک Search رو بزنید، میبینید که فقط اونهایی به نمایش در اومدن که کشورشون UK هست. شکل کلّی دستور fliter به صورت زیره :


.fliter = " نام فیلد = ' مقدار' "


میتونید به جای علامت = از هر یک از علامتهای = ، > ، < ، >= ، <= ، <> و یا کلیدواژه Like استفاده کنید. کلید واژه Like تمام مقدارهای شبیه به مقدار داده شده رو برمیگردونه. مثلاً دستور زیر تمام رکوردهایی رو که عدد اوّل فیلد Phone شون عدد 0 باشه رو نمایش میده :


Adodc1.Recordset.fliter = " Phone Like '0*' "


اون علامت ستاره یعنی اینکه بعد از عدد صفر هر چیزی میتونه باشه ولی داشتن عدد صفر در اوّل الزامیه. کد زیر تمام رکوردهایی رو که تو شماره تلفن شون عدد 10 وجود داره رو نمایش میده :


Adodc1.Recordset.fliter = " Phone Like '*10*' "


استفاده از دستور fliter خیلی ساده و در عین حال خیلی کاربردیه (بهتر از دستور Find).


خب برای افزودن یک رکورد جدید میتونید از امکانات خود شئ DataGrid استفاده کنید. روی DataGrid کلیک کنید و در قسمت Properties گزینه های AllowAddNew ، AllowDelete و AllowUpdate رو True قرار بدید. با اینکار امکان افزودن رکورد جدید، پاک کردن یک رکورد و Update کردن کوردها به شما داده میشه.


توجّه : شئ DataGrid با پایگاه داده ها ارتباط مستقیم نداره بلکه ارتباط اون به واسطه شئ ADO برقرار میشه و این شئ ADO است که رکوردها رو اضافه، حذف و یا به روز میکنه. در واقع شئ DataGrid دستور کار رو به ADO میده و ADO کارو انجام مبده.


شما میتونید خودتون با برنامه نویسی رکوردی رو اضافه،حذف و یا به روز کنید. دستور اضافه کردن رکورد به صورت زیره :


Adodc1.Recordset.AddNew


Adodc1.Recordset.Fields("Phone") = 1234567


Adodc1.Recordset.Update


در خطّ اوّل یک رکود خالی آماده میشه و در خطّ دوّم فیلد Phone با مقدار 1234567 مقدار دهی میشه و در خطّ سوّم هم رکورد به روز میشه در واقع خطّ اول و خطّ آخر الزامیه. امّا اگر از این دستور استفاده کنید با یک پیغام خطا مواجه میشید یک میگه فلان فیلد نمیتونه مقدار Null بگیره؛ خب چون شما فیلدهای دیگه رو مقدار دهی نکردید این مشکل پیش میاد، شما میتونید از کد زیر استفاده کنید :


Adodc1.Recordset.AddNew


Adodc1.Recordset.Fields("Phone") = "1234567"


Adodc1.Recordset.Fields("Fax") = "7654321"


Adodc1.Recordset.Fields("Address") = "My Address"


Adodc1.Recordset.Fields("City") = "Mashhad"


Adodc1.Recordset.Fields("Country") = "Iran"


Adodc1.Recordset.Fields("CompanyName") = "TopNotch Soft (T.N.S)"


.


.


.


Adodc1.Recordset.Update


در طول یادگیری و استفاده از پایگاه داده ها بهتر با کدها آشنا میشید و میتونید باهاشون کار کنید. ولی توصیّه من به شما استفاده از همون شئ DataGrid است که به همین منظور ساخته شد
البته این آموزش رو من از یکی از انجمن های سایت سناتور اره گذاشتم...

گفتم که نگن کپی رایت و اجرا نکردی :d
این لینک هم میتونه کمک کنه به کسایی که دنبال اموزش پایگاه داده هستن

http://www.charshakh.com/showthread.php?tid=2608
(۲۷-اردیبهشت-۱۳۸۷, ۱۵:۲۰:۲۵)EleRam نوشته است: [ -> ]البته این آموزش رو من از یکی از انجمن های سایت سناتور اره گذاشتم...

گفتم که نگن کپی رایت و اجرا نکردی :d

لطفا بفرمائيد اگر بخواهيم عدد10 را ويا uk را از طريق textboxبه خط دستور زير وارد كنيم بايد آنرا چگونه بنويسيم
Adodc1.Recordset.fliter = " Phone Like '*10*'"
من هرچقدر ميخواهم از كليد واژه like بجاي = استفاده كنم موفق نميشوم لطفا بايك مثال مرا ياري فرمائيد