PDA

View Full Version : اعمال تغییرات همزمان در کلیه کلاینت ها



ali_mnkt
یک شنبه 30 فروردین 1388, 00:16 صبح
با سلام خدمت دوستان

من یه محیط شبکه دارم که یه برنامه روی تمام کلاینت هاش نصب (برنامه ای که خودم نوشتم)

در این برنامه datagrid view ای وجود داره که اطلاعات اجناس رو نشون می ده .

حالا فرض کنید در یک کلاینت تعداد اجناس این جدول رو تغییر می ده و کلاینت دیگه در حال

مشاهده این اطلاعات در کامپیوتر خود است حالا من از چه تکنیکی در برنامه نویسی می تونم

استفاده کنم تا در موقع تغییر محتویات این جدول کلیه کلاینت ها بتونن این تغییرات رو ببینن

بدون این که نیاز داشته باشن datagrid view مربوط به کامپیوتر خود را refresh کنن ؟

khaste_007
یک شنبه 30 فروردین 1388, 00:56 صبح
با سلام در نهایت که برای اینکه اجناس به روز بشن باید رفرش بشه .
برای این کار برای اینکه نخواهی مرتبا رفرش کنی می توانی از یک فیلد در سمت سرور استفاده کنی که زمان آخرین تغییرات رو در خودش ذخیره می کنه در سمت کلاینت هم زمان آخرین رفرش رو بدونه و مرتبا در فواصل زمانی کوتاه این زمان ها را دریافت و مقایسه کند و اگر نیاز بود دیتا گراید رو رفرش کند.
روش های دیگری هم میتونی پیاده کنی که احتمالا پیچیدگی بیشتری خواهد داشت مثلا خود سرور در هنگام تغییر این تغییرات رو به کلایت ها اعلام کند تا کلایت ها بدانند که باید رفرش کنند که در این صورت نیاز به برنامه نویسی تحت شبکه دارید ولی در حالت قبل فقط همان اتصال به پایگاه داده کافی است.
موفق باشید.

ice007
یک شنبه 30 فروردین 1388, 08:52 صبح
در مورد sql notification تحقیق کنید. فکر کنم کار شما رو راه بیاندازد. در همین سایت مطالبی هست

NewFoxStudent
یک شنبه 30 فروردین 1388, 09:16 صبح
راه های زیادی وجود داره اما در نهایت حتماً باید Grid رفرش بشه

esmaeily-hosein
یک شنبه 30 فروردین 1388, 15:12 عصر
اینکه طرف دوم data قدیمی رو نتونه بروز کنه یه مسیله دیگست و راه های مختلفی داره .
ولی به نظر من خوبه از یه پورت udp به طور سیل آسا برا همه id هایی که تغییر کردند بفرستی تا اونها همون رکورد را مجددا رفرش کنند .

ali_mnkt
یک شنبه 30 فروردین 1388, 23:33 عصر
دوستان عزیز من در مورد query Notification یه چیزایی شنید ام ولی نمی دونم آیا اینجا

می شه استفاده کرد یا نه . از دوستانی که بیشتر با Query Notification کار کردن لطفا

راهنمایی کنن.

ali_mnkt
دوشنبه 31 فروردین 1388, 11:56 صبح
کسی نظری نداره ؟

esmaeily-hosein
دوشنبه 31 فروردین 1388, 12:02 عصر
چون connection تو close میشه فکر نمیکنم sql notification کارتو راه بندازه .
بیشتر تحقیق کن به ما هم بگو

mostafaaa
دوشنبه 31 فروردین 1388, 12:22 عصر
سلام دوست من
همونطور که یکی از دوستان هم به طور مختصر اشاره کردن یه راهش اینه که تمامی کلاینتها به یه پورت خاصی از سیستموتون برا ی دیتاگرام های UDP گوش بدن و هر زمان که پیامی مبتنی بر ادیت شدن دیتابیس اومد اونها هم گریدهاشون را رفرش کنن، و در سمت دیگه هم اگه هر سیستمی اطلاعات رو ویرایش کرد یه UDP Broadcast به اون پورت خاص بفرسته تا همه اون رو دریافت کنن.
یا علی

esmaeily-hosein
دوشنبه 31 فروردین 1388, 12:40 عصر
در ضمن حرف دوستمون تکمیل کنم نه همه داده رو بلکه فقط سطرهایی که تغییر کرده اند .

niloofar norouzi
چهارشنبه 23 اردیبهشت 1388, 11:06 صبح
سلام
چطور می تونم فقط تعذاذی از سطر ها را Refresh کنم؟
با تشکر

esmaeily-hosein
چهارشنبه 23 اردیبهشت 1388, 16:09 عصر
با استفاده از دستور IN میتونی رکورد هایی که تغییر کرده اند رو از پایگاه داده fetch کنی .
در ضمن table Adapter خاصیتی به نام clearbeforeFill دارد که اگر false باشد رکوردهای قبلی را پاک نکرده و آنها را با رکوردهای جدید merge میکند .