برنامه نويسي ديتابيس درVisual Basic .NET 2005

در اين بخش مي‌توانيد در مباحث مربوط به زبان هاي برنامه نويسي تحت دات نت به بحث بپردازيد

مدیران انجمن: abbas.m.k, athlon64x2, شوراي نظارت

ارسال پست
Super Moderator
Super Moderator
نمایه کاربر
پست: 1166
تاریخ عضویت: سه‌شنبه ۳ مرداد ۱۳۸۵, ۱۱:۴۹ ق.ظ
سپاس‌های ارسالی: 946 بار
سپاس‌های دریافتی: 2887 بار

برنامه نويسي ديتابيس درVisual Basic .NET 2005

پست توسط SHAHRAM »

 

اشاره :
با آمدن Visual Studio 2005 به عرصه برنامه‌نويسي بسياري از اعمال روتين برنامه‌نويسي مانند کار با بانک‌هاي اطلاعاتي ساده و آسان‌تر از پيش گشته است.

[url=<A]<A[/url]
 


   ‌:
در يک نگاه اجمالي از نظر رابط کاربري و قابليت‌هاي کاربردي Visual Studio در نسخه 2005 خود تحول زيادي داشته و در همين راستا تعداد زيادي از کنترل‌هاي جديد مربوط به بانک اطلاعاتي به اين نرم‌افزار اضافه شده است. البته با توجه تجاربي که در استفاده از اين ابزار‌هاي جديد داشته‌ايم به نظر مي‌رسد اين کنترل‌ها و ابزار‌هاي جديد در قسمتWindows Application به نسبت Web Application‌ها ، بسيار پخته‌تر و کامل‌تر مي‌باشد.

آغاز پروژه
در اين مقاله سعي بر آن داريم با کنترل جديد و بسيار قدرتمند GridView و همچنين قسمت Dataset Designer آشنا شويم و برنامه‌اي ساده براي استفاده از اين ابزار‌ها به زبان Visual Basic بنويسيم. البته از آنجايي که اکثر مراحل نوشتن برنامه به کمکDesigner ويژوال استوديو انجام مي‌شود برنامه نويسان C# نيز مي‌توانند به خوبي از اين مقاله بهره‌مند شوند.
از آنجايي که اين مقاله به صورت گام به گام مي‌باشد،براي استفاده از اين مقاله نياز به يک آشنايي بسيار اندک از مفاهيم بانک اطلاعاتي داريد .
نرم افزار‌هاي مورد نياز که بايد روي سيستم نصب شده باشند:
 
 
   Microsoft SQL Server 2000
