PDA

View Full Version : آموزشی : CursorType



m-khorsandi
دوشنبه 29 فروردین 1384, 16:32 عصر
CursorType:

انتخاب صحیح Cursor بر روی موفقیت برنامه شما که برپایه ADO بنا شده است اثر مستقیم دارد.ADO چهار انتخاب برای Cursor فراهم کرده است: Dynamic, KeySet, ForwardOnly, Static .از آنجائیکه هر نوع Cursor رفتار متفاوتی دارد شما میتوانید استفاده مفیدی از درک توانائیها آن بکنید.

ctDynamic : به شما اجازه مشاهده درج ، حذف، ویرایش رکورد توسط کاربران دیگر را میدهد و اجازه همه نوع حرکت در طول مجموعه رکوردها را نیز میدهد.
اگر چندین کاربر در آن واحد عملیات Insert, Update, Delete را روی رکوردها انجام میدهند از نوع ctDynamic استفاده کنید.


ctKeySet : رفتاری شبیه به نوع Dynamic دارد، با استثناء اینکه مانع شما میشود برای مشاهده رکوردهایی که کاربران دیگر اضافه کرده اند و مانع میشود برای دسترسی به رکوردهایی که کاربران دیگر حذف کرده اند، تغییر اطلاعات توسط کاربران دیگر را نیز میتوانید مشاهده کنید. همواره Bookmark ها را پشتیبانی میکند بنابراین اجازه همه نوع حرکتی را در طول مجموعه رکوردها میدهد.


ctStatic : یک کپی ایستا(Static) از مجوعه رکوردها تهیه میکند و در اختیار کاربر قرار میدهد. برای جستجوی اطلاعات یا گزارش گیری استفاده میشود. اجازه استفاده از Bookmark ها را میدهد بنابراین اجازه همه نوع حرکتی را در مجموعه ایی از رکوردها میدهد. اطلاعاتی که توسط کاربران دیگر درج، ویرایش و حذف شده است قابل دیدن نیستند. ctStatic رفتاری شبیه به موقیکه از BDEQuery استفاده میکنید و خاصیت RequestLive آن False است دارد.


ctForwardOnly : رفتاری به مانند نوع Dynamic دارد با استثناء اینکه به کاربر فقط اجازه حرکت به سمت جلو را میدهد. در جاهایی که شما فقط نیاز دارید مجموعه ایی از رکوردها را طی کنید کارایی بهتری دارد.


****
نکته: نوع ctStatic فقط زمانی پشتیبانی میشود که CursorLocation شما برابر با clUseClient باشد.

نکته: اگر نوع Cursor درخواستی شما توسط Provider پشتیبانی نشود ، ممکن است Provider به نوع دیگری رجوع کند برای مثال: اگر شما سعی کنید روی یک DataBase مربوط به Access خاصیت CursorLocation را برابر با clUseClient و خاصیت CursorType را برابر با ctDynamic قرار دهید، دلفی CursorType را به ctKeySet تغییر خواهد داد.


__________________________________________________ _______


CursorLocation

CursorLocation تعیین میکند که مجموعه رکوردها هنگامیکه DataSet فعال میشود در کجا ساخته شوند؟
روی Server یا Client

Client-Side: اطلاعات در Cursor Client-Side بطور ذاتی از DataBase جدا هست. ADO نتیجه یک Query (همه سطرها) را بازیافت کرده و اطلاعات را در Client قبل از اینکه شما استفاده از آن را آغاز کنید کپی میکند(کپی اطلاعات در ADO Cursor) . بعد از انجام تغییرات در مجموعه رکوردها، ADO تغییرات ایجاد شده را در یک Action Query ترجمه میکند و آن Query را به DataBase شما ارائه میدهد. Client-Side رفتاری شبیه به حافظه میانی محلی (Local Cache) دارد.
در بیشتر مواقع Cursor Client-Side مقدم هست چونکه حرکت و ویرایش سریعتر است و بهره وری بیشتری دارد. اگرچه بازگرداندن اطلاعات به Client ترافیک شبکه را بالا میبرد.


Server-Side : موقعی که عملیات Insert, Update, Delete را انجام میدهید خیلی مفید است. این نوع Cursor بعضی مواقع میتواند کارایی بهتری را نسبت به Client-Side فراهم کند، مخصوصا زمانی که ترافیک شبکه بیش از اندازه مسئله است.

شما چندین فاکتور را باید در نظر بگیرید:
الف- آیا شما، بیشتر تغییر اطلاعات را انجام میدهید یا بازیافت اطلاعات را؟
ب- آیا شما قصد دارید ADO را برای برنامه Desktop استفاده کنید یا در یک برنامه مبتنی بر اینترنت؟
ج- اندازه یا سایز مجموعه نتایج شما(بازیافتها)
و فاکتورهایی که معیار آنها توسط اطلاعات ذخیره شده و محیط تعیین میشوند.

فاکتورهای دیگر توانائی محدود کردن شما را به همان اندازه دارند. برای مثال: MS Access کرسرهای Dynamic را پشتیبانی نمیکند ولی در عوض از Keyset استفاده میکند.

------------------------------------
مجموعه رکوردها : RecordSet
بازیافت : Retrieve
------------------------------------
منبع: سایت Delphi.About.Com
محمد خورسندی

nilufari
دوشنبه 29 فروردین 1384, 20:56 عصر
عالی :تشویق: