PDA

View Full Version : آپدیت داده های اکسس توسط کلاینت ها



Payam Moradi
دوشنبه 04 آبان 1383, 08:02 صبح
سلام
یک سلام مخصوص هم خدمت hmm
در تاپیک قبلی بحث نصب برنامه روی سرور و کلاینت شد. من یک مشکل در این مورد دارم.
یک فایل Exe که همون برنامه و یک فایل Access قسمت اصلی برنامه رو تشکیل دادند. حالا هر طور که اینا رو شبکه نصب شده باشند (یا میانبر از سرور به کلاینت ها و یا قرار دادن یک فایل Exe در هر کلاینت (همون که hmm میگفت)).
وقتی در یکی از کلاینت ها یا سرور اطلاعات آپدیت میشه، یعنی رکوردی تغییرات درش انجام میدن در همان لحظه در تمام سیستمهای دیگر آپدیت (یا تغییرات جدید) مشاهده میشه. تا اینجا مشکلی نداره. ولی وقتی در یکی از سیستم ها رکورد جدیدی ایجاد میشه، تا سیستم های دیگر در شبکه از برنامه خارج و ورود مجدد نشن، نمی تونن رکورد جدید رو ببینن. (منظورم اینه که تا رکوردست در بقیه برنامه ها بسته و مجددا باز نشه و یا اینه Requery نشه نمی تونن رکورد های اضافه شده رو ببینن).
برای همین مجبور شدم یک کلید برای بازیابی اطلاعات جدید (یا همون Refresh) در هر برنامه تعبیه کنم.
حالا یعنی من تنظیمات رکورد ست رو اشتباه انجام میدم یا این مشکل طبیعیه.
من از ADODB برای اتصال استفاده میکنم. بدین صورت :


Dim r As New ADODB.Recordset
r.CursorLocation = adUseServer
r.Open "SELECT * FROM Table1;", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mymdb.mdb;Mode=ReadWrite;Persist Security Info=False;", adOpenStatic, adLockOptimistic

تنظیمات بالا رو هم به هر شکل عوض کردم نتیجه نگرفتم. :(
ضمنا شبکه بدین صورته که چند کامپیوتر با یک هاب و کابل و کارت شبکه به لینک شدن و هر کامپیوتر، کامپیوتر دیگه رو تو خودش میبینه. در واقع سروری وجود نداره.
البته من این رو در سیستم خودم با اجرای دوبار یک برنامه هم آزمایش میکنم که همون نتیجه رو میده. (یعنی برنامه exe رو دوبار تو کامپیوترم اجرا میکنم. در نتیجه انگار دو نفر دارن باهاش کار میکنند.) به هر حال فرقی نداری تو شبکه هم همین مشکل هست.
ممنون میشم اشکال رو بگید :)

hmm
دوشنبه 04 آبان 1383, 13:37 عصر
بله این امر طبیعیه چون رکوردست یکبار پر میشه و شما نتیجه رو میبینید اگه میخواهید تغییرات رو هم مشاهده کنید باید همون طور که گفته شد رکوردست رو refresh کنید البته اگه از متد adopendynamic در بازکردن رکوردست استفاده کنید لااقل تغییرات رو بلافاصله رو همون کلانیت خودتون میتونید ببینید (نه همه کلاینتها)
خب راه حل همونیه که عرض شد (البته اگه دوستان راه حل دیگه ای دارن رو نمیدونم)
اگه حتما میخواهید هر لحظه اطلاعات بروز باشه میتونید با استفاده از کامپوننت timer هر چند ثانیه یکبار رکوردست رو بروز کنید البته این روش توصیه نمیشه چون هم سرعت پردازش سرور کم میشه هم ترافیک شبکه زیاد میشه هم پردازش کلاینت بالا میره ولی اگه چاره ای نیست همین کار رو انجام دهید
درضمن این مشکل(اگه بشه اسمشو مشکل گذاشت) هیچ ربطی به چگونگی ساختار شبکه شما نداره
موفق باشید

Payam Moradi
دوشنبه 04 آبان 1383, 17:27 عصر
سلام

