PDA

View Full Version : سوال: refresh کردن دیتا گرید ویو



b4u_love2000
جمعه 19 خرداد 1391, 20:00 عصر
سلام دوستان
من می خوام یرنامه بنویسم که دیتا گرید ویو یی که در آن هست هر 5 سانیه اتومات refresh بشه آخه برنامه که نوشتم شبکه است و چند نفر میتونن اطلاعات ثبت کنن . با تشکر

فرید نجفلو
جمعه 19 خرداد 1391, 22:45 عصر
سلام
دوست عزیز درسته شما می تونید از تایمر استفده کنید ولی بهتره یه دکمه بزارید که خود کاربر رفرش کنه چون با تایمر 5 ثانیه فرض کنید شما 10 تا کاربر دارید یعنی تقزیبا هر نیم ثانیه یه بار باید دیتابیس خونده بشه و این از نظر سرعت و پاسخگویی برنامه شما می تونه به یه مشکل جدی تبدیل بشه
البته امکانت دیگه ای وجود داره که از SQL Server 2008 به بعد کاملا مهیا شدن تا شما از تغییرات دیتابی به محض وقوع مطلع بشید و نیازی به تایمر ندارد
سرچ کنید!

NasimBamdad
شنبه 20 خرداد 1391, 01:49 صبح
البته امکانت دیگه ای وجود داره که از SQL Server 2008 به بعد کاملا مهیا شدن تا شما از تغییرات دیتابی به محض وقوع مطلع بشید و نیازی به تایمر ندارد
سرچ کنید!

سلام . میشه یک اسمی ، یک رفرنسی چیزی بدی که برم دنبال این قضیه . من 2008 دارم . ممنونم !

ahmadreza517
شنبه 20 خرداد 1391, 09:22 صبح
به نام تنها برنامه نویس هستی
سلام ,

از تریگر استفاده کنید.

NasimBamdad
شنبه 20 خرداد 1391, 11:02 صبح
به نام تنها برنامه نویس هستی
سلام ,

از تریگر استفاده کنید.

این تریگر چی هست ؟ میشه یک رفرنس بدی ؟

omidamiry
شنبه 20 خرداد 1391, 11:30 صبح
سلام برنامتونو توضیح بدید.
کارشما تقریبا مثل یاهو میمونه
وقتی میلو باز میکنید در هر مدت خاصی رفرش نمیشه اگر از سرور پیامی برای شما بیاد در سیستم شما رفرش و نمایان میشه و یک باتن داره که به دلخواه کار بر صفحه رو رفرش میکنه
از مدل متصل استفاده کردید یا غیر متصل؟
میتونید قطعه کدی بنویسید زمانی که تغییرات در بانک رخ داد نرمافزار بعد از دریافت گرید ویو هارا رفرش کنه

mehran_337
یک شنبه 15 مرداد 1391, 02:46 صبح
منم مشکل فوق دارم کسی هست راهنمایی کنه ؟
می خوام وقتی اطلاعاتی وارد کردم فرم کاربران دیگر هم رفرش بشه

the king
یک شنبه 15 مرداد 1391, 03:24 صبح
منم مشکل فوق دارم کسی هست راهنمایی کنه ؟
می خوام وقتی اطلاعاتی وارد کردم فرم کاربران دیگر هم رفرش بشه
Trigger ها اون چیزی نیستند که شما بخواهید، Trigger به طراح بانک اطلاعاتی کمک می کنه تا یکسری قوانین خاص رو در بانک اطلاعاتی
پیاده کنه که با مشخصات عادی فیلد ها نمیشه تعیین کرد. فرضا تعداد سطر های یک جدول از فلان قدر تجاوز نکنه یا اگر در فلان جدول
رکوردی اضافه شد فلان رکورد هم به جدول بهمان اضافه بشه و ... Trigger ها برای منظوری که شما می خواهید مناسب نیستند.

شما به Query Notifications احتیاج دارید که وقتی تغییری در بانک اطلاعاتی ایجاد شد برنامه شما رو مطلع کنه، نه اینکه برنامه تون
مدام محتویات بانک اطلاعاتی رو چک کنه که ببینم نکنه تغییری کردی و من خبر ندارم.

ببخشید وقت سحری خوردنه، به MSDN مراجعه کنید :
Query Notifications in SQL Server (http://msdn.microsoft.com/en-us/library/t9x04ed2.aspx)

Using SqlDependency in a Windows Application (http://msdn.microsoft.com/en-us/library/a52dhwx7(VS.80).aspx)

ali_habibi1384
یک شنبه 15 مرداد 1391, 09:42 صبح
به نام تنها برنامه نویس هستی
سلام ,

از تریگر استفاده کنید.
تريگر يك ايونت روي ديتابيسه و در اونجا قابل تشخيص براي خود ديتا بيس. چطور ميخواي ازش استفاده كني!

mehran_337
یک شنبه 15 مرداد 1391, 10:53 صبح
منم تریگر رو راه حل نمی دونم . از دوستان خواهشمندم راه حل ارائه بدن.
بحث اینجاست که چند تا سیستم در شبکه دارن کار می کنن . حالا یکی از کاربرا رکوردی رو تغییر می ده آپدیت یا اینزرت یا حذف .
حالا بقیه سیستم ها بدون اینکه تایمری داشته باشن یا دکمه رفرشی ، می خواهیم دیتاگریدشون خودکار رفرش بشه.

sirvan-me
یک شنبه 15 مرداد 1391, 11:02 صبح
اینجا هم سوال دوستمون پرسیده شده و یه سری جواب ....

لینک (http://stackoverflow.com/questions/3723551/how-can-i-notify-my-program-when-the-database-has-been-updated)

در مورد استفاده از کلاس SQLDependency هم بحث شده .

the king
یک شنبه 15 مرداد 1391, 15:58 عصر
تريگر يك ايونت روي ديتابيسه و در اونجا قابل تشخيص براي خود ديتا بيس. چطور ميخواي ازش استفاده كني!

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

NasimBamdad
یک شنبه 15 مرداد 1391, 17:02 عصر
بعضی دوستان لطف کردند که لینک هایی قرار دادند و مفید بودند ، من می رم تست می کنم و اگه به نتیچه رسید که کد خوب اینجا می زارم

بعضی هم توضیحاتی دادند که مفید بوده ، ولی بهتر هست که همراه با سورس و کد باشه که قابل فهم تر باشه . اگه با سرچ و گوگل کردن به نتیچه می رسیدیم اینجا تاپیک نمی زدیم .

من خودم قبل از تاپیک زدن سرچ می کنم ! ! ! ! !

ehsan7007
شنبه 21 مرداد 1391, 09:49 صبح
سلام دوستان.
من هم با رفرش دیتاگریدم مشکل دارم.
چون از روش پراپرتی برخی خواص coulmn هام رو تغییر دادم ، روشی برای refresh کردن دیتاگریدم می خوام که خواص و جزئیات اون رو تغییر نده.
دوستان لطفا راهنمایی کنند.

ali_habibi1384
شنبه 21 مرداد 1391, 11:12 صبح
بعضی نرم افزار ها هستند که تعداد کاربرانشون خیلی زیاده، مثلا چند هزار کاربر. در اینجور موارد اگه همه Client ها بخواهند گوش به زنگ تغییر در بانک اطلاعاتی
باشند دیگه این شیوه های عادی جواب نمیده. در اینجور مواقع به عنوان ترفند از Trigger کمک می گیرند که مشکل رو به شیوه دیگری رفع کنند
تا از میزان منابع مورد نیاز کم بشه.
منظورتونو متوجه نشدم شايد شما منظور منو بد برداشت كرديد.
من ميگم چطور با تريگر ميخواد تغييرات رو بفهمه و به برنامه ارسال كنه؟!مگه بجز Dependency راه ديگه هم هست؟
نمونه استفاده از Dependency كه دقيقا همون چيزي كه همه ميگن مشكل داريم واسه داده ها توي سايت آپلود كردم.اين برنامه يك چت ساده توي شبكه هست كه به محض دريافت اطلاعات جديد كاربرا ميبينن.با VS2010, Sql2008 ديتابيسش هم اسكريپت كردم.
اينهم لينك تاپيك (http://barnamenevis.org/showthread.php?355851-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%85%D8%B3%D9%86%D8%AC%D8%B1-%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AE%D9%84%DB%8C)

ehsan7007
شنبه 21 مرداد 1391, 12:46 عصر
از شما ممنون ولی این برای برنامه ی من که شبکه ای نیست هم کاربرد داره؟

ali_habibi1384
شنبه 21 مرداد 1391, 19:42 عصر
از شما ممنون ولی این برای برنامه ی من که شبکه ای نیست هم کاربرد داره؟
اس كيو ال كاري به اين نداره كه ديتا ها از كجا ميان اون فقط اطلاعات جديد موجود در پراسيجر رو اعلام ميكنه.
ميخواستم يه آموزش كلي در رابطه با موضوع dependency توي تاپيك مسنجر بذارم اما گويا ظاهرا دوستان علاقه اي به اين موضوع ندارن!فقط چندنفري دانلود كردن و رفتند.
ماهي رو به ماهيگيري ترجيح دادن.

tooraj_azizi_1035
شنبه 21 مرداد 1391, 19:55 عصر
راه حل همون SQL Dependency هست که از تکنولوژی Service Broker که از 2005 SQL به بعد اضافه شد استفاده می کنه.قبلش باید در دیتابیس این دستور اجرا بشه:
ALTER DATABASE test SET ENABLE_BROKER

نمونه کد:

کشف تغییرات:

void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}

void SomeMethod()
{
// Assume connection is an open SqlConnection.

// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection))
{

// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the refence in a class member.

// Subscribe to the SqlDependency event.
dependency.OnChange+=new
OnChangeEventHandler(OnDependencyChange);

// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}

// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).

//Fill your table again to refresh datagrid.
}

void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}

uniqueboy_ara
شنبه 21 مرداد 1391, 23:57 عصر
اس كيو ال كاري به اين نداره كه ديتا ها از كجا ميان اون فقط اطلاعات جديد موجود در پراسيجر رو اعلام ميكنه.
ميخواستم يه آموزش كلي در رابطه با موضوع dependency توي تاپيك مسنجر بذارم اما گويا ظاهرا دوستان علاقه اي به اين موضوع ندارن!فقط چندنفري دانلود كردن و رفتند.
ماهي رو به ماهيگيري ترجيح دادن.
آقا دمت گرم، اگه آموزش بزاری که خیلی ممنونت میشم :)
شدیدا طالب شدم یادش بگیرم، چون خودمم تا حالا از همون روش تایمر استفاده می کردم!