آموزش SQL, SQL Server


مقدمه................................................................ 9

مختصري درباره پروژه........................................... 10

فصل اول -     آشنايي با محيط Visual Basic 6........ 11

خلاصه فصل اول................................................. 12

1-1- پنجره پروژه جديد ......................................... 13

2-1- جعبه ابزار .................................................. 14

3-1- Form........................................................ 15

4-1-Properties ................................................. 15

5-1- ابزار هاي Visual Basic  ................................ 15

1-5-1- pointer .................................................. 16

2-5-1-picture box  .......................................      16

3-5-1- label ..................................................... 16

4-5-1- text box ................................................ 16

5-5-1- frame ................................................... 17

6-5-1- command button ...............................     17

7-5-1- option  button ........................................ 17

8-5-1- check box  ...........................................  18

6-1-بررسي  Properties    ................................    18

1-6-1- name   ...............................................    18

2-6-1- caption    ..........................................     19

3-6-1- top........................................................ 19

4-6-1- width .................................................... 19

5-6-1- height.................................................... 19

6-6-1- left........................................................ 19

7-6-1- border style............................................ 19

8-6-1- window state.......................................... 19

7-1- Event Procedure........................................ 19

8-1- رويداد هاي مهم........................................... 20

1-8-1- load....................................................... 20

2-8-1- click....................................................... 20

3-8-1- dblclick.................................................. 21

4-8-1- activate.................................................. 21

5-8-1- deactivate.............................................. 21

6-8-1- resize..................................................... 21

7-8-1- unload................................................... 21

8-8-1- change.................................................. 21

9-1- مفاهيم بنيادي VB........................................ 23

10-1- انواع داده هاي  VB..................................... 25

11-1- دستور If.................................................. 26

12-1- انتخاب با Select Case ................................ 27

13-1- تکرار با استفاده از حلقه.............................. 28

1-13-1- دستور Do.............................................. 28

2-13-1- استفاده از  Step..................................... 29

3-13-1- حلقه  For ............................................. 29

14-1- ارتباط با کاربر............................................. 30

1-14-1- تابع  Msg box  و   Input box.................... 30

15-1- آرايه اي از کنترل ها .................................... 31

16-1- پايگاه داده ها در  VB................................... 33

1-16-1- آشنايي با ADO....................................... 33    

2-16-1- اشيا در مدل  ADO................................... 33

3-16-1- خواص  ADO........................................... 34

4-16-1- Connection String.................................. 34

5-16-1- Command Text..................................... 34

6-16-1- Command Type..................................... 34

7-16-1- Cursor Location..................................... 35

8-16-1- Cursor Type.......................................... 36

9-16-1- Lock Type............................................. 38

10-16-1- Mode Type.......................................... 39

11-16-1- متدهاي کنترل داده  ADO........................ 40

12-16-1- رويداد هاي کنترل داده  ADO.................... 40

13-16-1- استفاده از ديالوگ براي تنظيم خاصيت  Connection String............................................. 41

 

فصل دوم -    مقدمه اي از SQL و SQL Server........ 47

خلاصه فصل دوم................................................. 48

1-2- دستور Select.............................................. 49

2-2- استفاده از توابع در Select.............................. 50

1-2-2-Count 50

2-2-2- Sum   50

3-2-2- Min,max................................................. 52

4-2-2-Top n 52  

5-2-2- Into   52

3-2- دستور Delete ............................................ 52 

4-2- دستور insert.............................................. 53 

5-2- محيط Enterprise Manager............................ 53

6-2- ايجاد يك جدول جديد..................................... 55

7-2- ايجاد Stored Procedure................................ 56

8-2- ابزار View................................................... 59

9-2- ايجاد ديد.................................................... 59

10-2- مراحل ايجاد يك ديد..................................... 60

11-2- ايجاد Stored Procedure با استفاده از ويزارد ها 62

نتيجه گيري........................................................ 65

مراجع............................................................... 66





فصل اول -     آشنايي با محيط Visual Basic 6

1-1- پنجره پروژه جديد.......................................... 13

2-1- جعبه ابزار................................................... 14

3-1- پنجره انتخاب ابزارها...................................... 15

4-1- نمونه اي از بر چسب.................................... 16

5-1- نمونه اي از جعبه متن................................... 17

6-1- نمونه اي از دکمه فرمان................................. 17

7-1- نمونه اي از Option button............................ 18

8-1- روال رويداد form load................................... 20

9-1- تعدادي از رويداد هاي فرم............................... 22

10-1- اجراي تابع  Msg box................................... 30

11-1- آرايه اي از کنترل ها..................................... 32

12-1- گزينه هاي Command Type......................... 35

13-1- گزينه هاي Cursor Location......................... 36

14-1- گزينه هاي Cursor Type.............................. 37

15-1- گزينه هاي Lock Location............................ 38

16-1- گزينه هاي Lock Location............................ 39

17-1- راست کليک روي ADODC............................ 42

18-1- پنجره  ADODC Properties........................... 42

19-1- انتخاب نوع ارائه کننده.................................. 43

20-1- صفحه Connection..................................... 44

21-1- پيغام Test Connection ............................... 44

22-1- پنجرهProperties  ADODC............................ 45

23-1- پنجره Record Source................................. 45  

24-1- مثالي از پنجره Record Source...................... 46

 

 

 

 

فصل دوم -    مقدمه اي از SQL و SQL Server

1-2- صفحه Enterprise Manager........................... 53

2-2- پنجره New Database................................... 55

3-2- راست کليک براي ايجاد New View.................. 60

4-2- اضافه کردن جدول به ديد................................ 60

5-2- تنظيمات View ............................................ 61

6-2- ايجاد SP بوسيله ويزارد.................................. 62

7-2- انتخاب Database......................................... 62

8-2- ويرايش SP.................................................. 63

9-2- ويزارد راهبري SP.......................................... 64










اين مطلب در حقيقت خلاصه ايست از مطالبي که براي نوشتن برنامه اي به سبک برنامه اينجانب

مورد نياز است .

در اين گزارش سعي شده است در هنگام ياد دادن و بيان مطالب نمونه هايي از آنچه در برنامه استفاده شده است آورده شود .

در ابتداي گزارش هم روش کار کردن برنامه و کار کردن با برنامه آورده شده است .

اين گزارش شامل دو فصل است که هر کدام داراي بخش ها و زير فصل هايي مي باشند .

فصل اول که بيشتر مطالب مربوط به اين فصل است درباره  Visual Basic  و فصل دوم مربوط به  SQL Server  مي باشد .

در اين گزارش سعي شده است در موارد مورد نياز و براي خوانايي بيشتر ودرک بهتر مفاهيم از تصاوير استفاده شود .







اين برنامه نمونه اي از سيستم ثبت نام دانشگاه است .

اين برنامه شامل 6 ورودي جدا براي پرسنل مختلف است که در اين پروژه قسمت ثبت نام بيشتر مد نظر ما است .

در ورود به سيستم ابتدا نام کاربري و رمز عبور از ما سوال مي شود .

هنگامي که به بخش ثبت نام وارد مي شويم ابتدا بايد شماره دانشجويي را وارد کنيم .

در اين قسمت برنامه به گونه اي نوشته شده است که بطور خودکار بدون نياز به فشار دادن دکمه اي شماره وارد شده بطور خودکار در جدول جستجو مي شود .

در اين جستجوي ابتدايي نام و نام خانوادگي دانشجو بر اساس شماره وي داده مي شود .

در اين هنگام ما مي توانيم از بين 3 گزينه انتخاب ، حذف ، و يا اضافه واحد يکي را انتخاب کنيم و بر اساس اين انتخاب ما شماره ترم مورد نظر بطور خودکار توسط برنامه داده مي شود .

بعد از اين انتخاب ما مي توانيم شماره درس مورد نظر را براي انتخاب و يا اضافه کردن واحد وارد کنيم و در صورت تمايل به حذف درس روي آن درس کليک کنيم تا درس به رنگ قرمز درآيد وسپس روي دکمه مورد نظر کليک مي کنيم تا عمليات لازم انجام شود .




















 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

در اين فصل با مطالبي از Visual Basic  که در اين گزارش به اختصار VB بيان شده آشنا مي شويد . اين مطالب مناسب و نسبتا کافي براي يک پروژه برنامه نويسي است .

 

براي درک اين مطالب بايد آشنايي نسبي با زبان هاي برنامه نويسي و بخصوص با زبانهاي Visual  داشته باشيم .

 

اين فصل شامل 16 بخش است که اين بخش ها را بطور کلي مي توان به دو قسمت جدا تعبير کرد .

 

قسمت اول که شامل 15 بخش اول اين فصل است و بيشتر پيرامون زبان برنامه نويسي VB است و وارد جزئيات تخصصي در مورد خاصي نمي شود .

 

قسمت دوم که شامل بخش 16 که بخش پاياني اين فصل است و درباره پايگاه داده در اين زبان برنامه نويسي است و به طور کامل نياز هاي ما را در مورد استفاده از پايگاه داده

 

 SQL Server  در اين پروژه رفع مي کند.

 

در ابتداي اين فصل به بيان مطالبي مقدماتي در مورد اصول برنامه نويسي با  VB  پرداخته شده است که شامل کنترل ها ، ابزارها ، خواص و رويدادهاي اين زبان است .

 

در ادامه به بيان اصولي از ساختارهاي شرطي و تکرار در VB  پرداخته شده است .

 


 


 


 


 


 


 


 


 


 


 


 

1-1- پنجره پروژه جديد 

 

هر گاه ويژوال بيسيک را باز مي کنيم پنجره اي بنام  new project  ظاهر مي شود .

 

اين پنجره به شما امکان مي دهد تا نوع برنامه خود را انتخاب کنيد و بر اساس نوع کاربرد پروژه مناسب را باز نماييم .

 

در شکل 1-1 اين پنجره را مي بينيد .

 

اغلب برنامه هاي نوشته شده از نوع  standard exe  است .

 


 


 


 


 


 


 


شکل 1-1- پنجره پروژه جديد

 


 


 


 


شکل 2-1- جعبه ابزار

 


 


 


 


 

2-1- جعبه ابزار 

 

در اين پنجره مهمترين و پر کاربرد ترين ابزار هاي visual basic  آورده شده است .

 

اين پنجره قابليت اضافه و کم کردن ابزار ها را دارد .

 

همچنين قابليت افزودن  component  ها را نيز دارا مي باشد .

 

