ورود

View Full Version : سوال: درخواست راهنمایی برای کار با بانک اطلاعاتی توسط چند کاربر



gholami146
دوشنبه 12 تیر 1391, 21:31 عصر
با سلام
من برنامهای دارم که با دلفی هست و در اون از بانک Sql 2000 استفاده میشه و بصورت چند کاربره است
در زمانی مه من اطلاعات رو بر روی یکی از سیستم ها تغییر می دهم در سایر سیستم ها تغییرات قابل مشاهده نیست مگر اینکه بانک در دیگر سیستم ها باز و بسته شود . که این کار بنظر خودم درست نیست .
من کلی در تالارها گشتم ولی هیچ کسی جز آقای کشاورز اطلاعاتی که مقبول باشد رو نداده بود
اما باز هم برای من کافی نبود
مثلا همون مشکلی رو که همه دارند رو من هم دارم : وقتی اطلاعات ویرایش میشه چطور باید فهمید ؟
یا چطوری باید اطلاعات داخل دیبی گرید بعد از اعمال تغییرات در دیگر سیستم ها بروز بشه ؟
لطفا به من کمک کنید متشکرم

سعید صابری
دوشنبه 12 تیر 1391, 22:12 عصر
sql server notification از نسخه 2005 به بعد برای همین کار ساخته شده است. اگه جستجو کنید به جواب خواهید رسید
البته از نسخه 2005 به بعد نه 2000

gholami146
دوشنبه 12 تیر 1391, 23:04 عصر
مشکل من طوری نیست که حتما نیاز به این کار باشد تا من سرورم را تغییر دهم
مشکل من این است که اگر برنامه بر روی سیستم 1 اجرا و اطلاعات را تغییر دهد اطلاعات مجددا در سیستم 2 بروز رسانی نمی شود مگر اینکه من یک بار بانک اطلاعاتی را باز و بسته کنم

سعید صابری
دوشنبه 12 تیر 1391, 23:14 عصر
قاعدتا باید همین طور باشه. اگر از کامپوننت های devart استفاده کنی میتونی از refresh اتوماتیک اون استفاده کنی

shobair
سه شنبه 13 تیر 1391, 09:46 صبح
سلام

این بطور مستقیم ارتباط با نوع برنامه نویسیت داره. مثلاً وقتی از Table به عنوان پیمانه اطلاعاتی استفاده کنی، با مشکلی که اشاره کردی برخورد میکنی و تازه اولش که حجم اطلاعات کم هست ممکنه بتونی با بسته و باز کردن اون رو به روز کنی ولی با حجیم شدن بانک اطلاعاتی این کار زمان بر میشه. میتونی به جای Table از Query به عنوان پیمانه اطلاعاتی استفاده کنی و با این کار مشکلت تا حد زیادی برطرف میشه. یعنی بجای بارگذاری اطلاعات تو Table هروقت خواستی اونها رو به روز شده توسط Query از سرور دریافت کنی.

شبیر

gholami146
سه شنبه 13 تیر 1391, 14:22 عصر
از راهنمایی های شما اساتید متشکرم
یعنی اگر من از کامپوننتDevart dotConnect Universal (http://www.google.com/url?sa=t&rct=j&q=%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF+%DA%A9%D8%A 7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA+devart&source=web&cd=2&ved=0CFgQFjAB&url=http%3A%2F%2Fsoft98.ir%2Ftags%2F%25D8%25AF%25D 8%25A7%25D9%2586%25D9%2584%25D9%2588%25D8%25AF%2B% 25DA%25A9%25D8%25A7%25D9%2585%25D9%25BE%25D9%2588% 25D9%2586%25D9%2586%25D8%25AA%2BDevart%2BdotConnec t%2BUniversal%2F&ei=CMXyT7j1F6TP4QS7vPD4CQ&usg=AFQjCNFGRv4SMhr8BPa81Uh2jcaDwiUbPw&cad=rja)
استفاده بکنم جدول من بطور اتوماتیک رفرش میشه و هیچ گونه خطایی بروز نمیکنه
چون من زمانی که جدولم رو با فرمان adotable.refresh بروز رسانی می کنم با پیغام خطا مواجه می شم.

و اما کوری اگر از اون استفاده کنم باید مرتبا کوری رو از سرور درخواست کنم که بنظرم این خوب نیست چون اگر فرضا کاربر یک سیستم در حال ویرایش اطلاعات باشه و من هم در حال ویرایش همون رکورد باشم من متوجه بروز شدن اون نمی شم مگر اینکه کوری رو از سرور درخواست کنم . که این کار باعث میشه من از حالت ادیت خارج بشم
جسارتا اگر اشتباه میکنم به من بگید.
و مورد دیگه ایا در این سایت به این بزرگی جایی وجود نداره یک بشه یک Example رو دریافت کرد و بر اساس اون یادگرفت .

سعید صابری
سه شنبه 13 تیر 1391, 14:39 عصر
باید از sdac یا unidac استفاده کنید.
قسمت دوم سوالتون همونطور که دوستمون shobair (http://barnamenevis.org/member.php?18930-shobair) گفتند
این بطور مستقیم ارتباط با نوع برنامه نویسیت داره باید هنگام ویرایش تیبلتون قفل کنید تا همزمان فقط یک کاربر بتونه ویرایش کنه.

shobair
سه شنبه 13 تیر 1391, 18:25 عصر
سلام

میتونید بجای اینکه جدول رو قفل کنید با روشهای برنامه نویسی رکورد در حال ویرایش رو قفل کنید. مثلاً یک فلگ رو ست کنید و قبل از ویرایش کردن اون رو چک کنید که کس دیگه ای ست نکرده باشه. استفاده از Query هم سرعت شما و هم دقتتون رو بالا میبره. من سیستمی رو راه اندازی کردم که حدود 30 تا کاربر همزمان ازش استفاده میکنن با Query هم انجام شده و مشکل خاصی هم براشون پیش نمیاد. همونطور که گفتم باید روش برنامه نویسی خودتون رو باهاش تنظیم کنید.

شبیر

gholami146
سه شنبه 31 مرداد 1391, 19:29 عصر
ممنون از همه دوستانی که زحمت کشیدن و به سئوالات من جواب دادن ولی بهترین راه که گفته شد و من نتیجه گرفتم همو کامپوننت Devart بود
باز هم از همگی تشکر میکنم