خیلی ممنون. پس همه با این مشکل دارند.(البته اگه داشته باشند). حرف شما هم درسته اگه بخواهم مثلا هر چند ثانیه یک بار Refresh کنم ترافیک زیاد و سرعت کار کم. و مشکل اصلی که با این کار برای من پیش می آید اینه که اگر من هر چند ثانیه Refresh کنم، رکوردست میاد روی اولین رکورد که باز مجبورم با یک برنامه ببرمش روی رکوردی که قبل از refresh بوده. حالا شما فرض کن یک خورده سرعت کامپیوتر کم باشه و ترافیک شبکه بالا. اونوقته که دیگه کاربر هر چند ثانیه هی اطلاعات جلوی چشماش عوض بدر میشه.
آخه میخوام بانک بین کلاینت ها زنده باشه.
ظاهرا باید ساخت دیگه. :?
البته یک راه حل پیدا کردم امیدوارم موثر باشه. :(
از توجه شما هم ممنون. :flower:

آقا من تا هم اکنون به غیر از اکسس با هیچ بانک دیگه ای کار نکردم. میشه یکم راجع به سایر بانک های که تو شبکه جواب خوبی میدن توضیح مختصر بدید.
این SQL Server دقیقا چه کار میکنه. این هم یک جور بانک اطلاعاتی تحت شبکه است یا واسطه ای بین بانک ها ؟ میشه توضیح بدید که من چطور باید این رو سیستم نصب کند. یا حتما باید شبکه داشته باشم. اصلا از کجا گیر بیارمش.؟
حالا اگه از SQL استفاده کنم بازم این مشکل بالا رو دارم یا نه؟
آیا حتما باید ویندوز ها 2000 یا 98 باشند؟ آخه من ویندوزهای قدیمی تر از XP رو گذاشتم کنار. :wink:

hmm
سه شنبه 05 آبان 1383, 07:32 صبح
:strange: برای پاسخ به این همه سوال باید برید از آقای امین ثباتی (وسایر اساتید) وقت بگیرید به شما آموزش بده
بهتره این سوالات رو در بخش مربوطه بپرسی بهت جواب میدن(البته قبلش یه جستجو بکن چون اکثر سوالات رو قبلا جواب دادن )
ولی مختصر بعضی ها رو که میدونم جواب میدم

این SQL Server دقیقا چه کار میکنه. این هم یک جور بانک اطلاعاتی تحت شبکه است یا واسطه ای بین بانک ها ؟
دقیقا بانک اطلاعاتیه ولی قوی تر و بمراتب امن تر(چه از لحاظ امنیت ارتباطی و چه از لحاظ امنیت داده ای)

میشه توضیح بدید که من چطور باید این رو سیستم نصب کند.
مثل سایر برنامه ها ولی قبلش یه pdf تو همین سایته در مورد نصبه حتما مطالعه کن

حتما باید شبکه داشته باشم
نخیر روی یک کامپیوتر تنها هم میتونید نصب کنید (البته اگه اشتباه نکنم باید کارت شبکه رو داشته باشید - این رو مطمئن نیستم لطفا اساتید بفرمایند :oops: )

اصلا از کجا گیر بیارمش.؟
از فروشنده نرم افزار سر خیابون :mrgreen:

حالا اگه از SQL استفاده کنم بازم این مشکل بالا رو دارم یا نه؟
مشکل شما ربطی به موتور دیتابیس نداره حتی اگه از اوراکل هم استفاده کنید همین مشکل رو دارید

آیا حتما باید ویندوز ها 2000 یا 98 باشند؟
نخیر برای تمام ویندوز های بعد از 98 جواب میده حتی خود 98 نیز هم

آخه من ویندوزهای قدیمی تر از XP رو گذاشتم کنار.
درود بر شما اگه از xp (و کلا نسخه های کلاینت سیستم عامل ) استفاده میکنید نمیتوانید از نسخه سروری sqlserver استفاده نمایید شما باید نسخه desktop یا personal این نرم افزار رو نصب کنید

موفق باشید- hmm

vbprogramer
سه شنبه 05 آبان 1383, 13:33 عصر
اووووووووووووووووه چه حوصله ای داری بابا :wink: :تشویق:

کم حوصله
سه شنبه 05 آبان 1383, 23:57 عصر
البته اگه اشتباه نکنم باید کارت شبکه رو داشته باشید
خیر نیازی به کارت شبکه نیست

ضمنا شما جهت رفع مشکلتان می توانید زمانی که می خواهید جستجویی انجام دهید یا اینکه رکوردی را آپدیت نمایید عملیات رفرش کردن را همزمان انجام دهید در مواقع دیگر نیازی نیست

hmm
چهارشنبه 06 آبان 1383, 06:57 صبح
خیر نیازی به کارت شبکه نیست
ممنون :تشویق:

ضمنا شما جهت رفع مشکلتان می توانید زمانی که می خواهید جستجویی انجام دهید یا اینکه رکوردی را آپدیت نمایید عملیات رفرش کردن را همزمان انجام دهید در مواقع دیگر نیازی نیست
کم حوصله جان دوستمون میخواد اطلاعات وارد / اصلاح شده توسط کاربران دیگه رو online ببینه