ما در اين پروژه تنها به کنترل ADO   براي اتصال به پايگاه داده نياز داريم و همانطور که در شکل 3-1 مي بينيد آن را علامت دار مي کنيم سپس کليد OK  را مي زنيم تا به کنترل هاي پروژه ما اضافه شود .

 


شکل 3-1- پنجره انتخاب ابزارها

 


 

3-1- Form 

 

فرم محلي است که کنترل هاي برنامه روي آن قرار مي گيرند .

 

يک برنامه مي تواند شامل بيش از يک فرم هم باشد . تمامي فرم هاي برنامه در محلي بنام project explorer   نمايش داده مي شود .

 

در اين پروژه از 28 فرم استفاده شده است .

 


 

4-1-Properties 

 

يکي ديگر از پنجره هاي مهم ديگر در برنامه پنجره properties   است و براي هر کنترل و فرم برنامه يک پنجره properties   وجود دارد .

 


 

5-1- ابزار هاي Visual Basic  

 

در اين قسمت ما با ابزار هايي که در قسمت  toolbox  قرار دارند آشنا مي شويم .

 

ما در اينجا ابزار هاي پيش فرض برنامه را از بالا به پايين شرح مي دهيم .

 


 

1-5-1- pointer

 

اين ابزار کنترل نبوده و براي وقتي است که ما يک کنترل را به حالت آماده در آورده باشيم و مي خواهيم از اين کار انصراف دهيم .

 

با فشار دادن اين ابزار کرسر ماوس به حالت اوليه خود در مي آيد .

 


 

2-5-1-picture box  

 

اين کنترل براي قرار دادن يک تصوير روي فرم بکار مي رود .

 

اين کنترل از انواع تصاوير با پسوند هاي مختلف پشتيباني مي کند .

 


 

3-5-1- label 

 

اين کنترل فقط براي نمايش متن هاي مورد نظر برنامه نويس بکار مي رود و کاربر اجازه هيچ عملي روي آن را ندارد .

 

عموما از برچسب در کنار فيلد هاي متني براي نام و توضيح اين فيلد ها استفاده مي شود .

 

در اين پروژه تقريبا در تمامي فرم ها در کنار دکمه ها و فيلد هاي متني از بر چسب براي نشان دادن نام يا عمل آن کنترل استفاده شده است .

 

در شکل4 -1 نمونه اي از آن را مي بينيد .

 


 

4-5-1- text box 

 

اين کنترل در مواقعي که نياز به برقراري ارتباط با کاربر و بخصوص نياز به گرفتن اطلاعات از کاربر است استفاده مي شود .

 

مي توان بوسيله خاصيت text  اين کنترل مقداري را بصورت پيش فرض در آن قرار داد .

 

در اين پروژه هم براي گرفتن اطلاعات و هم براي نشان دادن اطلاعات از فيلد متن استفاده شده است .

 

در شکل 5-1 نمونه اي از آن را مي بينيد .

 


 


شکل 4-1- نمونه اي از بر چسب

 


شکل 5-1- نمونه اي از جعبه متن

 


 

 

 

5-5-1- frame 

 

اين کنترل در مواقعي که مي خواهيم تعدادي کنترل را به صورت محصور و جداگانه نگهداري کنيم استفاده مي شود .

 

 

 

6-5-1- command button 

 

از اين کنترل براي اجراي فرامين برنامه استفاده مي شود و مي توان گفت که تقريبا پر کاربرد ترين کنترل در برنامه ها است .

 

در اين پروژه اين کنترل براي انجام شدن اعمال و وارد شدن به بخشهاي مختلف  به کار رفته است .

 

در شکل 6-1 نمونه اي از دکمه فرمان که در پروژه بکار رفته است را مي بينيد .

 


 

7-5-1- option  button 

 

اين کنترل در مواردي که از چند مورد انتخاب کاربر مي تواند فقط يک مورد را انتخاب کند بکار مي رود .

 

Option button  مشخصه اي به نام Value دارندکه از صفر يا يک بودن مقدار آن مي توانيم به انتخاب نشده بودن و انتخاب شده بودن آن گزينه خاص پي ببريم.

 

اگر برروي فرمي چند Option Button وجود داشت  تنها يکي از آنها مي تواند Value برابر يک داشته باشد و وقتي کاربر  يکي ديگر را انتخاب مي کند، به طور خودکار Value قبلي صفر و  Value کنترل انتخاب شده يک مي شود.

 


 

                         


 

شکل 6-1- نمونه اي از دکمه فرمان

 

در اين پروژه از اين کنترل در فرم انتخاب واحد استفاده شده است .

 

کاربر مي تواند نوع تغيير واحد ها را که شامل  موارد زير است استفاده کند :

 

1- حذف

 

2- اضافه

 

3- انتخاب واحد

 

با قرار گرفتن فرم در هر يک از اين حالت ها محتويات جعبه هاي متن تغيير مي کند .

 


 

8-5-1- check box 

 

اگر بخواهيم به کاربر (User) اين امکان را بدهيم که از بين چند گزينه يک  دو يا چند مورد را انتخاب کند و يا حتي هيچ يک را انتخاب نکند از کنترل Check Box استفاده مي کنيم .

 

اگر برروي يک فرم چند Check Box وجود داشت مي تواند Value هر يک از آنها صفر يا يک باشد .

 

اين کنترل ها مهمترين کنترل هاي visual basic  بودند . بقيه کنترل ها در موقع نياز تشريح خواهند شد .

 


 

6-1- بررسي  Properties  

 

در اينجا به بيان کاربردي ترين خواص کنترل ها مي پردازيم :

 


 

1-6-1- name 

 

عبارتست از نامي که در هنگام نوشتن برنامه و روال ها استفاده مي شود .

 

اين نام با نامي که در روي کنترل نمايش داده مي شود تفاوت دارد .

 


 


 


 


شکل 7-1- نمونه اي از Option button

 

2-6-1- caption 

 

به نام نمايشي فرم اطلاق مي شود که روي فرم يا کنترل به هنگام اجراي برنامه نشان داده مي شود.

 


 

3-6-1- top 

 

فاصله کنترل از بالاي فرم را مشخص مي کند .

 

در اين پروژه فاصله کنترل ها از بالاي فرم در روال رويداد form load تنظيم شده است تا در تنظيمات مختلف صفحه نمايش جاي کنترل ها تغيير نکند .

 


 

4-6-1- width

 

عرض يا پهناي کنترل يا فرم را نشان مي دهد .

 


 

5-6-1- height 

 

ارتفاع يا بلندي کنترل مورد نظر را نشان مي دهد .

 


 

6-6-1- left 

 

فاصله کنترل از سمت چپ را مشخص مي کند . اگر اين خاصيت در قسمت فرم لود نوشته شود قابليت هماهنگي با هر تنظيم صفحه نمايشي را دارد .

 


 

7-6-1- border style 

 

اين خاصيت نوع پنجره فرم را نمايش مي دهد و مي توان با استفاده از آن دکمه هاي لازم مانند MAX و MIN و ... را استفاده کرد يا از کار انداخت .

 


 

8-6-1- window state 

 

بوسيله اين خاصيت مي توان حالت ظاهر شدن پنجره فرم را در صفحه تعيين کرد .

 

اين حالات شامل بزرگ و کوچک و معمولي است .

 

در اين پروژه همه فرم ها در حالت  MAX ظاهر مي شوند .

 


 

7-1- Event Procedure 

 


 


شکل 8-1- روال رويداد form load

 


 

روال رويداد عبارتست از عملي که کاربر باعث آن مي شود به عبارت ديگر هر کاري که کاربر انجام مي دهد مانند کليک کردن يک دکمه يا فشردن يک کليد صفحه کليد يا کليک

 

ماوس که همه اينها يک رويداد محسوب مي شود و برنامه اي که براي اين رويداد نوشته مي شود را روال رويداد مي گويند .

 

در شکل 8-1 به عنوان مثال محل نوشتن روال رويداد form load  را مي بينيم :

 


 

8-1- رويداد هاي مهم 

 

1-8-1- load

 

وقتي فرم در حافظه بار گذاري شود و وارد حافظه سيستم شد مي توان فرم را مشاهده کرد و اين رويداد اتفاق مي افتد .

 

تنظيم محل کنترل ها روي فرم در اين روال تعيين مي شود .

 


 

2-8-1- click 

 

اگر روي يک قسمت خالي فرم کليک کنيم اين رويداد و اگر فوکوس در اختيار فرم نباشد رويداد activate همزمان اتفاق مي افتد .

 

به عنوان مثال در زير يک روال رويداد مربوط به حذف يک رکورد در اين پروژه را مشاهده

 

مي کنيد  :

 


 


 

Private Sub Command3_Click ( )

 

     a1.Recordset.Delete

 

     a1.Refresh

 

End Sub

 

3-8-1- dblclick 

 

دو بار کليک کردن روي فرم يا کنترل ها باعث اتفاق افتادن اين رويداد مي شود .

 


 

4-8-1- activate 

 

اگر فرم فوکوس را در اختيار بگيرد يا از فرمي به فرم ديگر حرکت کنيم اين رويداد حاصل مي شود .

 


 

5-8-1- deactivate 

 

وقتي فرم فوکوس را از دست بدهد اين رويداد اتفاق مي افتد .

 

 

 

6-8-1- resize 

 

بر اثر تغيير اندازه فرم اين رويداد اتفاق مي افتد .

 


 

7-8-1- unload 

 

اگر فرم را از حافظه خارج کنيم اين رويداد اتفاق مي افتد .ضمنا بايد در پايان برنامه تمام فرم ها را از حافظه خارج مي کند .

 

در زير استفاده از اين رويداد را در پروژه مي بينيم :

 


 

Private Sub Form_Unload(Cancel As Integer)

 

   Unload Form1

 

End Sub

 


 

8-8-1- change 

 

اين رويداد بيشتر مخصوص جعبه متن و ليست هاي کشويي  است و وقتي اتفاق

 

مي افتد که در محتويات جعبه متن تغييري رخ دهد .

 

در پروژه از اين رويداد براي نشان دادن روز تشکيل کلاس به صورت متن که در جدول

 

به صورت عدد ذخيره شده است به کار رفته است .

 


 

Private Sub Combo1_Change ()

 

If b <> 1 Then

 

Select Case Combo1.Text

 

Case 0:

 

Combo1.Text = "شنبه"

 

Case 1:

 

Combo1.Text = "يکشنبه"

 

