اين شي بهترين نوع در بين اشيا VB6 براي كار با مجموعه ركورد يا در اصطلاح Recordset هستش. متدهاي نسبتاً قوي تر و كاملتري نسبت به اشيا ديگه داره. مثلاً شما مي تونيد يك ركورد رو جوري فراخواني كنيد كه به صورت فقط خواندني باشه يا در اصطلاح مي گن به صورت قفل ركورد كار كنيد.
با متد هاي شي RecordSet مي تونيد در اين پست و در اين پست آشنا بشيد اما يك شكل كلي از اين دستور رو مي نويسم و يه توضيح كوچكي راجبشون مي دم:
Dim Rst As ADODB.Recordset
Set Rst = New ADODB.Recordset
.
.
.
Rst.Open strQuery, ActiveConnection, CursorType, LockType, Optimize
اگر يادتون باشه در اين پست تمام آرگومان هاي متد Conn.Open به صورت جدا جدا توضيح داده شد. عرض كردم كه روش هاي مختلفي براي نوشتن برنامه هاي پايگاه داده وجود داره. شما مي تونيد تمام اين مشخصه ها رو در يك خط مقداردهي كنيد يا اينكه به صورت جدا جدا dddمقداردهي كنيد دركل فرقي نمي كنه.
خاصيت strQuery:
دستور SQL مورد نظرتون رو به صورت رشته در اين قسمت مي نويسيد. مثلاً:
Dim strQuery As String
strQuery = "Select * From tblTest"
Rst.Open strQuery,...
يا اينكه اينجوري بنويسيد:
Rst.Open "Select * From tblTest",...
در كل زياد فرقي نمي كنه.
خاصيت ActiveConnection:
بعد از اينكه دستور SQL خودتون رو مشخص كردين حالا بايد مسير منبع داده رو هم به Recordset بديم تا بدونه كه از كجا بايد اين درخواست رو اجرا كنه. خوب مي تونيد بر اساس همون متغير Conn كه قبلاً ايجاد كرديم اين خاصيت رو مقدار دهي كنيم. مثلاً:
Rst.Open strQuery, Conn, ...
يا اينكه:
Set Rst.ActiveConnection = Conn
تقريباً دستور انتساب اين خاصيت مشابه Command هستش.
خاصيت CursorType:
اين خاصيت اختياري هستش و مقاديري كه به صورت ثابت هاي VB6 مي پذيره اينها هستن:
adOpenForwardOnly: شي Recordset به صورت روبهجلو و فقط خواندني باز مي شه.
adOpenDynamic : شي Recordset به صورت دايناميك باز مي شود.
adOpenKeyset: نمي دونم...!!!!!!
adOpenStatic: شي Recordset به صورت ايستا باز مي شود.
مي تونيد اين مقادير رو وقتي اين خطوط رو مي نويسيد ببينيد:
Rst.Open ...,..., CursorTypeValues,...
OR
Rst.CursorType = CursorTypeValues
اما براي استفاده از اين سرويس ها بايد يه سري نكاتي رو بهش توجه كنيم. قبل از اينكه بخوايم مشخص كنيم كه يك Recordset چي جوري باز بشه بايد اول نشانه گذاري سمت سرور و سمت كلاينت رو مشخص كنيم. علت بسياري از خطاهايي كه در هنگام باز كردن Recordset رخ مي ده همين توجه نكردن به اين موضوع هستش. مثلاً شخصي كدي رو نوشته ظاهر كد درست هستش و هرچقدر كه دنبال خطي كه توش خطا داشته باشه مي گردي پيدا نمي كني اما بعداً متوجه ميشي كه خطا از مقداردهي يك خاصيت پدر صورت گرفته.
خاصيت CursorLocation:
براي تكميل توضيح فوق بايد نشانه گذاري رو مشخص كنيم. دقيقاً اين خاصيت مانند شي Connection هستش:
Server:
Rst.CursorLocation = adUseServer
Client:
Rst.CursorLocation = adUseClient
خاصيت LockType:
اين خاصيت درواقع يه حاشيه امنيت در هنگام كار با داده براي ما فراهم مي كنه. مثلاً وقتي كه درحال Update يك ركورد هستيم ركورد رو قفل مي كنه و ... من زياد باهاش كار نكردم براي همين نمي تونم توضيحي راجب اين خاصيت بدم فقط در اين حد مي دونم كه وقتي مي خوام ركوردهام رو فقط نمايش بدم(مثلاً در يك Grid) از مقدار adLockReadOnly استفاده كنم و اگر بخوام داده هام رو به روزرساني كنم از خاصيت adLockOptimistic استفاده كنم:
Rst.LockType = adLockReadOnly
Rst.LockType = adLockOptimistic
more...
يا:
Rst.Open ...,...,...,adLockReadOnly,...
Rst.Open ...,...,...,adLockOptimistic,...
more...
خاصيت Optimize:
متاسفانه نمي دونم چي هستش.