Posted: Tue Mar 08, 2005 7:40 pm Post subject: ارتباط با بانك اطلاعاتي : قسمت اول
مديريت بانك اطلاعاتي :
كاربرد كامپيوتر در ادارات و اماكن تجاري يا حتي مغازه هاي كوچك در استفاده از بانك اطلاعاتي و مديريت آن بانك است . اينكه در يك فروشگاه چه مقدار جنس در چه تاريخي فروخته شده است . يا چه هزينه اي براي سفر هر مسافر در چه مسافتي چقدر است . اگر قرار باشد اين اطلاعات در جايي بايگاني شوند . در كامپيوتر جايي جز يك بانك اطلاعاتي پيدا نخواهيد كرد .
به هر حال استفاده از بانك اطلاعاتي و آشنايي با آن از جمله موارديست كه هر كاربر معمولي بهتر است بلد باشد . در اينجا تنها با چند مفاهيم اوليه از بانك اطلاعاتي آشنايي پيدا ميكنيم .
جدول : مهمترين جزء تشكيل دهنده يك بانك اطلاعاتي است . مستطيلي است داراي ستونها و سطرهايي . بدون شك شما را به ياد آرايه اي دو بعدي مي اندازد . هر ستون از يك جدول را فيلد ميگويند كه شامل اطلاعات مشابهي از نظر نوع هستند . هر فيلد براي خود نامي دارد . فرضا اگر جدولي داشته باشيم كه اطلاعات يك دانش آموز را دربر بگيرد داراي فيلدهايي با نام : نام . نام خانوادگي . تاريخ تولد . شماره دانش آموزي خواهد بود .
هر سطر از يك جدول را ركورد ميناميم . براي آشنايي بيشتر ميتوانيد به بخش مفاهيم اوليه از درس ساختمان داده ها رجوع كنيد .
يك بانك اطلاعاتي database يا يك بانك اطلاعاتي رابطه اي مجموعه اي از جداول است كه بنحوي با يكديگر پيوند خورده اند . اين جداول در محلي به نام نرم افزار مديريت بانك اطلاعاتي نگهداري و ايجاد ميشوند . نام نمونه اي از اين نرم افزارها چون access , foxpro , SQL-Server حتما به گوشتان خورده است
ويژوال بيسيك 6 از هر يك از نرم افزارهاي access , Btrieve , dBase , FoxPro و Paradox پشتيباني ميكند .
فايلهاي بانك اطلاعاتي معمولا پسوندMDB را بدنبال خود حمل ميكنند .
كنترل داده :
ويژوال بيسيك از طريق كنترل داده هاي بانك اطلاعاتي با ديتابيس (بانك اطلاعاتي)ارتباط برقرار ميكند . اين كنترل ها شامل read , modify , add ,delete هستند كه وظيفه خواندن ويرايش كردن و اضافه كردن يا حذف كردن را برعهده دارند .
فرض كنيم يك بانك اطلاعاتي آماده در سيستم خود داريد . بنام mydb.mdb و ميخواهيد اين بانك را با برنامه خود مرتبط كنيد . از مسير زير براي كاركردن با ديتابيس خود استفاده كنيد .
ابتدا فرض كنيم يك برنامه جديد ميسازيد از مسير Alt/f/n يك فايل جديد از نوع standard exe بسازيد .
دكمه Data control را از ToolBOX انتخاب كنيد . وروي ان دو بار كليك كنيد . Name آنرا به Data01 تغيير دهيد . caption آنرا نيز به دلخواه مثلا mydb تغيير دهيد . سپس اندازه اين كنترل را بصورت افقي بقدري بزرگ كنيد تا مقدار كپشن انرا بتوانيد ببينيد . دكمه f4 را بزنيد تا به بخش properties كنترلي كه ساخته ايد برويد و سپس از databasename نام بانك اطلاعاتي و مسير انرا وارد كنيد . ميتوانيد با استفاده از دكمه browse انرا پيدا كنيد . بانك اطلاعاتي خود را انتخاب كنيد . و بادامه كار بپردازيد .
سپس به سراغ recordsource برويد و از ليست نام جدول مربوطه راپيداكنيد .
نكته : باحتمال زياد با يك پيغام خطا بشرح Unrecognized Database format مواجه ميشويد . اين خطا به آن دليل است كه موتور ديتابيس كامپايلر ويژوال بيسيك نميتواند با بانك اطلاعاتي شما سازگاري داشته باشيد . يا بايد service pack 4 به بالا را براي Visual basic خود نصب كنيد . يا انكه ديتابيس خود را به نسخه قديميتري تبديل convert كنيد . مثلا اگر از access 2000 به بالا استفاده ميكنيد . بانك اطلاعاتي خود را در اكسس باز كنيد ! بايد انرا به access 97 تبديل كنيد . براي اينكار كافيست از گزينه tools در اكسس قسمت convert را انتخاب كنيد و سپس گزينه access 97 را انتخاب كنيد .
پس از انكه جدول خود را انتخاب كرديد براي انكه تك تك فيلدهاي جدول را پيمايش و يا تغييراتي در جدول خود اعمال كنيد . بايد از text box ها استفاده كنيد . بنابراين يك text box جديد بنام text1 درست كنيد انرا در محل مناسب قرار دهيد . سپسدر بخش properties ان بترتيب data source انرا نام data control كه در بالا فرضا Data01 قرار داده بوديم بگذاريد . سپس در datafield نام فيلدي كه قرار است در ان text box نمايش داده شود را انتخاب كنيد . بنابراين براي ديگر فيلدها نيز به همين ترتيب عمل كنيد .
باورتان ميشد به اين راحتي ها بتوانيد با يك بانك اطلاعاتي ارتباط برقرار كنيد ؟ منكه هيچ وقت باورم نميشد ! اين ويژوال بيسيك ديگه شده هلو بپر تو گلو !
استفاده از كد براي كنترل داده ها در بانك اطلاعاتي :
در هر لحظه تنها يك ركورد قابل دسترسي است كه به ان current record يا همان ركورد فعلي ميگويند . با استفاده از كد ها ميتوانيم ركورد فعلي كه قرار است عمليات پيمايش و يا تغييرات بر ان اعمال شود را عوض كنيم .
Data01.Recordset.MoveLast
آخرين ركورد از جدول را براي ركوردفعلي مشخص ميكند . كلمه Recordset در بيشتر كنترلهاي داده اي كه ركوردها را دستكاري ميكنند لازم است .
علاوه بر MoveLast كلمات زير نيز هستند كه كاربردشان از نامشان پيداست :
Quote:
MoveLast , MoveFirst , MoveNext , MovePrevious
ورودي فيلد با نام fieldname براي دسترسي به ركوردفعلي استفاده شده است .
Data01.Recordset.Fields(“fieldname”).Value
مثال زير را ببينيد :
strVar = datCities.Recordset.Fields(“city”).Value
در مثال فوق هر آن مقداري كه در فيلد city در ركورد فعلي(current record) از جدول datCities قرار دارد را در strVar ميريزد .
مقدار فيلد city ركوردفعلي را به Tehran تغيير ميدهد .
اولين دستور يك كپي از ركورد فعلي را آماده ويرايش ميكند .
دومين دستور اين كپي را تغيير ميدهد و سومين دستور اين كپي را به ركورد فعلي ديتابيس ميفرستد .
حفظ ترتيب هر سه اين دستورات براي آپديت كردن و بروز رساني يك ركورد لازم است !
تعداد ركوردهايي كه قبلا در جدول بدست آمده اند توسط RecordCount بدست مي آيند .
datCities.Recordset.Movelast ‘needed to set value of recordcount
datCities.Recordset.MoveFirst
For i=1 to datCities.Recordset.RecordCount
lstbox.AddItem datCities.Recordset.Fields(“city”).Value
datCities.Recordset.MoveNext
Next i
datCities.Recordset.MoveFirst
Do
While Not datCities.Recordset.EOF
lstBox.AddItem datCities.Recordset.Fields(“city”).Value
datCities.Recordset.MoveNext
Loop
ركورد فعلي را ميتوانيد با دستور زير پاك كنيد :
Data01.Recordset.Delete
ركورد شما پاك ميشود وقتيكه اشاره گر كنترل داده كليك ميشود يا از ركورد move ميكنيد .
يك ركورد جديد با دستور زير اضافه ميشود :
datCities.Recordset.MoveLast ‘Needed to set value of RecordCount
datCities.Recordset.MoveFirst
For i=1 to datCities.Recordset.RecordCount
lstBox.AddItem datCities.Recordset.Fields(“city”).Value
datCities.Recordset.MoveNext
Next i
datCities.Recordset.MoveFirst
Do
While Not datCities.Recordset.EOF
lstBox.AddItem datCities.Recordset.Fields(“city”).Value
datCities.Recordset.MoveNext
Loop
ويژوال بيسيك وسيله اي به نام validation جهت محدود كردن كاربران براي ورود داده ها به جداول دارد . براي مثال اگر در جدولي به نام Cities كليه شهرها جمعيتي بيش از يك ميليون دارد ميتوانيد طوري برنامه را بنويسيد كه كاربر نتواند شهرهايي كه كمتر از يك ميليون جمعيت دارند را وارد كند . همچنين با استفاده از مطمئن شدن از درستي يك داده ميتوانيد كاري كنيد كه كاربر نتواند داده اي وارد كند كه سبب crash شدن برنامه شود .
كنترل هاي داده داراي پراسيجري به نام Validate هستند كه هنگامي فعال ميشود كه در ركورد جاري قرار داريد . براي مثال هر وقت برروي دكمه هاي انتقال كليك ميكنيد اين صحت چك ميشود . پراسيجر validate به فرم زير است :
Private sub Data1_Validate(Action As Integer, Save As Integer)
Statement[s]
End Sub
Data1 نام كنترل است .
مقداري كه بجاي Action قرار ميگيرد مشخص ميكند كه كدام فعاليت رخ داده است . ليستي از انرا در زير ميبينيد :
اگر 0 را به آرگومانAction تابع منتقل كنيم عمليات صحتcancel ميشود و چيزي چك نميشود .
ارزش Save براي true ماندن -1 است و هر وقت تغييري در كنترل داده اعمال شود اين مقدار -1 ميماند وگرنه 0 است . يعني اگر قرار باشد تغييرات ذخيره شود Save مقدار -1 ميگيرد .
اما مثالي بزنيم . فرضا كاربر جمعيت شهري را خواست به كمتر از يك (ميليون) تقليل دهد . كدهاي زير نميگذارند كه كاربر اينكار را انجام دهد :
در ضمن txtPop1995 در كدهاي زير نام فيلدي از جدول است كه جمعيت شهرهاي مختلف در سال 1995 را نشان ميدهد .
Private Sub ctrl02_Validate(Action As Integer,Save As Integer)
Dim strMsg As String
If val(txtPop1995) < 1 Then
strMsg = “only population more than one million”
MsgBox strMsg”City too small”
Action = 0
End If
End Sub
دستور بالا باعث ميشود كه اگر كاربر مقداري كمتر از يك وارد كرد عمليات انتقال صورت نپذيرد و محتويات ركورد نيز تغيير نكند .
اما اگر خواستيد محتويات ركورد تغيير نكند . اما به يك ركورد ديگر move كنيد كافيست مقدار save=0 قرار دهيد بجاي انكه action=0 شود .
نكته : براي مشخص كردن مسير كنترل داده در ديتابيس نميتوانيد از App.path استفاده كنيد . بجاي ان بايد در Form_Load اين كار را انجام دهيد :
Private Sub Form_Load()
datCities.DatabaseName = App.Path & “\Parsx.mdb”
End Sub
نام فيلدها ميتواند حداكثر 64 كاراكتر شامل حرف عدد و فاصله . اگر از فاصله استفاده كرديد بايد انرا در براكت قرار دهيد .
اگر نام فيلد مشابهي در جدول ها ي مختلف داشتيد كافيست نام جدول را قبل از نام فيلد بهمراه يك نقطه ناقابل قرار دهيد .
پسوند بانك اطلاعاتي اكسس بصورت default براي VB مشخص است mdb براي Microsoft Data Base پسوند DAT و براي Btrieve پسوند DBF براي FoxPro پسوند DBF براي Paradox پسوند DB هست .
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum