PDA

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



sehm67
چهارشنبه 11 بهمن 1396, 13:57 عصر
سلام
با چه تابعی میتونم دائما اطلاعات دیتابیس رو چک کنم
منظورم اینه ک دستور جستجو دائما فعال باشه
این دستور برای چک کردن تاریخ تولد یا تاریخ چک ها میخام
از تایمر نمیخام استفاده کنم چون باعث هنگ شدن برنامه میشه
لطفا اصولی ترین روش رو معرفی نمایید
باتشکر از اساتید محترم

hamidrezax1
چهارشنبه 11 بهمن 1396, 16:53 عصر
سلام دوست عزیز
اینکه فرمودین با تایمر نمی خواین این کا رو انجام بدین یکم جای سوال برام پیش اومد.ای کاش دقیقا مشخص میکردین که هر چند مدت می خواین این بروز رسانی انجام بشه؟
پیشنهاد میکنم به جای اینکه دستوراتتون رو در یک تایمر قرار بدین یه ساعت راه اندازی کنید و برای ساعتتون شرط قرار بدین که در ساعت های مشخص شده یک عمل خاص رو انجام بده و اون کار رو هم میتونید با ترد ها انجام بدین (http://barnamenevis.org/showthread.php?543645-stop-%D9%88-progressbar-%D8%AF%D8%B1-backgroudworker)که برنامه هنگ نکنه و به کار خودش ادامه بده(البته این ها نظر شخصی منه و ممکن دوستان راهکارهای بهتری داشته باشن)

sehm67
چهارشنبه 11 بهمن 1396, 17:23 عصر
hamidrezax1
اینکه فرمودین با تایمر نمی خواین این کا رو انجام بدین یکم جای سوال برام پیش اومد.ای کاش دقیقا مشخص میکردین که هر چند مدت می خواین این بروز رسانی انجام بشه؟


غیر قابل پیش بینیه
میخام یه جورایی هوشمند باشه مثلا اومد کاربر ساعت و تاریخ سیستم تغییر بده و یا اینکه اگه سیستم چند کاربره باشه و اطلاعات جدید اضافه بشه و ...

استفاده از ترد مد نظرم بود ولی آیا اصولیه؟؟؟
آیاد راه دیگه ای وجود داره ایا تو دانت تابعی وجود داره ک هنگام تغییر در نرم افزار بطور خودکار متوجه بشه؟؟؟

hamidrezax1
چهارشنبه 11 بهمن 1396, 19:28 عصر
دوست عزیز راه حل پیشنهادی من به شما بررسی دیتا بیس هست. به نحوی که با هرگونه تغیر در آن برنامه اقدام به درخواست مربوطه کنه.مثلا برنامه آخرین ردیف دیتابیس بگیره و به محض تغیر اون برنامه درخواست مربوطه رو اجرا کنه.در کل هوش مصنوعی ضمن بهره بری از یکسری سخت افزار و نرم افزار و توابع ، الگوریتم کار میکنه و بر اساس تغییرات بهترین راهکار رو پیشنهاد میکنه.لازم بدونین در عوض این شما هستین که طراحی این هوش رو به عهده دارین نه نرم افزار.موفق باشید

sehm67
چهارشنبه 11 بهمن 1396, 21:45 عصر
مثلا برنامه آخرین ردیف دیتابیس بگیره و به محض تغیر اون برنامه درخواست مربوطه رو اجرا کنه.


دنبال همین یه تیکه جمله هستم راهش چیه. راهکار میخام گیر این یه تیکه ام

از اساتید ک در این زمینه تجربه داشتن لطفا راهکار بدن

محمد آشتیانی
پنج شنبه 12 بهمن 1396, 14:49 عصر
سلام
اگر از Sql Server استفاده می کنید ، راه حل شما استفاده از Sql Dependency هست
قبلا توی تالار سی شارپ توضیحات کاملی از این راه حل ارائه دادم ، ممکنه مطالعه اون براتون راهگشا باشه (کد پیچیده ای هم نداره و تبدیلش سادست)

http://barnamenevis.org/showthread.php?501008-%D9%85%D8%A7%D9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D 9%86%DA%AF-database&highlight=dependency

این لینک رو مطالعه بفرمائید ، احتمالا سرنخ لازمه رو بهتون میده.

sehm67
دوشنبه 16 بهمن 1396, 22:23 عصر
سلام
اگر از Sql Server استفاده می کنید ، راه حل شما استفاده از Sql Dependency هست
قبلا توی تالار سی شارپ توضیحات کاملی از این راه حل ارائه دادم ، ممکنه مطالعه اون براتون راهگشا باشه (کد پیچیده ای هم نداره و تبدیلش سادست)

http://barnamenevis.org/showthread.php?501008-%D9%85%D8%A7%D9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D 9%86%DA%AF-database&highlight=dependency

این لینک رو مطالعه بفرمائید ، احتمالا سرنخ لازمه رو بهتون میده.

سلام آقای آشتیانی
اگه بخوام تو برنامم از بانک اکسس و یا Sql Server Compact
استفاده کنم چطور این کارو انجام بدم؟؟؟؟

محمد آشتیانی
سه شنبه 17 بهمن 1396, 07:58 صبح
سلام
قابلیتی که عرض کردم در این DBMS هایی که اسم بردید وجود ندارند و مختص Sql Server (غیر از نسخه کامپکت) هست

sehm67
سه شنبه 17 بهمن 1396, 09:18 صبح
سلام
قابلیتی که عرض کردم در این DBMS هایی که اسم بردید وجود ندارند و مختص Sql Server (غیر از نسخه کامپکت) هست



با چه تابعی میتونم دائما اطلاعات دیتابیس رو چک کنم
منظورم اینه ک دستور جستجو دائما فعال باشه
این دستور برای چک کردن تاریخ تولد یا تاریخ چک ها میخام


از نظر شما از نخ ها استفاده کنم راه مناسبیه؟؟

محمد آشتیانی
سه شنبه 17 بهمن 1396, 13:02 عصر
سلام
وقتی DBMS مورد استفاده ی شما راه حلی مثل Sql Dependency ارائه نده ، طبیعتا مجبور خواهید شد خودتون یک راهی براش پیدا کنید ، درستش این هست که برای همچین کاری باید از Thread ها استفاده کنید و نمیشه توی Main Thread این چک کردن دیتابیس رو انجام بدید چون ممکنه زمان بر بشه و رابط کاربریتون به اصطلاح دچار مشکل بشه (هنگ کنه).
اینکه مکانیزم چک کردنتون چطور باشه و بازه های زمانیش به چه صورت ، باید صورت مسئله رو دید.

یک راهی که به ذهن بنده میرسه ، برای اینکه همه ی کلاینت ها درگیر این چک کردن نشوند ، میتونید یک برنامه جداگانه مثلا در قالب یک ویندوز سرویس بنویسید که این چک کردن رو با مکانیزمی انجام بده و به اطلاع کلاینت ها برسونه ، مکانیزم اطلاع رسانیش هم میتونید پیاده سازی کنید و یا از ابزارهای فوق العاده ای مثل Rabbit MQ استفاده کنید ، البته همه چیز بستگی به معماری برنامه شما و گستردگی اون داره ، اگر برنامتون تک کاربره هست ، این پاراگراف از نوشته بنده رو نادیده بگیرید. (این میتونه برای برنامه هایی که تعدادی کلاینت دارند استفاده بشه ، که هر کلاینت بصورت جداگانه باری رو روی دیتابیس تحمیل نکنه برای چک کردن)