Case 2:

 

Combo1.Text = "دو شنبه"

 

Case 3:

 

Combo1.Text = "سه شنبه"

 

Case 4:

 

Combo1.Text = "چهارشنبه"

 

Case 5:

 

Combo1.Text = "پنج شنبه"

 

Case 6:

 

Combo1.Text = "جمعه"

 

End Select

 

End If

 

b = 0

 

End Sub

 


 


 

در شکل 9-1 تعدادي از رويداد هاي فرم را مي بينيم :

 


 


 


 


شکل 9-1- تعدادي از رويداد هاي فرم

 

9-1- مفاهيم بنيادي VB

 

درVB شئ (Object) هاي بسياري وجود دارد مانند فرمها، دکمه ها، برچسب ها، تصاوير و ... .

 

 همانطور که مي دانيم هر شئ(Object) داراي يک سري مشخصات(Properties) مي باشد. به عنوان مثال اگر يک اتومبيل را به عنوان يک شئ در نظر بگيريم، اين اتومبيل داراي مشخصاتي چون رنگ خاص، وزن خاص، طول و عرض و ارتفاع خاص، ميزان خاص مصرف بنزين و ... مي باشد که در تمايز دو اتومبيل از هم، همين مشخصات هستند که به ما کمک مي کنند.

درVB نيز هر Object داراي يک تعداد مشخصه (Property) مي باشد.

 

 به عنوان مثال يک دکمه(Button) داراي مشخصاتي چون عرض(Width) و ارتفاع(Height) خاص و يا يک عنوان(Caption) خاص و ... مي باشد.
برخي شئ (object) ها درVB، فقط در کدنويسي قابل دسترسي هستند (مانند شئ ADODB ) .

 

 اما برخي ديگر علاوه بر زمان کدنويسي، در زمان طراحي (Design) نيز مي توان آنها را بر روي فرمها و در جاي دلخواه قرار داد و آنها را تنظيم (Set) نمود.

 

به اشياء نوع اخير، کنترل (Control) گفته مي شود.
کنترل ها خود دو گونه اند، برخي علاوه بر زمان طراحي (Design) در زمان اجرا (Run Time) نيز ديده مي شوند، به اين نوع کنترل در اصطلاح

 

(Visual Control) VCL  گفته مي شود که بيشترين انواع کنترلها را در بر مي گيرند (مانند دکمه ها، جدولها، برچسبها و بسياري ديگر که در ادامه خواهند آمد) .

 

 اما برخي ديگر از کنترل ها فقط در هنگام طراحي (Design) ديده مي شوند و در هنگام اجرا تنها عمل خاصي انجام مي دهند و خود ديده نمي شوند (مانند کنترلTimer) .

 

 به اين نوع کنترلها، Non-Visual Control گفته مي شود. بايد توجه داشته باشيدکه کنترلهاي Non-Visual، ذاتاً در Run Time ديده نمي شوند ولي ممکن است بنابر نيازي و در زماني خاص از اجرا، خودمان براي يک يا چند VCL نيز مقدار مشخصه Visual آنها را برابر False قرار دهيم که مسلماً در اين حالت با وجود اينکه در آن زمان، اين کنترلها ديده نمي شوند ولي VCL بودن آنها تغييري نکرده است .
کنترل ها (اعم ازVCL ها و غير آن) معمولاً داراي تعدادي Event مي باشند. Event ، رويداد يا رخدادي است که توسط کاربر و معمولاً با استفاده از ماوس يا صفحه کليد براي يک کنترل خاص روي مي دهد.

 

مثلاً يک کنترل ممکن است داراي رويداد (Event Click ) باشدکه اين نوع رويداد زماني که کاربر در هنگام اجراي برنامه (Run Time) بر روي آن کنترل خاص کليک نمايد رخ مي دهد.

 

برخي Event هاي معمول ديگر براي کنترلها عبارتند از :Double-Click (زماني که بر روي آن کنترل دابل کليک شود) ، Mouse Move (زماني که نشانگر ماوس بر روي آن کنترل قرار دارد) ، Key Press (زماني که کليدي از صفحه کليد زده شد) ، Key Down (زماني که کليدي از صفحه کليد پايين بود) ، Key Up (زماني که کليد زده شده برداشته شد) ، Mouse Down ، Mouse Up و ... که در ادامه با آنها بيشتر آشنا خواهيم شد.
براي هر Event (رويداد) مي توان يک Event Procedure داشت.

 

 Event Procedure پاسخي است که يک کنترل زماني که يک Event رخ مي دهد، از خود نشان مي دهد.

 

در واقع Event قطعه برنامه اي است که زماني که بر روي يک کنترل، يک Event رخ مي دهد، به طور اتوماتيک اجرا مي شود.
کنترلها معمولاً علاوه بر يک سري مشخصات (Properties) و يک سري رويداد (Event) داراي تعدادي نيز متد (Method) مي باشد.

 

متدها عملياتهاي تعريف شده اي هستند که توسط آنها يک عمل خاص بر روي کنترلها انجام مي شود.
توجه داريم که تفاوت متدها و Event Procedure ها در اين است که متدها توسط VB شناخته شده اند و عملشان هميشه ثابت است، اما Event Procedure ها توسط برنامه نويس و به دلخواه او تهيه مي شود.

 

 بنابراين Method هاي مشابه بر روي کنترلهاي متفاوت، پاسخ مشابهي دارد ولي ممکن است Event هاي مشابه بر روي کنترلهاي متفاوت با توجه به Event Procedure هاي مخصوص هر يک، متفاوت باشد

 

مثلاً رويداد Click براي يک کنترل، کاري انجام دهد و براي کنترلي ديگر، کاري ديگر .
نکته ديگري که بايد به آن توجه داشت اينست که Procedure ها به طور مستقيم اجرا نمي شوند بلکه فقط زماني که نامشان فراخواني شود اجرا مي شوند.

 

 بنابراين مثلاً در مورد Event Procedure ها بايد بدانيم که با اينکه کد مربوط به آنها نوشته شده است ولي تا وقتي که آن Event خاص (که باعث فرا خواني Event Procedure مربوط مي شود) روي ندهد، اين کدها اجرا نخواهند شد.

 


 

10-1- انواع داده هاي  VB

 

در اين قسمت انواع مختلف متغيير ها را که در VB قابل استفاده است بيان مي کنيم.

 


 

Integer 

 

اعداد صحيح بدون نقطه اعشاري .

 

به اندازه 2 بايت يعني اعداد بين  32767 تا 32768 .

 


 

Decimal 

 

اعداد با نقطه اعشاري . در اعداد اعشاري بايد حتما نقطه اعشاري وجود داشته باشد حتي اگر عدد بعد از اعشاري صفر باشد .به اندازه 12 بايت است .

 


 

Byte 

 

معادل يک بايت در کامپيوتر است .

 


 

Long 

 

اعداد صحيح دو برابر Integer يعني 4 بايت .

 


 

Single 

 

معادل 8 بايت است .

 


 

Double 

 

معدل 8 بايت در کامپيوتر است .

 


 

Currency 

 

داراي قابليت نگهداري اعداد تا 4 رقم اعشار و اندازه آن 8 بايت است .

 


 

String 

 

مي تواند داراي طول ثابت يا متغيير باشد .

 

اگر طول ثابت را انتخاب کنيم حداکثر مي تواند 65400   کاراکتر را شامل شود .

 

اما در طول متغيير قابليت نگهداري 2 ميليارد کاراکتر را دارد .

 


 

Date 

 

براي نگهداري تاريخ استفاده مي شود و قابليت نگهداري 8 بايت را دارد .

 


 

Boolean 

 

2 بايت گنجايش دارد و فقط مقادير  True و False  را مي پذيرد .

 


 

Object 

 

براي برنامه نويسي شيئ گرا مي باشد .

 

معادل شيئ تعريف شده است و اندازه اش 4 بايت است .

 


 

Variant 

 

دو نوع عددي و متني دارد که در نوع عددي هر عددي را از نوع Double در نظر مي گيرد اما در نوع متني مقدار آن متناسب با طول متن است .

 


 

شکل تعريف متغيير ها که در قسمت General برنامه مي آيد به شکل زير است  :

 


 

Dim نام متغيير     As   نوع متغيير

 


 

Dim month, sum As Double

 


 

11-1- دستور If 

 

شکل کلي دستور  If به صورت زير است  :

 


 

If   شرط   Then

 

دستورات    

 

Else

 

دستورات    

 

End If

 


 

If z = 1 Then

 

a2.Recordset.Delete

 

Else

 

a2.Refresh

 

End If

 

12-1- انتخاب با Select Case   

 

بهترين روش براي بررسي چند شرط در مورد يک متغيير استفاده از اين دستور است .

 

در حقيقت اين دستور جايگزين چند If مي شود .

 

شکل کلي استفاده از آن در زير آمده است   :

 


 

Select case  نام داده

 

Case  مقدار 1

 

دستور 1

 

Case  مقدار 2

 

دستور 2

 

.....

 

Case Else

 

n دستور

 

End Select

 


 


 


 

در اين پروژه نيز از اين دستور در موارد بسياري استفاده شده است که نمونه از آن را در زير مشاهده مي کنيد  :

 


 

Select Case Combo1.Text

 

Case "شنبه" :

 

Combo1.Text = "0"

 

Case "يکشنبه " :

 

Combo1.Text = "1"

 

Case "دوشنبه " :

 

Combo1.Text = "2"

 

Case "سه شنبه " :

 

Combo1.Text = "3"

 

Case "چهارشنبه" :

 

Combo1.Text = "4"

 

Case "پنجشنبه " :

 

Combo1.Text = "5"

 

Case "جمعه" :

 

Combo1.Text = "6"

 

End Select

 


 

در اين قسمت براي ذخيره کردن روز کلاس ها در بانک اطلاعاتي از اين دستور استفاده شده است تا ايام هفته را به عدد متناظر آن تبديل کند .

 


 

13-1- تکرار با استفاده از حلقه 

 

با استفاده از حلقه تکرار مي توان تعدادي دستور را به تعداد بار دلخواه تکرار کرد .

 

در زير انواع حلقه را با ذکر مثال توضيح مي دهيم  :

 


 

1-13-1- دستور Do  

 

اگر شرط حلقه در ابتدا باشد ممکن است حلقه هرگز اجرا نشود اما اگر تست حلقه در انتهاي حلقه باشد حلقه حداقل يک بار اجرا مي شود .

 

حلقه do  داراي چند شکل مختلف است که آنها را مي بينيم  :

 


 

Do While  شرط

 

يک يا چند دستور      

 

Loop

 

 

 

Do

 

يک يا چند دستور

 

Loop While  شرط

 


 

Do Until  شرط

 

 يک يا چند دستور

 

Loop

 


 

Do

 

يک يا چند دستور

 

Loop Until  شرط

 


 

حلقه هايي که  While  دارند تا هنگامي که تست حلقه درست باشد اجرا مي شود اما در حلقه هاي  Until  اگر شرط درست شود اجراي حلقه پايان مي يابد .

 

در زير قسمتي از اين پروژه که از حلقه استفاده شده است را مي بينيد  :

 


 

Do Until a2.Recordset.EOF = True

 

If teb < CInt(Text12.Text) Then

 

teb = CInt(Text12.Text)

 

End If

 

a2.Recordset.MoveNext

 

Loop

 

2-13-1- استفاده از  Step

 

با استفاده از  Step تعداد گام هاي حلقه را بيشتر و يا کمتر قرار داد .

 

به عنوان مثال  :

 

For  I = 1  To  100  Step  5

 

B = B + I

 

Next

 

در اين حلقه به متغيير  I  در هر بار اجراي حلقه  5 واحد اضافه مي شود .

 


 

3-13-1- حلقه  For

 

شکل کلي اين حلقه به صورت زير است و مثالي از آن را در بالا مشاهده مي کنيد  :

 

For  متغيير = مقدار اوليه  To  مقدار پاياني

 

دستورات

 

Next

 

در زير مثالي از اين دستور را که در پروژه به کار رفته است مي بينيم  :

 

For I = 1 To 12

 

If Text1 (I).Back Color = &HC0FFFF Then

 

MsgBox (" لطفا بعد از رفع اشتباه دوباره سعي کنيد ")

 

Go To ee

 

End If

 

Next

 

14-1- ارتباط با کاربر 

 

1-14-1- تابع  Msg box  و   Input box

 

از تابع Msg Box براي ارسال يک پيغام به کاربر و يا مطرح نمودن يک پرسش و دريافت جواب مثبت يا منفي او به سؤال مطرح شده و از تابع Input Box براي دريافت يک عبارت از کاربر، استفاده مي‌شود.

 

توابع مذکور را مي‌توان مانند دستور نوشت، يعني نام يکي از آن دو را و با يک فاصله پارامترهاي احتمالي آنها را نوشت. همچنين مي‌توان آنها را مانند يک Function به VB معرفي کرد. (يعني اين توابع داراي مقدار بازگشتي باشند) که براي اين منظور بايد پارامترهاي آنها را داخل پرانتز نوشت.

 

تابع Msg Box يک جعبه پيام را در موقع فرا خواني بر روي صفحه ظاهر مي کند .

 

اين تابع حداقل شامل يک آيکون  يک پيام و يک دکمه است .

 

در شکل 10-1 نمونه اي از اجراي اين تابع را که در پروژه بکار رفته است مي بينيم :

 

 

 

شکل کلي اين تابع به صورت زير است  :

 

Int response  =  Msgbox (  Str prompt  ,  [ Buttons ]  ,  [ Title ]  , 

 

[ Help File ]  ,  [ Context ]  )

 


 

که در اين تابع  Int response  مقدار برگشتي تابع است .

 

Str prompt  يک آرگومان اجباري و پياميست که در جعبه پيغام نشان داده مي شود .

 

Button که مي توان دکمه هاي مورد نظر و علامت موردنظر براي Message Box را در آن

 


 


شکل 10-1- اجراي تابع  Msg box

 

تعيين نمود. برخي از مقادير مهمي که مي توان در اين پارامتر قرار داد عبارتند از :

 

VBOKOnly - کادر مذکور فقط داراي دکمه OK خواهد بود.

 

VBOKCancel- کادر مذکور داراي دکمه هاي OK و Cancel خواهد بود.

 

VBYesNo- کادر مذکور داراي دکمه هاي Yes و No خواهد بود.

 

VBYesNoCancel- کادر مذکور داراي دکمه هاي Yes و No و Cancel خواهد بود.

 

VBAbortRetryIgnore- کادر مذکور داراي دکمه هاي Abort و Retry و Ignore خواهد بود.

 

VBRetryCancel- کادر مذکور داراي دکمه هاي Retry و Cancel خواهد بود.

 

VBMsgBoxRight- در کادر مذکور Title را راست چين مي‌کند.

 

VBMsgBoxRtlReading- کادر مذکور را راست به چپ (Right to Left) مي‌کند (و براي پيغام هاي فارسي مناسب است)

 

VBCritical- يک علامت در کنار کادر اضافه خواهد شد.

 

VBExclamation- يک علامت در کنار کادر اضافه خواهد شد.

 

VBInformation- يک علامت در کنار کادر اضافه خواهد شد.

 

VBQuestion- يک علامت در کنار کادر اضافه خواهد شد.

 

 آرگومان سوم عنوان و آيکون جعبه پيام را مشخص مي کند .

 

آرگومان چهارم براي استفاده کاربر از کمک در هنگام اجراي برنامه است .

 

مي توان آنهايي را که با هم تداخلي ندارند با علامت + با هم ترکيب کرد. مثلاً اگر بخواهيم که هم دکمه هاي OK و Cancel بيايند و هم در کنار پيغام، علامت آن بيايد و هم Title راست چين شود، مي توان در اين پارامتر چنين نوشت :

 

VBOKCancel + VBInformation + VBMsgBoxRight

 


 

15-1- آرايه اي از کنترل ها  

 

يکي از الفاظي که در برنامه نويسي، از آن بهره بسياري مي بريم ، آرايه مي باشد. آرايه ها معمولاً خانه هايي از حافظه اند که تحت يک نام واحد و با انديس هاي متفاوت نامگذاري مي شوند.

 

 در Basic هم آرايه ها (مانند ساير زبانهاي برنامه نويسي) کاربرد فراواني دارند که مثلاً توسط دستور Dim A (10, 10) As Integer يک آرايه دو بعدي (در واقع يک ماتريس) به نام A از نوع داده Integer تعريف مي شود که سطر و ستون آن داراي انديس هاي 0 تا 10 مي باشد و توسط مثلاً A (5, 8) به خانه سطر 5 و ستون 8 از آن دسترسي خواهيم يافت.

 

در VB نيز (از آنجا که VB از Basic براي کدنويسي استفاده مي کند) ، آرايه ها، تعريف آنها و نحوه دسترسي به خانه هاي آن به طريق فوق مي باشد.

 

 اما آنچه در اينجا متفاوت است اينکه در VB مي توان از کنترل ها نيز يک آرايه ساخت. مثلاً چند Command Button با يک نام خاص و با انديسهاي متفاوت ايجاد کرد تا بتوان کدهاي واحدي را با تفاوت بسيار کم براي همه شان نوشت.

 

اگر از يک کنترل کپي کنيم (در حالي که فوکوس در Design Time به آن است، کليدهاي CTRL+C را فشار دهيم) و سپس آن را در همان فرم Paste نماييم (کليدهاي CTRL+V را فشاردهيم) ، پيغامي بر روي صفحه نمايش ظاهر مي‌شود مبني بر اينکه "يک کنترل ديگر با همين نام در فرم وجود دارد، آيا مي خواهيد آرايه اي از کنترل ايجاد کنيد؟" که مي توانيد جواب No به آن بدهيد.

 

 اما اگر به اين پيغام دکمه Yes را پاسخ دهيد، VB به طور خودکار نام هر دو را يکسان (و به نام کنترل کپي شده) در نظر مي گيرد و Index کنترل اول را صفر و Index کنترل دوم را يک قرار مي دهد (Index ، يکي از مشخصه (Property)هاي تمام کنترل ها مي باشد).

 

مي توان اينکار را دستي نيز انجام داد.

 

يعني دو کنترل (يا چند کنترل) خاص را يک نام واحد دهيم که در اينصورت VB پس از دادن يک پيغام مبني بر همين موضوع، آن دو کنترل (يا چند کنترل) را به صورت آرايه کنترل تبديل خواهد کرد و به هر يک Index خاصي را نسبت خواهد داد.

 

اگر آرايه کنترل ايجاد کنيم، هر رويداد (Event) اي که بر روي هريک از عناصر رخ دهد (مانند Click و غيره) ، روي تمام آرايه صورت مي گيرد و مقدار Index مربوط به عضوي که رويداد بر روي آن صورت گرفته، به عنوان يکي از پارامترهاي پروسيجر آن، باز مي گردد .

 


 


شکل 11-1- آرايه اي از کنترل ها

 

16-1- پايگاه داده ها در  VB  

 

1-16-1- آشنايي با ADO  

 

اين مدل از ساير مدل هاي پايگاه داده کوچکتر است .

 

با ADO   مي توان سريعا رکورد ست ها را ايجاد نمود . حتي مي توان بعد از ايجاد رکورد ست اتصال پايگاه داده را قطع نمود و پس از اعمال تغييرات در آن دوباره به پايگاه داده متصل شده و رکورد ست تغيير يافته را به آن ارسال کرد .

 

ADO  براي کار با داده ها بجاي ODBC   از واسط  OLE DB    استفاده مي کند .

 

 بنابراين بوسيله  ADO  مي توان به منابع داده اي غير  SQL  و حتي سرويس هاي

 

شبکه هم متصل شد .

 


 

2-16-1- اشيا در مدل  ADO 

 

در مدل ADO  تنها سه شيئ اصلي وجود دارد  :

 
  1. شيئ  Connection  که همان اتصال به پايگاه داده است .
  2. شيئ  Command    که براي اجراي جستجو بکار مي رود .
  3. شيئ   Recordset   که همان رکورد ست خروجي جستجوي شيئ Command است.
 

OLE DB يک روش کاملا جديد براي اتصال به منابع داده است.

 

انعطاف پذيري و سهولت کاربرد OLE DB  بسيار بيشتر از  ODBC  است .

 

درايور  ODBC  در واقع يک مترجم بين پايگاه داده و برنامه است .

 

در  OLE DB  اين واسط ارائه کننده يا   Provider   ناميده مي شود .

 

در زير تعدادي از ارائه کنند گان   OLE DB   براي انواع مختلف پايگاه داده را مي بينيد  :

 
  • ارائه کننده  OLEDB  براي درايور هاي  ODBC
  • ارائه کننده  OLEDB  براي موتور Jet 3.51
  • ارائه کننده  OLEDB  براي موتور Jet 4
  • ارائه کننده  OLEDB  براي  Oracle
  • ارائه کننده  OLEDB  براي  SQL Server
  • ارائه کننده  OLEDB  براي سرويس هاي دايرکتوري
 


 

3-16-1- خواص  ADO 

 
  • Connection String
  • Command Text
  • Command Type
  • Cursor Location
  • Cursor Type
  • Lock Type
  • Mode Type
 

 

 

4-16-1- Connection String 

 

براي مشخص کردن ارائه کننده  OLEDB  اتصال منبع داده و نيز ساير جزئيات مورد نياز از اين خاصيت استفاده مي شود .

 

اين خاصيت داراي دو بخش است  :

 

Provider  =  نام ارائه کننده

 

Data Source  =  آدرس منبع داده

 


 

5-16-1- Command Text 

 

اين خاصيت جستجويي را که بايد براي استخراج داده ها اجرا شود مشخص مي کند .

 

اين خاصيت قابليت کار با زبان هاي غير  SQL   را هم دارد .

 


 

6-16-1- Command Type 

 

در اين خاصيت نوع جستجو را مشخص مي کنيم .

 

مقدار پيش فرض اين خاصيت  adCmdUnknown    است .

 

مقادير قابل قبول اين خاصيت را در زير مي بينيد  :

 
  • adCmdText - مقدار موجود در Command Text متن فرمان مورد نظر است .
  • adCmdTable - مقدار موجود در Command Text نام جدوليست که جستجوي SQL همه ستونهاي آن را بر مي گرداند .
  • adCmdStoredProc - مقدار موجود در Command Text يک روال ذخيره شده است.
  • adCmdUnknown - نوع فرمان موجود در Command Text نا معلوم است .
  • adCmdFile - مقدار موجود در Command Text نام يک فايل رکورد ست است .
 

 

شکل 12-1- گزينه هاي Command Type

 


 
  • CdCmdTableDirect - مقدار موجود در Command Text نام جدوليست که همه ستونهاي آن برگردانده خواهد شد .
 

 

 

7-16-1- Cursor Location 

 

در اين مدل مي توان مديريت کرسر را در سمت ميزبان يا در سمت مشتري انجام داد.

 

در ADO کرسر مجموعه ايست از رکورد ها که با اجراي يک درخواست به برنامه برگردانده مي شود .

 

با اين خاصيت مي توان محل نگهداري اين رکورد ست را تعيين کرد .

 

در زير مقادير اين خاصيت را مي بينيد  :

 
  • adUseClient - از کرسر سمت مشتري که توسط کتابخانه کرسر محلي عرضه مي شود استفاده مي کند .
  • adUseServer - از کر سرهايي که توسط ارائه کننده يا درايور عرضه مي شوند استفاده مي کند .
 


 

 

شکل 13-1- گزينه هاي Cursor Location

 

 

 


 
  • adClientBatch - اين نوع همان کرسر سمت مشتري است که صرفا به منظور حفظ سازگاري با ويرايش هاي قبلي بکار مي رود .
  • adUseNone - از هيچ کر سري استفاده نمي شود .
 


 

8-16-1- Cursor Type 

 

اين خاصيت نوع رکورد ستي را که توسط ارائه کننده برگردانده مي شود مشخص

 

مي کند .

 

در صورت استفاده از کرسر سمت مشتري تنها مي توان از کرسر ايستا استفاده کرد .

 

همه ارائه کننده ها قادر به استفاده از همه انواع کرسر ها نيستند .

 

در زير گزينه هاي قابل استفاده را مي بينيم  :

 
  • adOpenForwordOnly - يک رکورد ست با کرسر يک طرفه ايجاد مي کند .
 

اين کرسر فقط مي تواند رو به جلو حرکت کند .

 
  • adOpenKeyset - يک رکورد ست با کرسر مجموعه کليد ايجاد مي کند .
 

اين رکورد ست داراي عضويت متغيير است و تغييراتي که توسط ساير کاربران انجام مي شود در آن منعکس خواهد شد .

 

رکورد هاي حذف شده توسط ساير کاربران از دسترس شما خارج خواهد شد .

 

رکوردهايي که توسط ساير کاربران اضافه شوند در دسترس شما قرار نخواهند

 

 داشت .

 
  • adOpenDynamic - اين کرسر يک کرسر پويا است .
 

اين رکوردست نيز داراي عضويت متغير است . همه تغييرات رکورد هاي اضافه يا حذف شده توسط ساير کاربران در دسترس شما هم قرار خواهند داشت .

 
  • adOpenStatic - اين کرسر يک کرسر ايستا ست .
 

رکورد ست حاصل کپي رکوردهاي مورد نياز است که مي توان در آن به جلو يا عقب حرکت کرد .

 

تغييرات در اين رکورد ست منعکس نمي شود .

 


 


شکل 14-1- گزينه هاي Cursor Type

 

9-16-1- Lock Type 

 

مي توان نوع قفل مورد استفاده در عمليات ويرايش و به روز رساني رکورد ست را تعيين کرد . همه ارائه کننده ها قادر به استفاده از همه انواع قفل ها نيستند .

 

اگر ارائه کننده درخواستي قادر به کار با قفل در خواستي نباشد قفل ديگري جايگزين قفل درخواستي مي شود .

 

در زير گزينه هاي اين خاصيت را مي بينيم  :

 
  • adLockReadOnly - اين گزينه مقدار پيش فرض فقط خواندني است .
 

امکان دستکاري رکورد ست وجود ندارد .

 
  • adLockPessimistic - اين قفل قفل بدبينانه است .
 

رکورد ها به محض شروع ويرايش قفل مي شوند .

 
  • adLockOptimistic - قفل خوشبينانه است .
 

رکورد ها تنها در هنگام به روز رساني رکورد ست قفل مي شوند .

 
  • adLockBatchOptimistic - اين قفل قفل خوشبينانه دسته اي است .
 

هنگام اجراي متد  UpdateBatch  روي رکورد ست ارائه کننده تمامي دسته را قفل مي کند .

 


شکل -151- گزينه هاي Lock Location

 

10-16-1- Mode Type 

 

اين خاصيت محدوديت هاي دسترسي به داده هاي رکورد ست را مشخص مي کند .

 

منبع در زمان باز کردن رکورد ست با توجه به مقدار اين خاصيت محدوده دسترسي به آن را تعيين مي کند .در زير گزينه هاي اين خاصيت را مي بينيم  :

 
  • adModeUnknown - اين مقدار پيش فرض است .
 

نشان دهنده آن است که مجوز ها هنوز مشخص نشده اند و يا قابل تعيين نيستند .

 
  • adModeRead - رکورد ست با مجوز فقط خواندني باز مي شود .
  • adModeWrite - رکورد ست با مجوز فقط نوشتن باز مي شود .
  • adModeReadWrite - رکورد ست با مجوزهاي خواندن / نوشتن باز مي شود .
  • adModeShareDenyRead - ساير کاربران اجازه نخواهند داشت اتصال را با مجوز خواندن باز کنند .
  • adModeShareDenyWrite - ساير کاربران اجازه نخواهند داشت اتصال را با مجوز نوشتن باز کنند .
  • adModeShareExclusive - ساير کاربران اجازه نخواهند داشت اتصال را باز  کنند .
  • adModeShareDenyNone - ساير کاربران اجازه نخواهند داشت اتصال را با هيچ مجوزي باز کنند .
 



 

شکل-16 1- گزينه هاي Lock Location

 

11-16-1- متدهاي کنترل داده  ADO 

 
  • Refresh - جستجو را مجددا انجام داده و ديتاست را بازسازي مي کند .
  • UpdataControls - مقادير موجود در فيلد هاي رکورد ست را مجددا به کنترل هاي داده – پيوند مي فرستد و آنها را به روز در مي آورد .
 

از متد جاري به عنوان يک دستور لغو فرمان استفاده مي شود .

 


 

12-16-1- رويداد هاي کنترل داده  ADO 

 

اين کنترل داراي 11 رويداد است که در زير آنها را مي بينيم .

 

اين کنترل ها در چند گروه دسته بندي مي کنيم  :

 
  1. پر کردن رکورد ست  :
 

FetchProgress - در جريان عمليات طولاني استخراج رکورد ست اين رويداد متناوباً روي مي دهد .

 

با استفاده از اين رويداد مي توان ميزان پيشرفت کار را در حين پر شدن رکورد ست نشان داد .

 

FetchComplete - با پايان يافتن عمليات استخراج رکورد ست اين رويداد تحريک مي شود .

 

با استفاده از اين رويداد مي توان پس از عمليات طولاني تکميل شدن کار را به کاربر اطلاع داد .

 
  1. جابجايي در رکورد ست  :
 

WillMove - قبل از جابجا شدن اشاره گر از رکوردي به رکورد ديگر اين رويداد تحريک مي شود .

 

MoveComplete - پس از جابجا شدن اشاره گر و انتقال آن از يک رکورد به رکورد ديگر اين رويداد رخ مي دهد .

 

EndOfRecordset - اگر اشاره گر رکورد از آخرين رکورد نيز بگذرد اين رويداد رخ خواهد داد .

 
  1. تغيير دادن رکورد ست  :
 

WillChangeRecordset - قبل از آن که رکورد ست تغيير کند اين رويداد رخ مي دهد .با استفاده از اين رويداد مي توان از تغييرات نا خواسته در رکورد ست جلوگيري کرد .

 

RecordsetChangeComplete - پس از انجام هر تغيير در رکورد ست اين رويداد روي مي دهد .

 

با چک کردن پارامتر  Status  مي توان از موفقيت آميز بودن عمليات  اطلاع يافت .

 
  1. تغيير در سطر ها  :
 

WillChangeRecord - قبل از ارسال مقادير جديد يک سطر به منبع داده اين رويداد روي مي دهد .

 

RecordChangeComplete - اين رويداد پس از ارسال شدن مقادير جديد يک سطر به منبع داده روي مي دهد .

 
  1. تغيير در فيلد ها  :
 

WillChangeField - اين رويداد قبل از به روز در آوردن فيلد جاري در رکورد ست روي مي دهد .

 

FieldChangeComplete - پس از به روز در آمدن فيلد جاري رکورد ست اين رويداد روي مي دهد .

 

بيشتر اين رويداد ها به صورت دو حالتي قبل از انجام و پس از انجام هستند .

 


 

13-16-1- استفاده از ديالوگ براي تنظيم خاصيت  Connection String 

 

اين خاصيت را مي توان با استفاده از يک سري ديالوگ تنظيم کرد .

 

در زير روش ست کردن اين خاصيت را مي بينيد  :

 

ابتدا بر روي اتصال راست کليک مي کنيم ) شکل-17 1(:

 


 


 


شکل-17 1- راست کليک روي ADODC

 


 

بروي خاصيت  ADODC Properties  کليک مي کنيم تا صفحه اي که در شکل-18 1 مي بينيم باز شود  :

 


 


شکل-18 1- پنجره  ADODC Properties 

 


شکل-19 1-انتخاب نوع ارائه کننده

 


 

سپس روي دکمه  Build  کليک مي کنيم  تا صفحه شکل-19 1 باز شود  :

 

در اين صفحه نوع ارائه دهنده مورد نظر را انتخاب مي کنيم .

 

براي اين پروژه از ارائه کننده   Microsoft OLE DB Provider for SQl Server

 

 استفاده مي شود .

 

پس از آن روي دکمه  Next  کليک مي کنيم و صفحه شکل-20 1 باز مي شود  .

 

در اين صفحه که  Connection  نام دارد گزينه هاي زير را کامل مي کنيم   :

 

در گزينه 1 نام سرور مورد نظر را انتخاب مي کنيم و در صورتي که نام سرور مورد نظر در ليست نباشد با اسم آن را خودمان وارد کنيم .

 

در گزينه 2 در مورد نحوه وصل شدن به سرور سوال مي شود .

 

در صورتي که سرور ما فاقد رمز باشد گزينه 1 و در غير اين صورت گزينه 2 را انتخاب مي کنيم .

 


شکل-20 1- صفحه Connection 

 

سپس در گزينه 3 نام  Data Base  مورد نظر خود را بر روي  Server    مورد نظر انتخاب مي کنيم .

 

با کليک روي گزينه  Test Connection  مي توانيم از صحت اتصال به  Server   آگاه شويم .

 


شکل-21 1- پيغام Test Connection 

 


شکل-22 1- پنجرهProperties  ADODC

 

سپس با کليک دکمه  Ok  به اين قسمت پايان مي دهيم .

 

پس از آن در قسمت  Properties ADODC  گزينه   Record Source  را انتخاب مي کنيم  :

 

 و صفحه شکل-23 1 باز مي شود   :

 


شکل-23 1- پنجره Record Source

 

اين صفحه داراي چند خصوصيت است که در زير آنها را بررسي مي کنيم .

 

قسمت  Command Type   داراي 4  گزينه است که اين گزينه ها عبارتند از  :

 
  • adCmdTable
  • adCmdText
  • adCmdStoredProc
  • adCmdUnknown
 


 

انتخاب گزينه اول سبب اين مي شود که   ADO   بفهمد جستجوي ما روي همه ستون هاي يک جدول است .

 

در اين حالت بايد نام جدول را در محل مناسب درج کنيم .

 

انتخاب گزينه دوم  سبب مي شود که   ADO  جستجوي ما روي دستوراتي از  SQL  که ما در محل  Text  مي نويسيم انجام دهد .

 

انتخاب گزينه چهارم باعث نا شناخته ماندن نوع جستجو شود .

 

در شکل-24 1 نمونه اي از آن را در پروژه مي بينيم  :

 


 


شکل-24 1- مثالي از پنجره Record Source

 


 


 


 


 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

در اين فصل مطالبي پيرامون زبان  SQL  و نرم افزار پايگاه داده  SQL Server  بيان شده است .

 

اين فصل شامل 11 بخش است .

 

بخش هاي ابتدايي بيشتر در باره دستورات زبان  SQL  است که از اين دستورات در نرم افزار SQL Server  نيز قابل استفاده مي باشد .

 

اين دستورات که در چند بخش جدا آورده شده است شامل  Select ، Insert ، Delete  است .

 

بخش هاي مياني شامل محيطي از اين نرم افزار به نام  Enterprise Manager  است .

 

در اين محيط ما قادر به ديدن پايگاه داده خود بطور کامل و ديدن جداول و داده هاي خود در محيطي Visual  هستيم .

 

در يکي از بخش هاي اين فصل به طرز استفاده از ابزار  View  پرداخته شده است .

 

اين ابزار يکي از پر کاربرد ترين ابزار هاي اين نرم افزار است زيرا بوسيله اين ابزار امنيت داده هاي خود را کنترل مي کنيم .

 

در بخش هاي پاياني به طرز ايجاد  و استفاده از ديد پرداخته شده است .

 


 


 


 


 


 


 


 


 


 


 


 


 


 

1-2- دستور Select

 

اين دستور كه دستوري مستقل نيست و حتما بايد با اجزايي بكار رود جهت ساخت پرس و جو بر روي بانك اطلاعاتي بكار مي‌رود و ركوردهايي كه با شرايط اين دستور همخوان باشد به عنوان نتيجه پرس و جو برمي‌گرداند .  چهار كلمه كليدي وجود دارند كه بخشهاي ارزشمند اين دستور را تشكيل مي‌دهند  :

 

1- select

 

2- from

 

3- where

 

4- order by

 

شكل كلي دستور  :

 

Select [*|distinct column1, column2,…]

 

From table [, table2,…]

 

Where شرط

 

Order by نام فيلد يا شماره فيلد

 


 

مثال  :

 

Select * from customers

 

اين دستور تمام ركوردهاي جدول customers را برمي‌گرداند.

 

كه نتيجه 91 سطر از اطلاعات اين جدول خواهد بود

 

حال  اگر شرط Country ='uk' اضافه كنيم ، فقط اطلاعات مشتريان انگليس جواب خواهند بود كه به 7 سطر تقليل مي‌يابد.

 

select * from customers

 

where Country ='uk'

 

حال

 

select City,Country from customers

 

order by city

 

فقط ستونهاي نام شهر (city) و نام كشور (Country) را بر گردانده و بر اساس نام شهر مرتب ميكند. دستور بالا با دستور پايين هردو يك جواب را ميدهند  :

 

select City,Country from customers

 

order by 1

 

كه 91 سطر بازگردانده خواهد شد . در نتيجه پرس و جو تعدادي سطر تكراري وجود دارد مانند شهر London  كه اگر از كلمه Distinct‌ در Select  استفاده كنيم اين سطرهاي تكراري حذف خواهد شد .

 

select distinct City,Country from customers

 

order by 1

 

و جواب 69 سطر خواهد بود.

 


 

2-2- استفاده از توابع در Select

 

1-2-2-Count 

 

 تعداد سطرهاي بازگردانده شده توسط select  را ميشمارد.

 

Select Count(*) from Customers

 

where Country ='uk'

 

در اصل تعداد مشترياني را ميشمارد كه در كشور انگليس هستند. كه عدد 7 جواب است.

 


 

2-2-2- Sum 

 

 مجموع يك فيلد عددي را برمي‌گرداند.

 

Select  sum(Quantity)  from [Order Details]

 

where productid = 11

 

مجموع فيلد Quantity  را براي فيلدهايي كه شماره محصول آنها ( Productid) برابر 11 است را محاسبه ميكند .

 

نكته 1  -  در دستور select  مي‌توان از اسم مستعار استفاده كرد ، يعني نام جديدي را براي يك ستون در نظر گرفت  به عنوان مثال select قبل را  به شكل زير بكار برد  :

 

Select  sum(Quantity)  as Sum_QTY

 

from [Order Details]

 

where productid = 11

 

كه Sum_QTY يك اسم مستعار براي مجموع است. استفاده از كلمه كليديas  ‌اختياري است.

 

نكته 2  -  در دستور select  هرگاه اسم فيلدي اسم خاص باشد و يا فاصله بين اسم باشد مثل  Order Details  كه فاصله بين اسم جدول است حتماُ از علامت براكت []  ميبايست استفاده كرد.

 

نكته 3 - استفاده از group by    :

 

هنگامي كه از توابع count ‌   و  Sum  به همراه يك  فيلد ديگر در دستور          select  استفاده مي‌شود از group by    استفاده مي‌كنيم .

 

به عنوان مثال دستور زير جمع مقادير  فيلد  Quantity  را براي هر شماره محصول  محاسبه ميكند .

 

Select  productid, sum(Quantity) as sum_qty

 

from [Order Details]

 

group by  productid

 

 كه نتيجه مانند زير خواهد بود  :

 

productid   sum_qty    

 

----------- -----------

 

61          603

 

3           328

 

32          297

 

6           301

 

41          981

 

64          740

 

9            95

 

12 344

 

در صورتيكه دستور ordr by 1  بعد از group by  استفاده كنيم نتيجه بر اساس كد محصول مرتب خواهد شد.

 


 

نكته 4 - دستور  where   مي تواند خود  شامل  يك دستور select    باشد  :

 

select * from Products

 

where ProductID  in

 

    ( select distinct ProductID from [order details] where Quantity >70)

 

order by ProductID

 

تنها نكته اي كه مي بايست توجه كرد اين است كه نام فيلدي كه در شرط آورده مي شود حتما در دستور select   آورده شود, به عبارت ديگر select   درون شرط تنها يك ستون را مي بايست برگرداند .

 

مثال :  با فرض اينكه دو جدول Products و order details داراي ستون (فيلد) يكسان  ProductID  هستند , يك دستور Select  بنويسيد كه تمام فيلدهايي از Products را نشان دهد كه فيلد ProductID  آن با ProductID  جدول order details يكي باشد.؟

 

حل  : 

 

Select pr.*

 

From  Products  as pr , [order details] as od

 

Where pr. ProductID = od. ProductID

 

قابل به ذكر است كه بيش از 90% از كارهايي كه ما برروي جداول انجام مي دهيم با select  و تركيبات آن انجام مي شود. لذا بدست آوردن تبحر در نوشتن select  ها مي تواند شما را در تهيه برنامه ها ياري كند.

 


 

3-2-2- Min,max 

 

 بيشترين و كمترين مقدار فيلد را در بانك اطلاعاتي بدست مي دهد.

 

Select min (Quantity)

 

from [Order Details]

 


 

4-2-2-Top n  

 

 تعداد n سطر اول بانك اطلاعاتي را برمي گرداند.

 

Select top 5 *

 

from [Order Details]

 

5 سطر اول بانك را برمي گرداند.

 

نكته 3 -  در حالت بالا اگر مقدار سطر 5 و 6 يكي باشد فقط سطر 5 جواب خواهد بود براي گريز از اين حالت از شكل زير در اين دستور استفاده ميكنيم  :

 

Select top n with ties   *

 

From table

 

5-2-2- Into

 

Select * from table1 into table2

 

اطلاعات table1 را به table2 كپي ميكند. البته table2 بايد از قبل وجود نداشته باشد.

 

اين دستور خود table2  را ميسازد.

 

دستور select قويترين و كاربردي ترين دستور در sql است كه خود ماهها نيازمند تمرين و آموزش است . براي اطلاعات بيشتر به books online خود Sql Server  مراجع كنيد.

 


 

3-2- دستور Delete 

 

براي حذف اطلاعات از يك بانك اطلاعاتي استفاده ميشود.

 

شكل كلي دستور  :

 

Delete table1

 

Where شرط

 

مثال  :

 

فرض كنيد جدول authors موجود باشد و فيلد كليد آن au_id باشد. براي حذف 10 سطر اول اين جدول از دستور زير استفاده مي كنيم  :

 

DELETE authors 

 

FROM (SELECT TOP 10 * FROM authors) AS t1

 

WHERE authors.au_id = t1.au_id

 

4-2- دستور insert

 

براي اضافه كردن اطلاعات به يك جدول از اين دستور استفاده ميشود.

 

Insert into table1 (f1,f2,…)

 

Values (v1,v2,…)

 

كه f1,f2  نام فيلدها و v1,v2  مقادير آنها ميباشد.

 

البته ميتوانيد مقادير را نتيجه يك select  قرار داد.

 

مثال  :

 

Insert into table1

 

Select top 10

 

From table2

 

مقدار 10 سطر اول را   از table2 را در table1 درج ميكند. البته بايد تعداد فيلدها يكي باشد. در غير اينصورت از values استفاده كنيد.

 


 

5-2- محيط Enterprise Manager

 

ميتوان گفت قلب Sql Server است. در Enterprise Manager شما ميتوانيد يك اتصال به سرور Sql برقرار كنيد . table بسازيد. User تعريف كنيد و..... (شکل 1-2)

 


 


شکل 1-2- صفحه Enterprise Manager

 

علامت فلش سبز نمايانگر فعال بودن سرور است.

 

سرور ميتواند local باشد مانند بالا و يا يك Sqlserver باشد برروي يك سرور . براي ايجاد يك سرور جديد يا به عبارت ديگر وصل شدن client (ويندوز 98) به يك سرور ديگر بر روي يكي Microsoft Sql Server يا SQL Server Group و يا برروي سرور موجود كليك سمت راست كرده و گزينه New Sql Server Registratin را انتخاب كنيد. سپس كليد next را انتخاب كنيد. سپس در منوي بعدي در available Server نام سرور خود را تايپ كنيد . (نام سرور SQL خود را كه برروي ويندوز 2000 خود نصب كرده ايد) و بعد كليد add را فشار دهيد.و گزينه next را انتخاب كنيد.

 

در پنجره بعد از شما سوال ميكند كه آيا از username ويندوز استفاده كند و يا اينكه از يك username مخصوص خود Sql Server استفاده كنيد. گزينه دوم را انتخاب كرده و سپس Login Name و Password را وارد كنيد. (در حالت پيش فرض sa بعنوان login name و فضاي خالي بجاي Password وارد كنيد.) پس از چند بار فشار كليد next شروع به وصل شدن به Server ميكند. در صورت موفقيت آميز بودن با پيامي اين كار را اطلاع ميدهد.

 

از ديگر گزينه ها شما بيشترين استفاده را از Databases خواهيد كرد.

 

به عبارت ديگر هر كار و پروژه ما بعنوان يك Database در سرور sql قرار ميگرد. همه جداول و دستورات مربوط به آنها در اين محل نگهداري مي شود.

 

با كليك سمت راست برروي Databases و انتخاب New Database... ميتوانيد يك Database جديد براي خودتان بسازيد. (شکل 2-2)

 


 

پس از انتخاب نام آن را تاييد كنيد.

 

هر Database شامل موارد زير است  :

 

Diagram - ارتباط جداول را نشان ميدهد.

 

Tables - جداول پروژه را نشان ميدهد.

 

Views - ديدهاي پروژه را نشان ميدهد.

 


شکل 2-2- پنجره New Database

 


 

Stored Procedure - كدهاي sql مربوط به عملياتهاي روي جداول را نگهداري ميكند.

 

Users - كاربران تعريف شده بر روي اين database را نشان ميدهد.

 

Roles- قوانين دسترسي به جداول و پروسيجرها را نشان ميدهد.

 

Rules - قوانين مربوط به داده ها را در جداول نشان ميدهد.

 

گزينه هاي 7 به بعد كاربرد آنچناني براي كارهاي ابتدايي ندارند

 


 

6-2- ايجاد يك جدول جديد 

 

براي ايجاد يك جدول جديد بروي tables كليك سمت راست كرده و گزينه New Table را انتخاب كنيد. سپس در كادر بعدي نام جدول را انتخاب كنيد. حال فيلدها و نوع آنها را مشخص كنيد .

 

بعد از مشخص كردن نوع و احتمالاً طول فيلد , بايد مشخص كنيد كه آيا فيلد هميشه مي بايست مقدار داشته باشد و يا مي تواند null باشد. Allow Nulls اگر تيك داشته باشد يعني اينكه اين فيلد مي تواند هيچ مقداري به خود اختصاص ندهد.

 

تذكر  : مقدار null را با فضاي خالي اشتباه نگيريد.

 

در قسمت Default Value مقدار اوليه براي فيلد وارد كنيد. تا در صورتيكه هيچ مقداري درج نشد آن مقدار درج شود. (در دستور insert )

 

اگر Identity را تيك بزنيد اين فيلد بشكل خود افزا خواهد شد كه اولا بايد نوع فيلد عددي و ثانيا مقدار گامها در Identity increment مشخص شود. مقدار اوليه آن را هم مي توانيد در Identity Seed قرار دهيد. بدين شكل با اين مقدار شروع و با گامهاي مشخص شده حركت خواهد كرد.

 

تذكر  : هيچ مقداري در اين فيلد نمي توانيد درج كنيد , چراكه خود سيستم اين مقدار را توليد مي كند .

 

براي مشخص كردن فيلد كليد (يا فيلدهاي كليدي) فيلد(ها) را انتخاب و بر روي علامت كليد بر روي Toolbar كليك كنيد .

 

تذكر  : فيلد كليدي نمي تواند Allow Nulls باشد.

 

تذكر  : براي تعريف index كليك سمت راست كرده و index/keys را انتخاب كنيد .

 

( در مورد index بطور مفصل صحبت خواهد شد )

 


 

7-2- ايجاد Stored Procedure 

 

مانند هر زبان ديگر رويه ها در sqlServer نيز موجود مي باشند. و بكار ميروند. سه رويه insert , Updaet و Delete را مي توانيد براحتي با ويزاردهاي خود SqlServer بسازيد. از اينجا به بعد از واژه SP بجاي رويه استفاده خواهيم كرد.

 

ابتدا با ساختار كلي SP آشنا شده و سپس به ويزارد موجود خواهيم پرداخت.

 

براي ايجاد يك SP جديد ابتدا برروي گزينه Stored Procedure كليك سمت راست كرده و گزينه new Stored Procedure... را انتخاب كنيد. در پنچره بعدي شما مي توانيد متن SP را وارد كنيد.

 


 

1- نام sp - ابتدا بجاي [PROCEDURE NAME] يك نام براي SP خود در نظر بگيريد. من خود از ساختار زير بدين منظور استفاده ميكنيم  : عمليات_نام جدول

 

عنوان مثال اگر نام جدول Sale و عمليات مورد نظر يك عمليات insert باشد نام SP را Sale_INSERT ميگذاريم. بهتر است نام عمليات با حروف بزرگ تايپ شود . البته بعضي از دوستان از سه حرف عمليات استفاده مي كنند. براي مثال بالا خواهيم داشت  :Sale_INS .

 


 

2- تعريف پارامترها - براي تعريف پارامترهاي ورودي SP قبل از كلمه كليدي As آنها را داخل پرانتز مشخص كنيد. بدين شكل كه ابتدا علامت @ سپس نام پارامتر بعد فاصله و نوع پارامتر.

 

تذكر - تمامي متغييرها در SP از ساختار نام متغيير@ پيروي ميكنند.

 

بعنوان مثال فرض كنيد يك SP داراي دو پارامتر با نامهاي Id از نوع int و Name از نوع Varchar(20) باشد , داريم  : ( @id int,@name varchar(20))

 

حال بعد از As دستورات مورد نظر را تايپ ميكنيم  :

 


 

مثال 1 - SP بنويسيد كه چهار حرف اول فيلد LastName و فيلد FirstName را از جدول Employees انتخاب كند به شرطي كه فيلد LastName با حرف A شروع شود ؟

 

ابتدا برروي Stored procedure كليك سمت راست كرده و گزينه New stored procedure را انتخاب كرده و خطوط زير را تايپ كنيد. بعضي از دستورات پايين در كادر باز شده موجود هستند كه نيازي به تايپ مجدد آنها نيست .

 

create Stored Procedure Employees_BROWSE

 

As

 

Select substring(Lastname,1,4) as LastNmae,FirstName

 

From Employees

 

Where LastName Like ‘%A’

 


 

حال بر روي دكمه ok كليك نماييد. حال SP با نام Employees_BROWSE در ليست SP اضافه شده است .

 


 

مثال 2 - تمام فيلدهاي Employees را انتخاب كنيد كه فيلد BirthDate در يك بازه تاريخي كه به شكل پارامتر وارد ميشود قرار گيرد ؟

 

create Stored Procedure Employees_BROWSE2

 

(@StartDate char(10) , @EndDate char(10))

 

As

 

Select *

 

From Employees

 

Where BirthDate between @StartDate and @EndDate

 


 

حال براي اجراي SP ها در Query Analyzer كافي است بنويسيم - نام Exec SP

 

بعنوان مثال -Exec Employees_browse

 

اگر پارامتر داشت مقدار پارامترها را هم مي آوريم  :

 

Exec Employees_Browse2 ‘01/01/1940’ , ‘15/06/1955’

 


 

3- تعريف متغيرها - براي تعريف متغيرها مي بايست از كلمه كليدي Declare استفاده كنيم. بعنوان مثال - Declare @myname varchar(50)

 

متغيير @myname از نوع كاركتري پويا تعريف ميكند.

 


 

4- برگرداندن كد خطا - بدين منظور از دستور return @@Error

 

گرچه هرمقداري را كه بخواهيم مي توانيم با دستور return برگردانيم.

 


 

5- تعريف پارامترها كه مقداري را برمي گردانند - براي اين منظور هنگامي كه پارامتر را در ابتداي پروسيجر تعريف ميكنيم بعد از نوع آن از كلمه كليدي output مي كنيم بعنوان مثال  :

 

create Stored Procedure Employees_BROWSE2

 

(@StartDate char(10) , @EndDate char(10) , @pp varchar(10) output)

 

As

 

6- مقدار دهي به متغييرها - به دو روش مي توانيد اين كار را بكنيد يكي با دستور Set و ديگري با دستور Select .

 


 

7- دستورات شرطي -مانند ديگر زبانها شما مي توانيد در Sql دستورات شرطي را بكار ببريد. ساختار آن به شكل زير است  :

 

If شرط then دستور

 

If شرط then

 

Begin

 

دستور1

 

دستور2

 

...

 

End

 


 

مثال  :

 

If @Sdate > @Edate set @newDate = @Sdate

 


 

8- دستور Set NOCOUNT on - اين دستور از نوشت تعداد سطرهاي برگردانده شده توسط دستورات جلوگيري ميكند. كاربرد مهم آن زماني است كه شما چند كار را پشت سرهم در SP انجام ميدهيد. مثلا يك جدوي موقت ميسازيد و سپس از آن يك تعدادي از فيلدها را با دستور Select انتخاب مي كنيد. اگر اين دستور را در ابتداي SP استفاده نكتيد , هنگامي كه ميخواهيد از آن SP در يك زبان برنامه نويسي استفاده كنيد با خطاي SP هيچ dataset ي برنمي گرداند مواجه خواهيد شد.

 

تذكر1 - شما مي توانيد يك SP را در يك SP ديگر فراخواني كنيد. براي اين منظور همانطور كه قبلا گفته شد از دستور exec استفاده نماييد.

 

تذكر 2 - با دستور exec شما مي توانيد يك دستور sql را نيز اجرا كنيد. اين كار زماني بكار مي آيد كه دستور مورد نظر پويا و متغير باشد.

 

مثال -

 

Exec (“ select * From Employees Where “+@Shart)

 

اين شرط ميتواند بر اساس فيلدهاي بانك توليد گردد.

 


 

8-2- ابزار View

 

ديدها به كاربران اجازه ميدهند تا بر روي داده هايي كه نياز دارند متمركز شوند. بنابر اين داده هاي غير ضروري ميتوان از ديد خارج كرد. ديدها امنيت داده ها را نيز افزايش ميدهند چراكه كاربر فقط داده هايي را مي بيند كه در ديد وجود دارند.

 

ديدها به كاربران اجازه ميدهند تا داده ها را به روشهاي متفاوت مشاهد نمايند. ديدها ميتوانند براي مبادله داده ها با ساير برنامه هاي كاربردي بكار روند.

 

و ....

 


 

9-2- ايجاد ديد 

 

وقتي ديدي را ايجاد ميكنيد نام آن مي بايست در بين نام جداول و ديگر ديدهايي كه كاربر مورد نظر آنها را ساخته , يكتا باشد.در SQL Server 7.0 شما امكان ايجاد شاخص بر روي ديدها را نداشتيد , ليكن اين امكان در SQL 2000 اضافه شده است.

 


شکل 3-2- راست کليک براي ايجاد New View

 

 

 

 10-2- مراحل ايجاد يك ديد 

 

1- erprise Manager را باز كرده و بر روي Databases كليك كرده و پايگاه داده اي را كه مي خواهيد ديد در آن ايجاد كنيد . باز كنيد.

 

2- روي Views كليك راست كرده و سپس گزينه New View... را انتخاب كنيد.

 

(شکل 3-2 )

 

3- در پنجره بعدي كليك سمت راست كرده و گزينه Add Table... را انتخاب كنيد.

 

( شکل 4-2 )

 


 


شکل 4-2- اضافه کردن جدول به ديد

 

4- دكمه هاي Table و يا Views جدول و يا ديد هاي مورد نظر را انتخاب نماييد. و بر روي دكمه Add كليك نماييد. اين كار را براي تمام جداول و يا ديدهاي مورد نظر تكرار كنيد و سپس بر روي دكمه Close كليلك نماييد.

 

در قسمت Column از پانل مشبك , ستونهايي را كه ميخواهيد در ديد به آنها ارجاع نماييد انتخاب كنيد. اگر ميخواهيد ستوني در مجموعه نتيجه ديده شود گزينه Output متناظر با آن مي بايستي حتما تيك داشته باشد.

 

در ستون Criteria شرط را بنويسيد. چند شرط را ميتوانيد در ستونهاي OR تكرار كنيد. براي گروه بندي برروي ستون Criteria كليك سمت راست كرده و گزينه Group By را انتخاب نماييد. در اينصورت شما قادر خواهيد بود از توابعي همچون Sum استفاده كنيد.

 

تذكر1 - اگر Group by را انتخاب كرده باشيد. تمام شرايط كه در ستون Criteria بنويسيد به عنوان شرايط Having در نظر گرفته ميشوند. براي اينكه اين محدوديتها به شرط Where اضافه گردند , بر روي پانل مشبك متناظر كليك كرده و از ليست مورد نظر گزينه where را بجاي Group by انتخاب كنيد.

 

تذكر 2 - در ستون Alias شما ميتوانيد يك اسم مستعار براي اين ستون در نظر بگيريد.

 

براي ديدن نتايج ديد بر روي علامت (!) كليك نماييد. (شکل 5-2 )

 


شکل 5-2- تنظيمات View

 


شکل 6-2- ايجاد SP بوسيله ويزارد

 

توجه داشته باشيد كه ارتباط ها در صورتي برقرار ميشود كه كليدهاي خارجي بر روي جداول وجود داشته باشد. گرچه شما مي توانيد با انتخاب فيلد مورد نظر و حركت ماوس در حاليكه كليك سمت چپ را فشار داده ايد مابين دو جدول ارتباط را برقرار كنيد.

 


 

11-2- ايجاد Stored Procedure با استفاده از ويزارد ها

 

براي ايجاد SP هاي استاندارد جهت عمليات درج , حذف و ويرايش شما مي توانيد از ويزاردهاي خود SQL استفاده نماييد. با اين ابزار شما قادريد طي چند دقيقه تعداد زيادي SP جهت عملياتهاي گفته شده بر روي جداول خود بسازيد. براي اين منظور در Enterprise Manager بر روي كليد ويزارد كليك نماييد مانند شکل 6-2 -

 

بعد در پنجره Select Wizard بر رويDatabase كليك و گزينه Create Stored Procedure Wizard را انتخاب نماييد . مانند شکل 7-2 -

 

در پنجره بعدي به شما خوش آمد گويي مينماييد . برروي كليد Next كليك نماييد.در پنجره بعدي نام Database ي را كه قرار است بر روي جداول آن كار شود انتخاب نماييد و بروي Next كليك نماييد. در پنجره بعدي جداول و عمليات مورد نظري كه مي خواهيد انجام دهيد انتخاب كنيد. در پنجره بعدي نام SP هايي كه سيستم ساخته شما خواهيد ديد. براي ويرايش نام و يا كد

 


شکل 7-2- انتخاب Database

 

هركدام از آنها ميتوانيد آن Sp را انتخاب و كليد Edit را فشار دهيد. در اينصورت شما پنجره اي

 

به شکل 8-2 خواهيد داشت  :

 

حال شما در قسمت Name مي توانيد نام Sp را عوض نماييد.

 

در قسمت Include in Set Clause شما فيلدهايي از جدول مربوطه كه مي خواهيد مقادير آن به شكل پارامتر براي Sp ارسال شود انتخاب نماييد. اگر Sp شما Update و يا Delete باشد در قسمت Include in Where Clause شما مي توانيد فيلدهايي كه قرار است در شرط (دستور Where) قرار مي گيرند انتخاب نماييد.

 


 

تذكر1 - اگر فيلدي از نوع Identity داريد در حالت Insertحتما از قسمت Include in Set Clause خارج كنيد. در غير اينصورت در زمان اجرا با خطا مواجه خواهيد شد.

 

تذكر2 - SQL فيلد كليدي جدول را در دستور Update در دستور Where خواهد آورد.  همچنين شما اين فيلد را از Include in Set Clause خارج كنيد.

 

در نهايت شما با فشار كليد Finish همزمان اين Sp را خواهيد ساخت.

 

تا اين قسمت شما با ساخت Sp آشنا شديد. حال براي ويرايش آن نيز كافي است بر روي Sp كليد نموده و در پنجره باز شده كد آن را ويرايش نماييد.

 


شکل 8-2- ويرايش SP

 


 


شکل 9-2- ويزارد راهبري SP

 


 


 


 


 


 


 


 


 


 


 


 


 


 


 



 


 


 

از آنجائیکه در بین علوم معاصر علم کامپیوتر و انفورماتیک جزء جدیدترین علوم و دانش هاست در نتیجه به لحاظ کتب مرجع و جامع و کافی بویژه در زبان فارسی در مقابل متقاضیان خود اظهار عجز می نماید .

 

علاوه بر این دانش کامپیوتر بنا به اقتضای جوانیش در حال پیمودن بحران های اولیه مسیر است لذا انتظاری غیر از تحولات و تلاطمات روزانه در زمینه کتب و نشریات و نرم افزارهای گوناگون در زمینه های مختلف کامپیوتر بویژه شاخه نرم افزار نمی توان داشت .

 

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

 


 


 


 


 


 


 


 


 


 


 


 


 


 



 


 


 


 


 

[1]   R. vemair , R.Sautel , “ Teach your self SQL Server 2000 in 21 days “ , Sams ,

 

       2001

 


 

[2]   k.Esmit , M. amundsen , “ Teach your self database programming with Visual

 

       Basic 6 in 21 days “ , Sams , 2002

 


 

[3]   G.Pary , “ Teach your self Visual Basic 6 in 21 days “ , Sams , 2002

 


 


 

[4]   www.amundsen.com

 


 


 



I BUILT MY SITE FOR FREE USING