Microsoft Visual Studio.NET 2005
    
 
پيش از اينکه وارد بحث نوشتن برنامه شويم براي کساني‌ که به DataGrid در Visual Studio 2003 کار کرده‌اند چند نمونه از مزيت‌هاي جديد و جالب GridView را بررسي مي‌کنيم:
[FONT=Wingdings][COLOR=#NaNNaNNaN]l   قابليت نمايش تصاوير : با استفاده از اين امکان برنامه نويسان مي‌توانند براحتي تصاويري که در بانک اطلاعاتي به فرمت‌هاي مختلف ذخيره کرده‌اند بدون هيچ دردسري درون GridView نمايش دهند.  
  [FONT=Wingdings][COLOR=#NaNNaNNaN]   قابليت‌هاي AutoSize : با استفاده از اين قابليت‌ها بر خلاف DataGrid براحتي مي‌توانيد عرض و ارتفاع سلول‌هاي نمايش اطلاعات را به صورت اتوماتيک در حين اجرا برنامه تنظيم نماييد و ديگر نگران مخفي ماندن اطلاعات نباشيد.    
  [FONT=Wingdings][COLOR=#NaNNaNNaN]   امکان نمايش انواع کنترل‌ها درون سلول‌هاي GridView :با استفاده از اين امکان شما مي‌توانيد انواع کنترل‌هاي مورد نيز را درون GridView نمايش دهيد، که ليست آنها عبارت است از:
Button ، Image ، CheckBox ، ComboBox ، TextBox و Link Button .
[FONT=Wingdings][COLOR=#NaNNaNNaN]l   قابليت استفاده از Foreign Key : اين امکان بسيار مفيد به شما اجازه مي‌دهد به راحتي مقدار يک فيلد که به جدول ديگري Foreign Key دارد را به صورت ComboBox نمايش دهيد و کاربر به راحتي مقدار مربوط به فيلد را از ليست انتخاب نماييد(در برنامه نمونه کامل توضيح داده خواهد شد).
[FONT=Wingdings][COLOR=#NaNNaNNaN]l   قابليت Double Click Editing : يکي از مشکلاتي کهDataGrid داشت اين بود که وقتي براي آن منوي ضميمه( Context Menu ) تعريف مي‌کرديم در فيلد‌ها متني با منوي پيش فرض Textbox‌ها تداخل پيدا مي‌کرد و معمولا منوي ضميمه‌اي که ما تعيين مي‌کرديم نمايش داده نمي‌شد ولي در GridView به خاطر وجود اين خاصيت ديگر مشکل منوي ضميمه نخواهيم داشت.    
  [FONT=Wingdings][COLOR=#NaNNaNNaN]   حذف Table Style‌ها : ديگر براي فرمت بندي GridView نيازي به Table Style نداريم بلکه حذف و اضافه کردن ستون‌ها و تغيير عنوان‌ها به راحتي و دروني در حالت Design Time امکان پذير است.
البته امکانات ديگري نيز اضافه گرديده که مهمترين آنها ، همين مواردي بود كه اشاره شد.
اکنون به سراغ نوشتن برنامه برويم.

مراحل انجام پروژه:
طراحي بانک اطلاعاتي در MS SQL Server 2000.
ساخت Dataset در Dataset Designer مربوط به بانک اطلاعاتي.
تنظيم GridView براي نمايش و ويرايش اطلاعات درون بانک.    
    بانک اطلاعاتي در MS SQL Server 2000
کساني که مقاله برنامه‌نويسي بانک اطلاعاتي در VB.Net را در شماره‌هاي دو سال گذشته خوانده‌اند با اين قسمت آشنا هستند ولي کساني که جديدا به خواننده‌هاي ماهناهه پيوسته‌اند يا طريقه ساخت بانک اطلاعاتي در MS SQL Server 2000 را تاکنون ياد نگرفته اند حتما اين قسمت را مطالعه فرماييد.

قدم اول:
در اين قدم ما بايد ساختار جداول داده‌اي مورد نظر را طراحي کنيم. با توجه به خواسته‌هايي که ما از پروژه داريم يک جدول با ساختار زير براي ذخيره سازي داده‌ها مورد نياز است:
 
 تصویر
جدول 1 : اطلاعات تماس‌ها

تصویر
جدول 2 : نگهداري ليست گروه‌هاي موضوعي

  تصویر
جدول 3 : نگهداري ليست  

 قدم دوم :
خب اکنون که طرح جدول داده‌اي مشخص شد به سراغ مرحله ساخت جدول ، بانک اطلاعاتي و کاربر مربوط به بانک مي‌رويم.براي اين کار شما بايد نسخه سرور
SQL Server 2000 را نصب کرده باشيد و از RUN بودن آن اطمينان حاصل کنيد براي اين کار در گوشه سمت چپ پايين بايد آيکون آن به شکل 1 باشد :
 
   تصویر
شکل 1  
   از مسير زير Enterprise Manager را اجرا کنيد:
     > Program Files > Microsoft SQL Server > Enterprise Manager
 
     سمت چپ را باز کنيد مطابق شکل 2 سرور local (يا شايد نام کامپيوترتان) را انتخاب کنيد:
  
  تصویر
شکل 2
  
   نوار ابزار دکمه Run a Wizard را بزنيد(مطابق شکل 3) :
  
  تصویر
شکل 3  
   زدن دکمه فوق ويزارد زير اجرا مي‌شود از آنجا مطابق شکل 4 گزينه
Create Database Wizard را انتخاب کنيد و دکمه OK را براي شروع ساخت بانک اطلاعاتي فشار دهيد:
  
  تصویر
شکل 4  
   زدن اين دکمه يک پنجره ظاهر مي‌شود از آنجا دکمه Next را کليک کنيد تا پنجره شکل 5 ظاهر شود :
  
  تصویر
شکل 5
  
   فيلد Database Name مطابق شکل فوق نام بانک اطلاعاتي را PhoneBook وارد کنيد. دکمه Next رابزنيد و مراحل بعد را مطابق تنظيمات پيش‌فرض رها کنيد و مرتب دکمه Next را انتخاب کنيد و در آخر دکمه Finish را بزنيد که در اين صورت پيغامي ‌مبني بر اينکه Database شما با موفقيت ساخته شد نشان داده مي‌شود. OK را بزنيد، پس از آن، از شما پرسيده مي‌شود که آيا مي‌خواهيد Maintenance Plan را براي بانک اطلاعاتي خود تنظيم کنيد ( منظور تنظيمات مربوط به گرفتن نسخه پشتيبان و ساير امور مربوط به نگهداري بانک اطلاعاتي مي‌باشد ) دکمه No را انتخاب کنيد .
اکنون با نک اطلاعاتي شما ساخته شده است !
مطابق شکل 6 از Treeview سمت چپ، قسمت Tables مربوط به بانک اطلاعاتي PhoneBook را انتخاب کنيد :
  
  تصویر
شکل 6  
   Tables مربوط به بانک اطلاعاتي خود کليک راست کرده و گزينه New Table را انتخاب کنيد در پنجره ظاهر شده مطابق شکل 7 تمامي‌فيلد‌ها را پر کنيد :
  
  تصویر
شکل 7  
  تكته :   غير از فيلد UID که به عنوان کليد اصلي جدول (براي ثبت يک فيلد به عنوان کليد اصلي روي آن کليک راست کرده و از منوي زمينه گزينه Set as Primary Key را انتخاب نماييد) در نظر گرفته‌ايم و بايد گزينه Identity را به Yes تغيير دهيم( مطابق شکل 7 ) براي ساير فيلد‌ها تنظيم خاصي لازم ندارد و فقط با دقت مطابق شکل فوق فيلد‌ها ي مربوطه را پر کنيد .

اکنون از نوار ابزار روي دکمه Save کليک کنيد در پنجره ظاهر شده ، نام جدول را Contact وارد و دکمه OK را کليک کنيد .
پس از ساخت جدول Contact نوبت به جدول Groups مي‌رسد.
روي Tables مربوط به بانک اطلاعاتي خود کليک راست کرده (شکل 6) و گزينه
New Table را انتخاب کنيد.
در پنجره ظاهر شده مطابق شکل 8 تمامي‌فيلد‌ها را پر کنيد.
  
  تصویر
شکل 8
  
  نكته :   غير از فيلد GroupID که به عنوان کليد اصلي جدول در نظر گرفته‌ايم و بايد گزينه Identity را به Yes تغيير دهيم ( مطابق شکل 8 ) براي ساير فيلد‌ها تنظيم خاصي لازم ندارد و فقط با دقت مطابق شکل فوق فيلد‌هاي مربوطه را پر کنيد .

اکنون از نوار ابزار روي دکمه Save کليک کنيد در پنجره ظاهر شده نام جدول را Groups وارد کنيد و دکمه OK را کليک کنيد .
پس از ساخت جدول Groups نوبت به جدول City مي‌رسد.
روي Tables مربوط به بانک اطلاعاتي خود کليک راست کرده (شکل 6) و گزينه
New Table را انتخاب کنيد.
در پنجره ظاهر شده مطابق شکل 9 تمامي‌فيلد‌ها را پر کنيد.
  
  تصویر
شکل 9  
  نكته :   غير از فيلد CityID که به عنوان کليد اصلي جدول در نظر گرفته‌ايم و با يد گزينه Identity را به Yes تغيير دهيم( مطابق شکل 9 ) براي ساير فيلد‌ها تنظيم خاصي لازم ندارد و فقط با دقت مطابق شکل فوق فيلد‌هاي مربوطه را پر کنيد .

اکنون از نوار ابزار روي دکمه Save کليک کنيد در پنجره ظاهر شده نام جدول را City وارد کنيد و دکمه OK را کليک کنيد.
جداول مورد نظر را ساختيم !   
    ارتباط كاربر با بانك اطلاعاتي
اکنون بايد يک کاربر براي ارتباط با بانک اطلاعاتي به SQL Server معرفي کنيم .
براي اينکار دوباره روي دکمه Run a Wizard از نوار ابزار کليک کنيد از پنجره ظاهر شده گزينه Create Login Wizard را انتخاب کنيد از پنجره ظاهر شده دکمه Next را انتخاب کنيد تا پنجره شکل 10 ظاهر شود :
 
 
 تصویر
شکل10
 
  SQL Server Login را مطابق شکل فوق انتخاب کرده دکمه Next را بزنيد در مرحله بعد از شما نام کاربري و کلمه عبور پرسيده مي‌شود شما کلمه عبور و نام کاربري را iran وارد کنيد (iran را فراموش نکنيد! چون بعد‌ها خيلي به اون نياز داريم ) و دکمه Next را کليک کنيد در پنجره بعدي گزينه System Administrators را تيک بزنيد و دکمه Next را انتخاب کرده در پنجره بعد گزينه PhoneBook را تيک بزنيد. روي دکمه Next کليک کرده و در پنجره بعد دکمه Finish را براي اتمام کار کليک کنيد.  
   کاربر مورد نظر به ليست کاربران بانک افزوده شد ولي به صور ت پيش‌فرض حقوق چنداني براي دسترسي با بانک PhoneBook ندارد براي اعطاي اين حقوق مراحل زير را ادامه دهيد :
از TreeView سمت چپ مطابق شکل 11 گزينه Users بانک اطلاعاتي PhoneBook را انتخا ب کنيد و پس از آن روي کاربر IRAN در ليست سمت راست ، Double Click کنيد و در پنجره ظاهر شده گزينه db_owner را تيک بزنيد و OK را انتخاب کنيد.
 

 تصویر
شکل 11
 
  کاربر ما حق هر گونه کاري را بروي بانک PhoneBook دارد .  
   ايجاد ارتباط بين جداول
اکنون نوبت به ايجاد ارتباط بين جداول رسيده است .
يک از مهمترين قسمت‌هاي طراحي بانک اطلاعاتي پس از نرمال‌سازي ، قسمت ايجاد ارتباطات (Relationships) مي‌باشد که توسط آن مي‌توانيم يکپارچگي
(Integrity)بانک اطلاعاتي را تثبيت کنيم.
مفهوم Integrity به زبان ساده يعني يکپارچگي اطلاعات، مثلا فرض کنيد در يک سيستم ، اطلاعات دانشجو شامل مشخصات فردي، وام‌هاي تحصيلي و سوابق تحصيلي هر دانشجو را مي‌خواهيم ذخيره کنيم. در اين حالت براي هر کدام از موضوعات بايستي يک جدول جداگانه بسازيم پس جدول A شامل مشخصات فردي دانشجو، جدول B وام‌هاي تحصيلي و جدول C سوابق تحصيلي دانشجو ذخيره خواهد شد؛ در اين حالت در جدول A يک شماره منحصر بفرد(همان شماره دانشجويي) براي هر دانشجو در نظر مي‌گيرند که به اين شماره منحصر بفرد در مفاهيم بانک اطلاعاتي Primary Key يا کليد اصلي گويند پس با اين حساب کليد اصلي ، فيلدي در جدول اطلاعاتي مي‌باشد که مقدارش يکتاست و براي هيچ دو رکوردي تکراري نمي‌باشد. سپس در جداول B وC از اين کليد اصلي استفاده مي‌کنند مثلا در جدول B پس از وارد کردن اطلاعات وام، شماره دانشجويي که اين وام را اخذ کرده وارد مي‌کنند از آنجايي که اين دانشجو ممکن است چندين وام اخذ کند پس ممکن است فيلد شماره دانشجو در اين جدول تکراري شود به فيلد شماره دانشجويي در جدول B در اصطلاح بانک اطلاعاتي Foreign Key يا کليد خارجي مي‌گويند. پس کليد خارجي، فيلدي از يک جدول است که مقدار آن به فيلدي در جدول ديگر اشاره مي‌کند که آن فيلد در جدول دوم کليد اصلي مي‌باشد.
فرض کنيد که در جدول B اطلاعات يک وام وارد گرديد و کاربر سيستم شماره دانشجويي را اشتباه وارد نمود يعني شماره دانشجويي وارد شده متعلق به هيچ دانشجويي نباشد در اين حالت يک وام پرداخت گرديده که مشخص نيست براي چه کسي بوده! در اين وضعيت مي‌گويند بانک اطلاعاتي يکپارچگي يا Integrity خود را از دست داده، يعني حداقل يک رکورد در يک جدول فرزند (در مثال ما جدول B) وجود دارد که رکورد متناظر آن در جدول پدر(در مثال ما جدول A) وجود ندارد.
براي حل اين مشکل راهکارهاي زيادي وجود دارد که بهترين آن ايجاد ارتباط بين جداول مي‌باشد.
اکنون که با اهميت حفظ Integrity بانک اطلاعاتي آشنا شديم طريقه ساخت آن را براي بانک Phonebook قدم به قدم مرور مي‌کنيم.
براي بانک Phonebook ، تعريف Integrity بدين شکل است که براي هر مقدار CityID در جدول Contacts يک رکورد متناظر در جدول City وجود داشته باشد و همچنين براي هر مقدار GroupID در جدول Contacts يک رکورد متناظر در جدول Groups وجود داشته باشد.
مراحل زير را قدم به قدم اجرا نماييد:
مطابق شکل 12 به قسمت Diagrams برويد سپس در فضاي خالي سمت راست يا روي گزينه Diagrams کليک راست کرده و از منوي زمينه گزينه
"New Database Diagram …" را انتخاب نماييد.
 
 
 تصویر
شکل 12
 
  پنجره ظاهر شده روي گزينه Next کليک کنيد در پنجره بعد مطابق شکل 13 سه جدول Contacts, City, Groups را انتخاب نماييد و روي دکمه Next کليک کنيد.
 
 تصویر
شکل 13 
  پنجره بعدي روي دکمه Finish کليک کنيد.سپس جدول Contacts را انتخاب و روي آن کليک راست نماييد از منوي زمينه گزينه "Relationships …" را انتخاب کنيد.
در پنجره ظاهر شده روي دکمه New کليک کنيد. جدول
Primary Key Table را City و Foreign Key Table را Contacts انتخاب کنيد. درون فيلدها از ليست CityID را انتخاب نماييد و گزينه‌هاي
Cascade Update Related Fields و Cascade Delete Related Records را فعال نماييد( مطابق شکل 14 ).
 
 تصویر
شکل 14
 
  پنجره شکل 14 چندين گزينه وجود دارد که برخي از آنها را مختصرا توضيح مي‌دهيم:
Check existing data on creation : يعني هنگام ايجاد ارتباط بين دو جدول ، صحت ارتباط صحيح اطلاعاتي که قبلا در جداول وجود داشته بررسي شود.
Enforce relationship for INSERTs and UPDATEs : يعني هنگامي‌که يک رکورد در جدول Foreign Key وارد مي‌شود يا مقاديريش تغيير مي‌کند وجود رکورد متناظر در جدول Primary Key بررسي گردد.  
  Cascade Update Related Fields : يعني وقتي مقدار فيلد مورد نظر در جدول Primary Key تغيير مي‌کند سيستم به صورت خودکار مقدار فيلد‌هاي متناظر در جدول Foreign Key را نيز بروزرساني کند مثلا اگر در جدول City يک شهر به شماره 2 داشته باشيم و متناظر با آن 3 تماس مربوط به اين شهر در جدول Contact وجود داشته باشد در صورتي که مقدار شماره شهر از 2 به 5 در جدول City تغيير کرد هر 3 تماس موجود در جدول تماس‌ها نيز مقدار فيلد CityID آن به 5 تغيير نمايد.  
  Cascade Delete Related Fields : يعني وقتي که يک رکورد از جدول
Primary Key حذف مي‌شود تمام رکورد‌هاي متناظر آن در جدول Foreign Key نيز حذف گردد. 
 
   دکمه Close کليک کنيد تا ارتباط ذخيره شود سپس مجددا روي جدول Contacts کليک راست کرده و مانند مرحله قبل پنجره ايجاد ارتباط را نمايش دهيد.در پنجره ظاهر مانند مرحله قبل عمل کنيد منتهي در اين مرحله به جاي جدول City جدول Groups را انتخاب کنيد و به جاي CityID فيلد‌هاي GroupID را انتخاب نماييد( مطابق شکل 15).
 

 تصویر
شکل 15
 
  دکمه Close کليک کنيد. اگر همه موارد را به درستي انجام داده باشيد پنجره دياگرام شما مطابق شکل 16 خواهد بود.
 
 تصویر
شکل 16 
  از نوار ابزار روي دکمه Save کليک کنيد. در پنجره ظاهر شده نام دياگرام را PhoneDiagram وارد و دکمه OK را کليک کنيد .
ساخت و تنظيم بانک اطلاعاتي نيز به پايان رسيد!

نکته : قبل از اينکه وارد بحث برنامه‌نويسي شويم بايد اين نکته را بگوييم که اگر در هنگام نصب SQL Server نوع Authentication را به صورت
Mix Mode Windows And SQL Authentication انتخاب کرده ايد که در ارتباط با بانک با مشکلي مواجه نخواهيم شد در غير صورت اگر مطمئن نيستيد يا نوع Authentication را به صورت
Windows Authentication انتخاب کرده ايد براي حل اين مشکل مراحل زير را انجام دهيد:
در Treeview سمت چپ مطابق شکل 2 روي سرور Local کليک راست کرده از منوي زمينه گزينه Properties را انتخاب نماييد .
در پنجره ظاهر شده (شکل 17) به برگه Security برويد و مطمئن شويد که گزينه
SQL Server And Windows فعال مي‌باشد.
 
 تصویر
شکل 17
 
 
"هرکس از راه رسید نانش دهید و از ایمانش مپرسید . چه ، آنکس که به درگاه باریتعالی به جان ارزد ، قطعا بر سفره بوالحسن به نان ارزد "
( شیخ ابوالحسن خرقانی )
Super Moderator
Super Moderator
نمایه کاربر
پست: 1166
تاریخ عضویت: سه‌شنبه ۳ مرداد ۱۳۸۵, ۱۱:۴۹ ق.ظ
سپاس‌های ارسالی: 946 بار
سپاس‌های دریافتی: 2887 بار

Re: برنامه نويسي ديتابيس درVisual Basic .NET 2005

پست توسط SHAHRAM »

اشاره :
در اين شماره قبل با کنترل جديد و بسيار قدرتمند GridView و همچنين قسمت Dataset Designer آشنا شديم .

[url=<A]<A[/url]

 
   :
در اين مقاله به مراحل ساخت، برنامه نويسي و طراحي فرم‌ها مي‌پردازيم
ساخت برنامه
خب پس از طراحي بانک اطلاعاتي نوبت به برنامه‌نويسي!! در محيط ويژوال استوديو مي‌رسد(فکر نمي‌کنم در کل ، يک خط هم کد تايپ کنيم، ياد برنامه‌نويسي با زبان Turbo C در محيط Dos بخير!).براي ساخت برنامه مراحل زير را قدم به قدم اجرا نماييد:
ويژوال استوديو را اجرا کنيد.براي ايجاد پروژه از منوي File گزينه New و از آنجا گزينه "Project …" را انتخاب يا از کليد ميانبر CTRL+SHIFT+N استفاده کنيد.
نام پروژه را Phonebook و نوع آن را WindowsApplication و به زبان Visual Basic انتخاب کنيد و در مسير دلخواه ذخيره نماييد.
روي دکمه OK کليک کنيد تا پروژه ساخته شود.سپس در Solution Explorer روي نام پروژه کليک راست کرده از منوي زمينه گزينه Add ( شکل 1)

مفهوم Solution Explorer
اين قسمت از محيط ويژوال استوديو که به صورت پيش‌فرض در سمت راست بالا قرار دارد، محلي است که از طريق آن مي‌توان تمامي ‌فايل‌ها، فرم‌ها ، کلاس‌ها و ... مديريت کرد از طريق راست کليک روي نام پروژه در اين قسمت مي‌توان عناصر جديد به پروژه اضافه کرد همچنين با دابل کليک روي گزينه My Project در اين پنجره مي‌توانيد تنظيمات پيشرفته مربوط به پروژه را انجام دهيد و ....
و از آنجا New Item را انتخاب نماييد .
 
 
 تصویر
شکل 1 
  در پنجره باز شده نوع آن را Dataset و نام آن را مطابق شکل 2 ، PhoneDataSet.xsd بگذاريد. روي دکمه Add کليک کنيد تا Dataset به پروژه اضافه شود.
 
 تصویر
شکل 2 
  قسمت Designer ، کليک راست کرده از منوي زمينه گزينه Add و از آنجا TableAdaptor را انتخاب کنيد.در پنجره ظاهر شده روي دکمه New Connection کليک و پنجره ظاهر شده را مطابق شکل 3 پر کنيد.
 
 تصویر
شکل 3
 
  دکمه OK کليک کنيد سپس در پنجره نمايش داده شده گزينه
"yes, include sensitive data in …" را انتخاب کنيد و روي دکمه Next کليک کنيد.
در دو پنجره بعدي روي دکمه Next کليک کنيد.
در پنجره ظاهر شده روي دکمه Query Builder کليک کنيد.
در پنجره "Add Table " ، جدول Contact را انتخاب کنيد و سپس روي دکمه‌هاي Add بعد Close کليک کنيد.
در پنجره Query Builder مطابق شکل 4 تمام فيلد‌هاي جدول Contact را انتخاب کنيد و روي دکمه OK کليک کنيد.
 
 تصویر
شکل 4 
  روي دکمه Next کليک کنيد. در پنجره بعدي نيز روي دکمه Next کليک کنيد . اگر همه موارد را درست عمل کرده باشيد پنجره پاياني مطابق شکل 5 خواهد بود.
 
 تصویر
شکل 5 
  دکمه Finish کليک کنيد.
اکنون ما جدول Contact را وارد Dataset کرديم در ادامه بايستي جداول Groups و City را به طريق مشابه به Dataset وارد کنيم يعني دوباره در قسمت Designer مربوط به Dataset کليک راست کرده از منوي زمينه گزينه Add و از آنجا TableAdaptor را انتخاب کنيم منتها ديگر نيازي با استفاده از دکمه New Connection نداريم و از همانConnection که در مرحله قبل ساختيم استفاده خواهيم نمود بقيه مراحل مثل مراحل جدول Contact مي‌باشندو اين مراحل را براي دو جدول City و Groups انجام دهيد. پس از اتمام، ظاهر Designer مربوط به Dataset بايستي شبيه شکل 6 باشد.
 
 تصویر
شکل 6 
  زدن کليد ميانبر CTRL+S پروژه را تا اينجا Save مي کنيم.
کار طراحي Dataset غير از چند مورد کوچک پايان يافت؛ اکنون به سراغ طراحي فرم‌ها مي‌رويم و بعد در وقت لازم دوباره به سراغ Dataset مي‌آييم.

طراحي فرم‌ها
مطابق شکل 1 روي نام پروژه کليک راست کرده از منو زمينه گزينه Add و از آنجا
New Item را انتخاب کنيد.
در پنجره Add New Item نوع Windows Form (اولين گزينه) را انتخاب نام آن را frmContact بناميد (شکل 7) و سپس روي دکمه Add کليک کنيد تا به پروژه اضافه شود.
 
 تصویر
شکل 7
 
  مانند روش قبل دو فرم ديگر به نام‌هاي frmCity و frmGroups نيز به پروژه اضافه کنيد.
اکنون در Solution Explorer روي frmCity دابل کليک کنيد تا در Designer ظاهر شود.
در پنجره Properties خاصيت Text مربوط به فرم را Manage Cities و خاصيت
Start Position آن را CenterScreen قرار دهيد تنطيمات مربوط به Font و Backcolor را به دلخواه مي‌توانيد تغيير دهيد.

توضيح پنجره Properties
در اين پنجره که به صورت پيش فرض در سمت راست پايين و در زير
Solution Explorer قرار دارد شما مي‌توانيد کليه خصوصيات مربوط به آيتم انتخابي در قسمت Designer را تغيير دهيد.  
   اينکه بهتر قسمت‌هاي مربوط به[FONT=Tahoma,sans-serif][COLOR=#NaNNaNNaN] (IDE (Integrated Development Environment  استوديو را بشناسيد به شکل 8 توجه کنيد.



   
 [External Link Removed for Guests]
شکل8  
  اکنون مي‌خواهيم يک کار جالب انجام دهيم؛ کاري که حتي در ويژوال استوديو 2003 نيز يک کار پر دردسر بود، ولي اکنون با يک Drag & Drop انجام مي‌شود!!
خب براي اين کار بايد پنجره Data Sources مربوط به پروژه را نمايش دهيم (محل آن در شکل 8 مشخص است) ؛ از ليست زير مجموعه PhoneDataSet گزينه City را انتخاب کنيد سپس آنرا بکشيد (Drag) و روي فرم frmCity در قسمت Designer مطابق شکل 9رها کنيد .
 
 تصویر
شکل 9 
  اينکه کمي‌ ظاهر فرم بهتر شود کنترل GridView را در قسمتDesigner انتخاب کنيد و سپس در پنجره Properties خاصيت Dock آنرا برابر Fill قرار دهيد. اکنون بايستي ظاهر فرم City به شکل 10 باشد.
 
 تصویر
شکل 10 
  تمام کارهايي که براي فرم City بايد انجام مي‌داديم؛ انجام داديم!
اکنون کاربر مي‌تواند به ليست شهر‌ها اضافه کند از آنها حذف کند و همچنين نام آنها را ويرايش نمايد!
اکنون روي frmGroups در Solution Explorer دابل کليک کنيد و در پنجره Properties خاصيت Text مربوط به فرم را Manage Groups و خاصيت Start Position آنرا CenterScreen قرار دهيد تنطيمات مربوط به Font و Backcolor را به دلخواه مي‌توانيد تغيير دهيد.
سپس به قسمت Datasources برويد و همانند قسمت City آيتم Groups را از زير مجموعه PhoneDataset بکشيد و روي فرم Groups در قسمت Desginer قرار دهيد. سپس کنترل GridView را روي فرم انتخاب کنيد و خصوصيت Dock مربوط به آنرا برابر Fill قرار دهيد. اکنون بايستي ظاهر فرم Groups شبيه شکل 11 باشد.
 
 تصویر
شکل 11 
  به قسمت اصلي پروژه رسيد؛
اکنون روي frmContact در Solution Explorer دابل کليک کنيد و در پنجره Properties خاصيت Text مربوط به فرم را Manage Contacts و خاصيت Start Position آنرا CenterScreen و خاصيت Size آن را 400 ; 675 قرار دهيد تنطيمات مربوط به Font و Backcolor را به دلخواه مي‌توانيد تغيير دهيد.
مانند دو فرم قبلي از قسمت Datasources آيتم Contact از زير مجموعه PhoneDataSet را بکشيد و روي فرم قرار دهيد سپس GridView را انتخاب کنيد و خاصيت Anchor مربوط به آن را Top, Bottom, Left, Right قراردهيد سپس آنرا به گوشه بالا سمت چپ ببريد و خصوصيت Size آنرا برابر 333 ; 460 قرار دهيد.
تا اينجا کاربر مي‌تواند حذف، ويرايش و اضافه مربوط به ليست تماس‌ها را انجام دهد ولي ما مي‌خواهيم علاوه بر اين موارد ، کاربر امکان ف_ * ل*_ ت ر کردن تماس‌ها براساس نام شهر و نام گروه را داشته باشد و همچنين امکان جستجو بر اساس نام و نام خانوادگي را نيز داشته باشد؛ جهت انجام اين امور مراحل بعدي را ادامه دهيد.
يک کنترل GroupBox را از جعبه ابزار (نحوه نمايش آن در شکل 8 مشخص است) بکشيد و روي فرم در قسمت سمت راست رها کنيد؛ به همين روش ، دو GroupBox ديگر نيز به فرم اضافه کنيد.
خصوصيات اين سه GroupBox را براساس جدول 1 در پنجره Properties تغيير دهيد.

جدول 1
از نوار ابزار يک کنترل ComboBox را بکشيد و درون GroupBox ي که Text آنرا
Filter By City قرار داديم؛ رها کنيد. نام ComboBox را cmbCity و خاصيت DropDownStyle آنرا برابر DropDownList قرار دهيد.
سپس کنترل ComboBox را در قسمت Designer انتخاب کنيد. يک مثلث مشکي کوچک گوشه بالاي سمت راست آن نمايش داده مي‌شود. روي آن کليک کنيد و در پنجره ظاهر شده که به آن پنجره Common Tasks مي‌گويند گزينه
Use Data Bound Items را فعال کنيد.  
    : اين مثلث کوچک پس از انتخاب هر کنترلي روي فرم نمايان مي‌شود که در ويژوال استوديو 2005 جديد است و براي انجام کارهاي رايج مربوط به هر کنترل استفاده مي‌شود.   
   ليست Datasource رادر پنجره Common Tasks باز کنيد و در آن مطابق شکل 12 جدول City را انتخاب نماييد.
 

 تصویر
شکل 12 
  در پنجره Common Tasks مقدار Display Member را CityName و مقدار Value Member را CityID قرار دهيد(شکل 13).
 
 تصویر
شکل 13 
  نوار ابزار يک کنترل Button را بکشيد و درون GroupBox که Text آنرا Filter By City قرار داديم؛ زير Combobox قبلي رها کنيد. نام Button را btnShowByCity و خاصيت Text آنرا برابر Show City Contacts قرار دهيد.
از نوار ابزار يک کنترل ComboBox را بکشيد و درون GroupBox که Text آنرا
Filter By Group قرار داديم؛ رها کنيد. نام ComboBox را cmbGroup و خاصيت DropDownStyle آنرا برابر DropDownList قرار دهيد.
سپس کنترل ComboBox را در قسمت Designer انتخاب کنيد. روي مثلث مشکي کوچک کليک کرده و در پنجره Common Tasks ، گزينه Use Data Bound Items را فعال کنيد.
سپس ليست Datasource رادر پنجره Common Tasks باز کنيد و در آن مطابق شکل 12 جدول Groups را انتخاب نماييد.
سپس در پنجره Common Tasks مقدار Display Member را GroupName و مقدار Value Member را GroupID قرار دهيد(شکل 14).
 
 تصویر
شکل 14 
  نوار ابزار يک کنترل Button را بکشيد و درون GroupBox ي که Text آنرا
Filter By Group قرار داديم؛ زير Combobox قبلي رها کنيد. نام Button را btnShowByGroup و خاصيت Text آنرا برابر Show Group Contacts قرار دهيد.
از نوار ابزار يک کنترل TextBox را بکشيد و درون GroupBox ي که Text آنرا
Search By Name & Family قرار داديم؛ رها کنيد. نام TextBox را txtName قرار دهيد سپس به همين طريق يک TextBox ديگر زير TextBox قبلي اضافه کنيد و آنرا txtLastName قرار دهيد براي اينکه کاربر بداند در کدام TextBox نام و در کدام
TextBox فاميل را وارد کند دو کنترل Label را نيز از جعبه ابزار در کنار اين دو TextBox قرار دهيد سپس خاصيت Text مربوط به Label کنار txtName را برابر "Name:" و خاصيت Text مربوط به Label کنار txtLastName را برابر "LastName:" قرار دهيد.
از نوار ابزار يک کنترل Button را بکشيد و درون GroupBox ي که Text آنرا
Search By Name & Family قرار داديم؛ زير TextBox قبلي رها کنيد. نام Button را btnSearchByName و خاصيت Text آنرا برابر Search قرار دهيد.
اکنون بايستي ظاهر فرم شبيه شکل 15 شده باشد.
 
 تصویر
شکل 15
 
  بايد کد‌هاي مورد نياز جهت ف_ * ل*_ ت ر کردن و جستجو را بنويسيم.
روي دکمه "Show City Contacts" دابل کليک کنيد تا به محيط کد نويسي برويد، در محلي که مکان نما قرار دارد کد زير را تايپ کنيد :

  ContactBindingSource.Filter = "CityID=" & cmbCity.SelectedValue   
  
   براي بازگشت به حالت Design فرم ، راست کليک کرده و گزينه View Designer را انتخاب کنيد.
روي دکمه "Show Group Contacts" دابل کليک کنيد تا به محيط کد نويسي برويد، در محلي که مکان نما قرار دارد کد زير را تايپ کنيد :

  [COLOR=#a9a9a9] .Filter = "GroupID=" & cmbGroup.SelectedValue

    حالت Design فرم برگرديد و روي دکمه "Search" دابل کليک کنيد تا به محيط کد نويسي برويد، در محلي که مکان نما قرار دارد کد زير را تايپ کنيد :
    
    [COLOR=#a9a9a9]  txtName.Text.Trim <> "" AndAlso txtLastName.Text.Trim <> "" Then
'"%" & ContactBindingSource.Filter = "FirstName Like '%" & txtName.Text
ContactBindingSource.Filter &= " AND LastName Like '%" & txtLastName.Text "%"&
ElseIf txtName.Text.Trim <> "" Then
'"%"& ContactBindingSource.Filter = "FirstName Like '%" & txtName.Text
ElseIf txtLastName.Text.Trim <> "" Then
"'%"&ContactBindingSource.Filter = "LastName Like '%" & txtLastName.Text
Else
( MsgBox("please fill Name or Family TextBox", MsgBoxStyle.Information
End If
   
به حالت Design فرم برگرديد . اکنون کليه کارهاي مربوط به جستجو و ف_ * ل*_ ت ر تمام شده است تنها موردي که باقي مانده اين است که به کاربر اجازه بدهيم هنگام وارد کردن شهر آنرا بتواند از ليست شهر انتخاب کند و همچنين هنگام وارد کردن گروه آنرا بتواند از ليست گروهها انتخاب کند؛ براي اينکار بايستي GridView را کمي‌تنظيم کنيم.
کنترل GridView را روي فرم انتخاب کنيد و روي مثلث مشکي کوچک کليک کرده و در پنجره Common Tasks ، گزينه Edit Columns را انتخاب کنيد.
در پنجره Edit Columns از ليست سمت چپ، گزينه CityID را انتخاب کنيد. سپس در ليست خصوصيات سمت راست گزينه ColumnType را پيدا کرده و مقدار آنرا از ليست DataGridViewComboBoxColumn انتخاب کنيد.
سپس در همين قسمت خاصيت DataSource را پيدا کرد و مقدار آنرا برابر CityBindingSource قرارداده ، آنگاه در زير خاصيت DataSource خواص DisplayMember و ValueMember پيدا کرده و مقادير آنها را به ترتيب CityName و CityID قرار دهيد.
سپس از ليست سمت چپ، گزينه GroupID را انتخاب کنيد و در ليست خصوصيات سمت راست گزينه ColumnType را پيدا کرده و مقدار آنرا از ليست DataGridViewComboBoxColumn انتخاب کنيد.
سپس در همين قسمت خاصيت DataSource را پيدا کرد و مقدار آنرا برابر GroupsBindingSource قرار دهيد. آنگاه در زير خاصيت DataSource خواص DisplayMember و ValueMember پيدا کرده و مقادير آنها را به ترتيب GroupName و GroupID قرار دهيد.
روي دکمه OK کليک کنيد. کار فرم Contact نيز به پايان رسيد.
روي Form1 در Solution Explorer دابل کليک کنيد تا حال Designer مربوط به Form1 باز شود . خاصيت Text مربوط به Form1 را "دفترچه تلفن" و خاصيت Startposition آن را CenterScreen قرار دهيد.
از جعبه ابزار سه Button روي فرم قرار دهيد نام آنها را به ترتيب btnContact ، btnCity و btnGroup قرارداده و خاصيت Text آنها را به ترتيب "Manage Contacts" ، "Manage Cities" و "Manage Groups" قرار دهيد و سپس آنها را مطابق شکل 16 مرتب نماييد.
   
 تصویر
شکل 16 
  دکمه "Manage Contacts" دابل کليک کنيد و در محل مکان نما کد زير را وارد نماييد:
Dim frm As New frmContact
frm.Show()  
   حالت Designer مربوط به Form1 برگرديد؛ روي دکمه "Manage Cities" دابل کليک کنيد و در محل مکان نما کد زير را وارد نماييد:
Dim frm As New frmCity
frm.Show()
به حالت Designer مربوط به Form1 برگرديد؛ روي دکمه "Manage Groups" دابل کليک کنيد و در محل مکان نما کد زير را وارد نماييد:
Dim frm As New frmGroups
frm.Show() 
 
    پايان يافت!
با زدن کليد F5 پروژه را اجرا کنيد. ابتدا چند شهر(City) و چند گروه موضوعي(Group) تعريف نماييد و سپس در قسمت Contacts (تماس‌ها) ، اطلاعات تماسي چند تن از دوستان خود را وارد کنيد و از اين همه سادگي برنامه‌نويسي لذت ببريد!
 
  
   تصویر
 
سخن  

شايد در نگاه اول مراحل برنامه‌نويسي کمي ‌طولاني به نظر بيايد ولي پس از مدت کوتاهي برنامه‌نويسي بدين شکل کاملا مسلط خواهيد شد به نحوي که نوشتن چنين برنامه ساده‌اي براي يک برنامه‌نويس حرفه‌اي .NET فکر نمي‌کنم بيش از 5 دقيقه طول بکشد!!
البته برنامه‌هاي واقعي بدين سادگي نمي‌باشند و معمولا شما بايد ترکيبي از کد نويسي و استفاده از Designer را باهم بکار بگيريد در ادامه مقالات مربوط به .NET 2005 سعي خواهم کرد مطالب جديد اين نسخه ويژوال استوديو را با هم بيشتر بررسي نماييم.

منابع : MSDN 
  

 
"هرکس از راه رسید نانش دهید و از ایمانش مپرسید . چه ، آنکس که به درگاه باریتعالی به جان ارزد ، قطعا بر سفره بوالحسن به نان ارزد "
( شیخ ابوالحسن خرقانی )
ارسال پست

بازگشت به “Dot Net Programming”