PDA

View Full Version : مقاله: به روز رسانی اطلاعات فرم با استفاده از متد Sql Dependency



alimanam
سه شنبه 07 شهریور 1391, 00:57 صبح
با سلام

همانطور که قبلاً در تاپیک مذکور (http://barnamenevis.org/showthread.php?332829) قول داده بود این متد مفید رو به صورت مقاله فارسی درآوردم که بهتر و قابل لمس تر برای استفاده باشه . اصل این مقاله که به صورت زبان انگلیسی هست رو میتونین از اینجا (http://www.dreamincode.net/forums/topic/185244-using-sqldependency-to-monitor-sql-database-changes/)مطالعه بفرمائین . من حدالامکان قسمت های مفیدش رو با دانش اندک خودم براتون به فارسی برگردوندم . امیدوارم به دردتون بخوره .

http://alimanam.persiangig.com/image/Sql_Dependency.png

موفق باشید./

Majid842
سه شنبه 07 شهریور 1391, 10:49 صبح
با سلام
ممنون از این کاری که کردی خیلی عالی بود :تشویق:

سوال :
1- گردید پشت سر هم داره رفریش میشه و حتی نمیشه روی فیلدی فکوس کرد اگر هم (SqlDependency.Stop(con کنم درست میشه ولی هیچ تاثیری نداره!!؟
2- روش صحیح استفاده از این تابع رو ذکر نکردی مهندس !!؟
3- اگر روشی باشه که مهندس بتونه زمانی که اطلاعات در بانک Insert - Update -Delete میشه به برنامه اطلاع بده!! خیلی میتونه روش خوبی باشه ! یعنی اطلاع از بروز شدن داده ها از طرف SQl صادر شود به برنامه ؟؟؟:متفکر:

alimanam
سه شنبه 07 شهریور 1391, 14:27 عصر
با سلام


1- گردید پشت سر هم داره رفریش میشه و حتی نمیشه روی فیلدی فکوس کرد اگر هم (SqlDependency.Stop(con کنم درست میشه ولی هیچ تاثیری نداره!!؟
2- روش صحیح استفاده از این تابع رو ذکر نکردی مهندس !!؟
3- اگر روشی باشه که مهندس بتونه زمانی که اطلاعات در بانک Insert - Update -Delete میشه به برنامه اطلاع بده!! خیلی میتونه روش خوبی باشه ! یعنی اطلاع از بروز شدن داده ها از طرف SQl صادر شود به برنامه ؟؟؟

شما اگر دقیقاً متدی که در مقاله ارائه شد رو به درستی بکار برده باشین مطمئناً نباید مشکلی بوجود بیاد . خودم الان دقیقاً دارم از این متد استفاده میکنم و بخوبی پاسخگو هستش . تمامی مواردی که فرمودین در این متد انجام میشه یعنی به محض تغییر در تیبلی که ما براش مشخص میکنیم دیتاگرید ویو رفرش میشه . این کار توسط خود sql انجام میشه ( بوسیله سرویسی که در مقاله در ابتدای توضیحات بنده عرض کردم ) برای نمونه من یک سورس کوچک که دقیقا داره از این متد استفاده میکنه ضمیمه کردم . لطفا به خاطر داشته باشید که باید تمامی مواردی که در مقاله توضیح دادم رو به دقت پیش رفته باشین تا نتیجه دلخواه حاصل بشه .

موفق باشید./

Majid842
سه شنبه 07 شهریور 1391, 18:03 عصر
منهدس خیلی عالی !
دمت گرم!!!!!!!!!!!!!!!!!

Majid842
سه شنبه 07 شهریور 1391, 19:55 عصر
یه سوال : من گرید ها رو همیشه با Sp پر میکنم با این
Public Function SetTableWithProcedure(ByVal ProcedureName As String) As DataTable
Try
If con.State = ConnectionState.Open Then
con.Close()
End If
Dim cmd As New SqlCommand(ProcedureName, con)
cmd.CommandType = CommandType.StoredProcedure
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
'' Radif To Grid ''
Dim cl As New DataColumn("ردیف", GetType(Integer))
cl.AutoIncrementSeed = 1
cl.AutoIncrement = True
dt.Columns.Add(cl)
'' '' ''
con.Open()
da.Fill(dt)
con.Close()
Return dt
Catch
con.Close()
Return Nothing
End Try
End Function



حالا چه طور میتونم با این روشی که شما گفتید کار کنم هر کار میکنم باز به یک مشکل جدید بر میخورم؟؟؟؟

Majid842
چهارشنبه 08 شهریور 1391, 21:36 عصر
??:متفکر::عصبانی++:

elena2007
سه شنبه 12 دی 1391, 10:52 صبح
سلام . کسي هست که با اين پروژه کار کرده باشه ؟ منم مشکل عدم فوکوس روي گريد رو دارم

elena2007
سه شنبه 12 دی 1391, 12:19 عصر
کسي نيست که اين مشکل رو حل کرده باشه ؟

گردید پشت سر هم داره رفریش میشه و حتی نمیشه روی فیلدی فکوس کرد اگر هم (SqlDependency.Stop(con کنم درست میشه ولی هیچ تاثیری نداره!!؟

دانوش درمان
سه شنبه 27 فروردین 1392, 09:45 صبح
همانطور که قبلاً در تاپیک مذکور قول داده بود این متد مفید رو به صورت مقاله فارسی درآوردم که بهتر و قابل لمس تر برای استفاده باشه . اصل این مقاله که به صورت زبان انگلیسی هست رو میتونین از اینجا مطالعه بفرمائین . من حدالامکان قسمت های مفیدش رو با دانش اندک خودم براتون به فارسی برگردوندم . امیدوارم به دردتون بخوره .
این چیزی که تو فایل ضمیمه هست مشکل داره. دیتاگریدویو مدام داره رفرش میشه

Me3ter
جمعه 20 اردیبهشت 1392, 11:10 صبح
منم همین مشکل رو دارم کسی نیست راهنمایی کنه؟؟؟؟؟؟؟؟؟

davidnamer
جمعه 24 آبان 1392, 07:48 صبح
با سلام
ENABLE_BROKER را در SQL انجام دادم . اما هنوز پس از تغییر در دیتابیس اصلا DEP_ONCHANGE اجرا نمی شود .
من در روی یک کامپیوتر کار می کنم و تغییر را توسط یک برنامه دیگر در دیتابیس وارد می کنم . هیچ گونه خطایی نمی دهد. SqlDependency.Start(ConcStr) هم خطا نمی دهد
چه کاری (احتمالا در SQL) باید انجام دهم ؟ با یوزر SA وارد می شم و هیچ خطایی در رابطه با مجوز نمی دهد.
سوال دوم
در صورتیکه برنامه درست کار کرد ، چطور تنها از بعضی تغییرات خاص با خبر شم . مثلا آپ دیت یک جدول خاص
تو تمام اینترنت رو گشتم متاسفانه جوابی پیدا نکردم
با تشکر

djhooman
چهارشنبه 03 دی 1393, 04:02 صبح
با سلام
ENABLE_BROKER را در SQL انجام دادم . اما هنوز پس از تغییر در دیتابیس اصلا DEP_ONCHANGE اجرا نمی شود .
من در روی یک کامپیوتر کار می کنم و تغییر را توسط یک برنامه دیگر در دیتابیس وارد می کنم . هیچ گونه خطایی نمی دهد. SqlDependency.Start(ConcStr) هم خطا نمی دهد
چه کاری (احتمالا در SQL) باید انجام دهم ؟ با یوزر SA وارد می شم و هیچ خطایی در رابطه با مجوز نمی دهد.
سوال دوم
در صورتیکه برنامه درست کار کرد ، چطور تنها از بعضی تغییرات خاص با خبر شم . مثلا آپ دیت یک جدول خاص
تو تمام اینترنت رو گشتم متاسفانه جوابی پیدا نکردم
با تشکر

منم همین مشکل و دارم
همه مراحل و انجام دادم ، زمانیکه میخوام بفهمم که ایا دیتا بروز شده یا نه هیچ عکس العملی نشون نمیده

Naghibi
شنبه 06 دی 1393, 07:57 صبح
سلام
من یه بار این مشکل رو داشتم، نکته ای که بهش توجه نکرده بودم این بود که select * رو استفاده کرده بودم. در حالیکه از قوانین این سرویس اینه که فیلد هایی رو که لازم دارین مشخص کنین یعنی بجای select * از select field1,field2 استفاده کنین. گفتم این نکته رو بگم، شاید مشکل شما هم همین باشه.

djhooman
شنبه 06 دی 1393, 21:25 عصر
خوب منم از سلکت بصورت فیلد Select A,B,C,D From Test و استفاده می کنم .......

بازم جواب نمیده ...

mmbguide
سه شنبه 05 اردیبهشت 1396, 23:44 عصر
باسلام خدمت دوستان

من یک برنامه سه لایه نوشتم (آزمایشی) که در لایه DAL از DataSet برای اتصال به بانک استفاده کردم و دستورات مورد نیاز من از طریق StoredProcedure انجام میشه. حالا چطور میتونم شرایط SqlDependency رو براش تعریف کنم.

تشکر