View Full Version : رفرش شدن دیتا
behzad_dr
یک شنبه 23 مرداد 1390, 13:54 عصر
سلام دوستان عزیز
برنامه ای که نوشتم به زبان delphi 2010 و دیتابیس sql کار کردم .
و دیتابیسم روی هاسته . مشکل اینجاست که زمانی که 2 کاربر به طور همزمان داده وارد میکنند تا زمانی که تیبل ها دوباره لود نشدن داده همدیگه رو نمی بینند .. من اومدم بعداز هر ذخیره سازی تیبل ها رو دی اکتیور کردم و برای جستجو یا برای هرکاری دیگه دوباره اکتیو می کنم اما این اکتیو و دی اکتیو کردن خیلی زمان می بره روی هاست و فرض کنید توی یه فرم اگه 5 تیبل بخواد این عمل انجام بشه حوضله کاربر سر میاد .
آیا بهترین متد چیست ؟ ضمنا refresh تیبل رو هم تست میکنم اما کار نمیکنه !
BORHAN TEC
یک شنبه 23 مرداد 1390, 16:14 عصر
و دیتابیسم روی هاسته . مشکل اینجاست که زمانی که 2 کاربر به طور همزمان داده وارد میکنند تا زمانی که تیبل ها دوباره لود نشدن داده همدیگه رو نمی بینند
لطفاً این قسمت را واضح تر توضیح دهید.
behzad_dr
یک شنبه 23 مرداد 1390, 18:22 عصر
تصور کنید یه کاربر داره رو برنامه اطلاعات وارد می کنه و کاربر دیگه تا یه بار از برنامه خارج نشه و دوباره وارد بشه اطلاعات جدید که توسط کاربر دیگه وارد شده رو نمیبیه .
vcldeveloper
یک شنبه 23 مرداد 1390, 19:15 عصر
برنامه ای که نوشتم به زبان delphi 2010 و دیتابیس sql کار کردم .
و دیتابیسم روی هاسته . مشکل اینجاست که زمانی که 2 کاربر به طور همزمان داده وارد میکنند تا زمانی که تیبل ها دوباره لود نشدن داده همدیگه رو نمی بینند .
قبلا درباره این موضوع مفصلا توضیح دادم، راه هایی که می تونید استفاده کنید:
1- استفاده از قابلیت Query Notification در SQL Server 2005 یا نسخه های جدیدتر.
2- استفاده از یک سرور میانی برای انجام آپدیت ها (تغییر معماری برنامه به 3 لایه).
3- استفاده از CursorType ایی که مشاهده تغییرات همزمان کاربران را فراهم کنه؛ Dynamic. البته مطمئن نیستم در SQL Server پشتیبانی شده باشه.
درباره هر کدوم از موارد بالا بارها در همین سایت توضیح داده شده.
در ضمن، در یک برنامه معمولا نیازی نیست که دو کاربر همیشه از تغییرات یکدیگه آگاه باشند، خیلی وقت ها تغییرات یک کاربر تاثیری روی تغییرات سایر کاربران نداره، یا نیازی نیست که اونها ازش خبردار بشند. پس بهتره که برنامه تون رو طوری بنویسید که تا حد امکان، کمتر نیاز به این باشه که کاربران از تغییرات اعمال شده توسط همدیگه بصورت لحظه ایی با خبر بشند. مثلا اگر یک کاربر داره 100 رکورد اول برگشت داده شده از یک کوئری را مشاهده میکنه، و یک کاربر دیگه رکورد 101 را ویرایش میکنه، نیازی به آپدیت داده ها در سمت کاربر اول نیست. حتی اگر کاربر دوم داره داده های 100 رکورد اول را تغییر میده، در بسیاری از موارد نیازی به آپدیت داده ها در سمت کاربر اول نیست. مثلا کاربر اول داره اسامی 100 مشتری و خریدهای آنها را مشاهده میکنه، کاربر دوم میاد آدرس مشتری 30 ام رو تغییر میده، خب این تغییر آدرس خللی در کار کاربر اول ایجاد نمیکنه که لازم باشه داده هاش آپدیت بشه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.