اين شي بهترين نوع در بين اشيا VB6 براي كار با مجموعه ركورد يا در اصطلاح Recordset هستش. متدهاي نسبتاً قوي تر و كاملتري نسبت به اشيا ديگه داره. مثلاً شما مي تونيد يك ركورد رو جوري فراخواني كنيد كه به صورت فقط خواندني باشه يا در اصطلاح مي گن به صورت قفل ركورد كار كنيد.
با متد هاي شي RecordSet مي تونيد در اين پست و در اين پست آشنا بشيد اما يك شكل كلي از اين دستور رو مي نويسم و يه توضيح كوچكي راجبشون مي دم:

کد:

Dim Rst As ADODB.Recordset
SET Rst = New ADODB.Recordset
.
.
.
Rst.Open strQuery, ActiveConnection, CursorType, LockType, Optimize

اگر يادتون باشه در اين پست تمام آرگومان هاي متد Conn.Open به صورت جدا جدا توضيح داده شد. عرض كردم كه روش هاي مختلفي براي نوشتن برنامه هاي پايگاه داده وجود داره. شما مي تونيد تمام اين مشخصه ها رو در يك خط مقداردهي كنيد يا اينكه به صورت جدا جدا dddمقداردهي كنيد دركل فرقي نمي كنه.

دستور SQL مورد نظرتون رو به صورت رشته در اين قسمت مي نويسيد. مثلاً:

کد:
Dim strQuery As String
strQuery = "Select * From tblTest"
Rst.Open ,...

يا اينكه اينجوري بنويسيد:

کد:
Rst.Open ,...

در كل زياد فرقي نمي كنه.
بعد از اينكه دستور SQL خودتون رو مشخص كردين حالا بايد مسير منبع داده رو هم به Recordset بديم تا بدونه كه از كجا بايد اين درخواست رو اجرا كنه. خوب مي تونيد بر اساس همون متغير Conn كه قبلاً ايجاد كرديم اين خاصيت رو مقدار دهي كنيم. مثلاً:

کد:
Rst.Open strQuery, , ...

يا اينكه:

کد:
Set Rst.ActiveConnection = Conn

تقريباً دستور انتساب اين خاصيت مشابه Command هستش.
اين خاصيت اختياري هستش و مقاديري كه به صورت ثابت هاي VB6 مي پذيره اينها هستن:

  1. adOpenForwardOnly: شي Recordset به صورت روبهجلو و فقط خواندني باز مي شه.
  2. adOpenDynamic : شي Recordset به صورت دايناميك باز مي شود.
  3. adOpenKeyset: نمي دونم...!!!!!!
  4. adOpenStatic: شي Recordset به صورت ايستا باز مي شود.

مي تونيد اين مقادير رو وقتي اين خطوط رو مي نويسيد ببينيد:

کد:
Rst.Open ...,..., ,...
OR
Rst.CursorType = 

براي استفاده از اين سرويس ها بايد يه سري نكاتي رو بهش توجه كنيم. قبل از اينكه بخوايم مشخص كنيم كه يك Recordset چي جوري باز بشه بايد اول نشانه گذاري سمت سرور و سمت كلاينت رو مشخص كنيم. علت بسياري از خطاهايي كه در هنگام باز كردن Recordset رخ مي ده همين توجه نكردن به اين موضوع هستش. مثلاً شخصي كدي رو نوشته ظاهر كد درست هستش و هرچقدر كه دنبال خطي كه توش خطا داشته باشه مي گردي پيدا نمي كني اما بعداً متوجه ميشي كه خطا از مقداردهي يك خاصيت پدر صورت گرفته.
براي تكميل توضيح فوق بايد نشانه گذاري رو مشخص كنيم. دقيقاً اين خاصيت مانند شي Connection هستش:

کد:
Rst.CursorLocation = adUseServer


Rst.CursorLocation = adUseClient

اين خاصيت درواقع يه حاشيه امنيت در هنگام كار با داده براي ما فراهم مي كنه. مثلاً وقتي كه درحال Update يك ركورد هستيم ركورد رو قفل مي كنه و ... من زياد باهاش كار نكردم براي همين نمي تونم توضيحي راجب اين خاصيت بدم فقط در اين حد مي دونم كه وقتي مي خوام ركوردهام رو بدم(مثلاً در يك Grid) از مقدار adLockReadOnly استفاده كنم و اگر بخوام داده هام رو كنم از خاصيت adLockOptimistic استفاده كنم:

کد:
        Rst.LockType = adLockReadOnly
        Rst.LockType = adLockOptimistic
more...

يا:

کد:
Rst.Open ...,...,...,adLockReadOnly,...
Rst.Open ...,...,...,adLockOptimistic,...
more...

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