پارامتر Source و ActiveConnection را قبلا به اندازه کافی توضیح دادهایم اما پارامتر CursorType مقادیر زیر را میپذیرد :
adOpenForwardOnly : رکوردستی به صورت یک طرفه رو به جلو میسازد . در مواردیکه یک رکوردست فقط یک بار پیمایش میشود به دلیل سرعت بالا این نوع رکوردست مناسب است .
adOpenKeySet: یک رکوردست با امکان تغییرات بوسیله کاربران و به صورت دو طرفه ایجاد میکند . شما قادر نیستید به رکوردهایی که توسط کاربران دیگر اضافه شدهاند دسترسی پیدا کنید .
adOpenDynamic: شبیه به گزینه قبلی است با این تفاوت که رکوردهای تغییر داده شده و یا اضافه شده بوسیله سایر کاربران توسط شما هم در دسترس هستند .
:adOpenStatic رکوردستی که با این گزینه ساخته میشود به صورت ایستا خواهد بود . یعنی تغییرات در این رکوردست اثری ندارد .
پارامتر بعدی در متد Open پارامتر LockType است که میتوانید گزینههای زیر را برای آن استفاده کنید :
adLockReadOnly: اجازه دستکاری رکوردست را به شما نمیدهد .
adLockOptimistic: رکوردها هنگام Update رکوردست قفل میشوند .
adLockPessimistic : رکوردها هنگام آغاز ویرایش قفل میشوند .
adLockBatchOptimistic : وقتی متد UpdateBetch روی رکوردست اجرا شود ، همه دسته ، قفل میشود .
برای پارامتر Option هم ، گزینههای زیر را استفاده کنید :
adCmdText : مقدار پارامتر Source متن فرمان مورد نظر میباشد مثلا یک دستور SQL است .
adCmdTable : مقدار پارامتر Source نام جدولی است که همه فیلدهای آن برگردانده خواهد شد .
اضافه کردن و حذف رکورد از رکوردست :
به طور خلاصه برای اضافه کردن رکورد ابتدا متد AddNew از رکوردست را فراخوانی میکنیم و سپس فیلدها را مقدار میدهیم و در آخر متد Update را فراخوانی میکنیم . بهتر است قبل از همه این کارها کرسر را با استفاده از متد MoveLast به آخرین رکورد انتقال دهیم .
rst.MoveLast
rst.AddNew
rst!strName = txtName.Text
rst!strFamily = txtFamily.Text
rst!iAge = Val(txtAge.Text)
rst.Update
برای حذف رکورد از رکوردست ابتدا باید کرسر را به رکورد مورد نظر منتقل کنیم برای این کار از حلقهها استفاده میکنیم . پس از رسیدن به رکورد مورد نظر متد Delete از رکوردست را فراخوانی میکنیم و برای اعمال تغییرات رکوردست روی بانک متد Update را فراخوانی میکنیم :
Do While Not rst.EOF
If rst!strName = "mAm" And rst!strFamily = "BlackGhost" Then
rst.Delete
rst.Update
Exit Do
End If
Loop
استفاده از SQL :
یادگیری SQL به عهده خودتان میباشد . ما در اینجا فقط از یک select ساده استفاده خواهیم کرد . زمانیکه بخواهیم رکوردستی از فیلدهای انتخابی از یک جدول تشکیل دهیم . میتوانیم از SQL استفاده کنیم . برای این کار دستور SQL را به صورت یک رشته و یا متغیر رشتهای به عنوان پارامتر Source از متد Open ارسال میکنیم و پارامتر آخر آن را هم برابر adCmdText قرار میدهیم . به عنوان مثال :
rst.Open "SELECT strName,strFamily FROM tblPerson", cnn, adOpenKeyset, adLockOptimistic,
adCmdText
و یا بدین صورت :
Dim strSQL As String
strSQL = "SELECT strName,strFamily FROM tblPerson"
rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic, adCmdText
که روش دوم از خوانایی بیشتری برخوردار است . این مثالها رکوردستی حاوی دو فیلد strName و strFamily تشکیل میدهند .
یک مثال دیگر
Dim strSQL As String
strSQL = "SELECT * FROM tblPerson WHERE Age=20
rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic, adCmdText
در این مثال رکوردستی حاوی مشخصات همه افرادیکه سن آنها 20 سال است تشکیل دادهایم که همه فیلدهای جدول با استفاده از * در این رکوردست انتخاب شدهاند .
اگر فرض کنیم که در برنامهای بخواهیم اطلاعات مثال قبل را بدست آوریم اما سن مورد نظر را از کاربر بپرسیم از طریق زیر عمل میکنیم .
Dim strSQL As String
rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic, adCmdText
اگر دقت کرده باشید در این مثالها فرض بر این بوده است که فیلدی که در قسمت شرط در WHERE بکار رفته است از نوع عددی است . اما اگر بخواهیم از فیلدهای رشتهای استفاده کنیم بازهم باید تغییر کوچکی در آن بدهیم و از کدهای زیر استفاده کنیم :
strSQL = "SELECT * FROM tblPerson WHERE strName=' " & txtName.Text & " ' "
دراستفاده از دستورات SQL باید به این نکته توجه کرد که در قسمت شرط Where باید مقدار بعد از تساوی را بین علامتهای محصور کنید بنابراین از روش بالا برای این کار استفاده کردهایم . البته برای اینکه این علامت کوچک به راحتی دیده شود دو طرف آن را علامت فاصله قرار دادهایم که این کار را شما نباید انجام دهید .