PDA

View Full Version : سرعت در لود شدن فرم



omidamiry
یک شنبه 27 فروردین 1391, 02:26 صبح
با سلام به دوستان
تو فرم دوتا کمبو باکس دارم که دیتا ستشونو به فیلد نام و نام خانوادگی مشتریان اتصال دادم
سوال 1 ؟
در هربار لود شدن فرم اطلاعات رفرش شده و در کمبو باکسها اد ویشن بصورت خود کار
اگر تعداد رکورد ها کم باشه زمانی نمیبره اگر تعداد رکورد به میلیون برسه خیلی طول میکشه؟
سوال 2 ؟
اکسس بهتره ( سریعتره ) ؟ یا اس کیوال ؟
مپچه راه حلی وجود داره ؟

ozzy_mra
یک شنبه 27 فروردین 1391, 07:34 صبح
سلام
1- میتونی از BackgroundWorker استفاده کنی تا هم فرمت سریع لود بشه و هم سر فرصت اطلاعاتت بایند بشه.
2- بستگی به حجم اطلاعاتت داره. در مورد حجم اطلاعات پایین مثلاً تا 100000 رکورد اکسس مخصوصاً ورژن 2010 خیلی سریع کار میکنه. برای رکورد های بالاتر معمولاً از sql Server یا Oracle و ... استفاده می کنند . ولی قبل از سرعت اگه برنامه شما قراره روی شبکه و بین چند کاربر اجرا بشه باید از دیتابیس هایی که قابلیت اجرا به عنوان دیتابیس مرکزی رو دارند استفاده کنید مثل SQL Server

ASKaffash
یک شنبه 27 فروردین 1391, 07:39 صبح
سلام
1- میتونی از BackgroundWorker استفاده کنی تا هم فرمت سریع لود بشه و هم سر فرصت اطلاعاتت بایند بشه.
2- بستگی به حجم اطلاعاتت داره. در مورد حجم اطلاعات پایین مثلاً تا 100000 رکورد اکسس مخصوصاً ورژن 2010 خیلی سریع کار میکنه. برای رکورد های بالاتر معمولاً از sql Server یا Oracle و ... استفاده می کنند . ولی قبل از سرعت اگه برنامه شما قراره روی شبکه و بین چند کاربر اجرا بشه باید از دیتابیس هایی که قابلیت اجرا به عنوان دیتابیس مرکزی رو دارند استفاده کنید مثل SQL Server

سلام
میشه لطفا در خصوص ردیف 1 توضیح فنی تری ارائه دهید

ozzy_mra
یک شنبه 27 فروردین 1391, 09:12 صبح
یه BackGroundWorker به Toolbax رو فرمت بنداز
خاصیت های workerReportsProgress و WorkerSupportCancalation رو به true تغییر بدید
یه پراپرتی از نوع دیتا تیبل تعریف کنید که در کل فرم مقدارش شناخته شده باشه
public DataTable dt { get; set; }
در لود فرمتون دستورات زیر رو بنویسید
this.Cursor = Cursors.WaitCursor;

backgroundWorker2.RunWorkerAsync();
حالا روی BackgroundWorker دو بار کلیک کنید و در رویداد Do_Work دستورات زیر رو بنویسید :
DT = new DataTable();
DT=Func()//تابعی که دیتا تیبلی رو که قراره به کمبو بکست بایند بشه رو استخراج میکنه
حالا در بخش ایونت های BackGroundWorker کد زیر رو برای رویداد RunWorkerCompleted بنویس

backgroundWorker1.CancelAsync();
this.Cursor = Cursors.Default;
ComboBox1.DataSource = DT;
ComboBox1.DisplayMember = "فیلد موردنظرتون";
ComboBox1.ValueMember = "فیلد مورد نظر";
تمام

hakim22
یک شنبه 27 فروردین 1391, 09:53 صبح
وقتی تعداد رکوردها اینقدر زیاده استفاده از combobox درست نیست. شما باید جستجو رو به نحوه ی دیگه ای پیاده کنید .

omidamiry
یک شنبه 27 فروردین 1391, 11:24 صبح
نميشه تو فروشگاه با وارد كردن هر حرف از اسم ميخاهيم كليه افرادي كه تو ديتا هستن با همان كلمات نمايش داده شود
با تشكر از دوستان

ozzy_mra
دوشنبه 28 فروردین 1391, 07:44 صبح
نميشه تو فروشگاه با وارد كردن هر حرف از اسم ميخاهيم كليه افرادي كه تو ديتا هستن با همان كلمات نمايش داده شود
با تشكر از دوستان

چرا میشه
کوئریتو به صورت زیر بنویس
select * from YourTable Where left(yourField,@len)=@value
بعد اگه اطلاعاتی که وارد می کنی مثلاً در TextBox1 باشه، TextBox1.Text رو به عنوان @value و TextBox1.Text.length رو به عنوان @len به کوئریت پاس بده
همچنین این دستورات رو باید تو رویداد TextChange مربوط به تکست باکست بنویسی