ورود

View Full Version : مشکل Refresh در برنامه تحت شبکه



saeed_82
چهارشنبه 16 آذر 1384, 19:28 عصر
سلام
من یه برنامه دارم که به بانک اینتربیس از طریق شبکه محلی دسترسی داره و اطلاعات لازم رو هم بدون استفاده از کلاینت دیتاست و بصورت مستقیم از ibtable با ApplyUpdate به بانک مربوطه ارسال میکنم

مشکل اینجاست که اطلاعات بدرستی رو بانک ارسال و ثبت میشوند ولی کلاینتهای دیگر که نسخه ای مشابه این برنامه را دارند تغییرات را علی رغم باز و بسته کردن ibTable یا اجرای دستور جدید SQL برای Select جدید مشاهده نمی کنند ، تنها راه دسترسی به اطلاعات ارسالی کلاینتهای دیگر روی بانک این است که ibDatabase باز و بسته شود که این باعث کندی کار است.
به نظر شما مشکل کجاست؟

Babak-Aghili
یک شنبه 27 آذر 1384, 00:42 صبح
بصورت مستقیم از ibtable با ApplyUpdate به بانک مربوطه ارسال میکنم...

= گناه کبیره !!

پیشنهادات :

1- مشکل کند بودن این هست که دیتا را کلاینت داره میفرسته مستقیما ... بهتره وظایف اپدیت ها و کلا Business Rules ت را یک بار بنویسی و بصورت ActiveX DLL ، بذاری بغل همان جایی که Database Server ت هست ...

2- حالا کلاینت ها ،‌از طریق اینترفیس هایشان ، در چند لحظه متصل شوند و دوباره DC شوند . سپس سرحوصله تغییراتشان را اعمال کنند و فقط RecordSet جدید را در یک لحظه بصورت یک پارامتر که بهتر است از نوع Variant بگیری ، ارسال کنند ...

3- حالا عملیات اصلی توسط DLL‌ هات انجام میشه که خب بغل دست سرور هستند !!!

4- به روش فوق ، فکر میکنی اگر روزی روزگاری ( در مکزیک؟!!) ، قرار شد برنامه ات را WebBased کنی ، چند خط کد را باید عوض کنی ...

5- Lock‌Type ت را بذار روی Optimistic


تغییرات را علی رغم باز و بسته کردن ibTable یا اجرای دستور جدید SQL برای Select جدید مشاهده نمی کنند

فرض کنید که نفر اول ، فلان پول را 10 درصد افزایش داد و ارسال کرد ... حالا همان موقع نفر دوم هم همان پول را 10 درصد افزایش بده و ارسال کنه !!!!! ( = ثروتهای بادآورده ! )
راه حل برنامه نویسی :: یک OldValue هم همیشه ذخیره و ارسال کن ... قبل از ذخیره در دیتابیس ، با مقدار قبلی که دریافت کرده بوده ، چک کن ... در صورت تطابق ، آپدیت صورت گیرد ........