View Full Version : تعداد رکورد بالا در فرم
quack
چهارشنبه 15 شهریور 1385, 09:08 صبح
سلام
من تمام فرم هایی که نیاز به ویرایش داشتند برای جستجوی راحتتر یک گرید که تمام رکورد ها را بدون فیلتر داشت داخل فرم اضافه میکردم.
اما الان یک جدول دارم که تعداد رکورد هاش خیلی زیاده . هم خود فرم سنگین بالا میاد هم این گرید برای کاربر قابل استفاده نیست .
اگر از گرید استفاده نکنم چطور فرمی طراحی کنم که اگر کاربر اشتباها رکوردی وارد کرد که کلید اصلی رکورد هم اشتباه بود یا اینکه یک رکود برای تست وارد کرده بود که همینطوری روی کیبورد زده باشه بتونه پیداش کنه (چون اطلاعی از مقدار فیلد ها برای جستجو نداره )؟؟ !!
vcldeveloper
چهارشنبه 15 شهریور 1385, 09:41 صبح
می تونید از Query استفاده کنید و هر بار فقط بخشی از داده ها را در برنامه لود کنید (مثلا اطلاعات را بصورت صفحه به صفحه لود کنید). برای جستجو هم می تونید از یک Query استفاده کنید تا داده های مربوطه را از بانک دریافت کند. Filter کردن داده های یک DataSet تاثیری در کاهش زمان لود شدن داده ها نداره، چون فیلتر بر روی داده های لود شده در حافظه اعمال میشه؛ یعنی کل داده های جدول در حافظه لود میشند، بعد فیلتر روی اونها اعمال میشه.
درباره هر سه موردی که در بالا مطرح کردم، در سایت قبلا بحث شده.
موفق باشید
quack
چهارشنبه 15 شهریور 1385, 11:52 صبح
وقتی رکورد ها لود می شوند مشکلی نیست ولی پر کردن گرید فرم را قفل می کند. خواستم بپرسم راهی هست که از گرید استفاده نکنم چون صفحه صفحه کردن 2 میلیون رکورد فکر نکنم زیاد جالب بشه !!
vesal
پنج شنبه 16 شهریور 1385, 00:04 صبح
از ایندکس استفاده کردی یا نه؟
quack
پنج شنبه 16 شهریور 1385, 07:25 صبح
از ایندکس استفاده کردی یا نه؟
موقع نمایش در Grid مشکل دارم نه موقع search کردن . اگر هم مشکل سرعت لود کردن گرید حل بشه داستان سر اینکه یک گرید با چند میلیون رکورد قابل استفاده نیست !!!!
فکر می کنم باید فرم جور دیگه ای طراحی بشه . خواستم بپرسم کسی تجربه ای در این زمینه داره؟
vcldeveloper
پنج شنبه 16 شهریور 1385, 12:39 عصر
وقتی رکورد ها لود می شوند مشکلی نیست ولی پر کردن گرید فرم را قفل می کند. خواستم بپرسم راهی هست که از گرید استفاده نکنم چون صفحه صفحه کردن 2 میلیون رکورد فکر نکنم زیاد جالب بشه !!
گرید هم با لود شدن داده ها در حافظه پر میشود. لود کردن 2 میلیون رکورد در حافظه کار منطقی نیست. راه حلش هم اینه که داده ها را بصورت صفحه به صفحه در گرید نمایش بدید (مثلا هر 100 رکورد در یک صفحه - مثل صفحه جستجوی همین سایت یا جستجو گوگل و سایر موتورهای جستجو).
اگر می خواید در حین انجام یک عملیات خاص تا پایان انجام اون عملیات نمایش داده ها در کنترل های Data-aware غیرفعال بشه - تا سرعت انجام عملیات افزایش پیدا بکنه و در نمایش داده ها پرش بوجود نیاد - می تونید از متدهای DisableControls و EnableControls دیتاست مربوطه استفاده کنید.
vesal
پنج شنبه 16 شهریور 1385, 14:48 عصر
تا اونجایی که من خبر دارم وقتی با یک Grid رکورد ها رو نمایش میدی تمام رکوردها توی Grid لود نمی شنن. از Grid استاندارد خود دلفی داری استفاده می کنی یا یک Grid دیگه؟
quack
جمعه 17 شهریور 1385, 07:42 صبح
نه گرید دلفی نیست .
ghabil
جمعه 17 شهریور 1385, 09:44 صبح
ببین برای لود شدن گرید این خیلی سرعت رو میبره بالا ، البته جواب سوال تو نیست چون درمورد سوال تو بالاخره باید یک شرایطی تعیین بکنی که مثلا بگی میخوام 100 تا رکورد اول رو نشون بدم (از دستور Top استفاده کنی) یا مثلا بگی رکوردهایی که شرط خاصی دارند (با WhereClause محدود بکنی ).
AdoDataSet1.DisableControls;
try
ADoDataSet1.Open;
finally
AdoDataSet1.EnableControls
end;
quack
جمعه 17 شهریور 1385, 14:31 عصر
ظاهرا چاره ای نیست باید همه رکورد هارا صفحه به صفحه لود کنم
از کمک همگی دوستان ممنون
vesal
جمعه 17 شهریور 1385, 19:43 عصر
نه گرید دلفی نیست .
میشه بگی از کدوم Grid استفاده می کنی؟
حرفه ای
پنج شنبه 23 شهریور 1385, 18:57 عصر
دوست عزیز
استفاده از Cluster Index برای فیلدهای اصلی یکی از راه حل هاست
البته Google از ویژگی منحصر به فرد Index On Memory بهره می برد که متاسفانه سرور بسیار قوی با حافظه زیاد نیازمند است
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.