PDA

View Full Version : سوال: نحوه استفاده از Notification مربوط به SQL 2005 در دلفی؟



SYNDROME
پنج شنبه 31 مرداد 1387, 20:57 عصر
با سلام
من می خواهم در یک شبکه برنامه ای بنویسم که اگر 2 کاربر به شکل همزمان یک فرم را باز کردند و یکی از کاربران یک رکورد را پاک کرد کاربر دیگر که بر روی سیستم دیگری همین فرم را باز کرده است بطور خودکار اطلاعاتش refresh شود.
یکی دوستان پیشنهاد داد از Notification مربوط به sQL 2005 استفاده کنم.
به دنبال مثالی هستم که بتوانم از آن استفاده کنم و یا دوستان اطلاعاتی در این مورد دارند بنده را راهنمایی کنند.
با تشکر

SYNDROME
شنبه 02 شهریور 1387, 20:25 عصر
آیا کسی در این مورد اطلاعاتی دارد؟
ممنون می شوم من را راهنمایی کنید.
با تشکر

اصغر (پآچ)
شنبه 02 شهریور 1387, 21:59 عصر
سلام
من هم دنبال این روش هستم اگه کسی در این زمینه اطلاعاتی بتونه بده ممنون می شم.

djscsi
یک شنبه 03 شهریور 1387, 00:29 صبح
این خیلی سخته اولا که تا وقتی که کسی داره با فرم کار میکنه با همه در خواستها بلوکه بشن تا اون کارش تموم بشه و در اخر یه refresh بشه و سپس فرم ازاد بشه

vcldeveloper
یک شنبه 03 شهریور 1387, 00:51 صبح
http://www.microsoft.com/sql/technologies/notification/default.mspx
http://www.exforsys.com/tutorials/sql-server-2005/using-notification-services-in-sql-server-2005.html
http://www.devx.com/dbzone/Article/28522

در ضمن، قبلا توضیح داده شد که در دلفی کامپوننت SDAC از Notification Service پشتیبانی میکنه.

samprp
یک شنبه 03 شهریور 1387, 07:33 صبح
معروفیت sql server به خاطر تریگرای زیادش هست که برا هر کاری می تونی تعریفشون کنی.

Touska
یک شنبه 03 شهریور 1387, 10:24 صبح
می تونید از کامپوننت های SDAC برای آن استفاده نمایید.

به این لینک هم سری بزنید : آدرس (http://barnamenevis.org/forum/showthread.php?t=114692)

SYNDROME
دوشنبه 04 شهریور 1387, 06:34 صبح
با تشکر از آقا مصطفی و علی کشاورز
من ابزارSDAC را نصب کرده ام.
می خواستم بدانم بهتر است از کدام کامپونتها استفاده کنم بهتر است؟
آیا نیازی هم به تنظیم Notification است ؟چطور باید این کار را انجام دهم.
با تشکر از همه دوستان

Touska
دوشنبه 04 شهریور 1387, 09:52 صبح
برای دلفی چیزی ندارم :

صفحه شماره 1 (http://aspalliance.com/1541_Understanding_SQL_Server_2005_Notification_Se rvices_with_ASPNET_20)

صفحه شماره 2 (http://aspalliance.com/1541_Understanding_SQL_Server_2005_Notification_Se rvices_with_ASPNET_20.2)

و صفحات رو همین جوری ادامه بده :)

لینک Demo با Asp .Net 2 (http://authors.aspalliance.com/sudeepg/SqlNotificationDemo.rar)

vcldeveloper
دوشنبه 04 شهریور 1387, 10:38 صبح
آیا نیازی هم به تنظیم Notification است ؟چطور باید این کار را انجام دهم.
نه. فقط یک MSQuery و یک ChangeNotification روی فرم میزارید و از طریق خصوصیت مربوطه در MSQuery این دو را به هم متصل می کنید. در خصوصیت Options از MSQuery هم ReflectChangeNotify را True کنید. به این ترتیب، هر زمان اون کوئری تغییر کنه، MSQuery بطور خودکار Refresh میشه.
اما کوئری هایی که میشه براشون از Notification Service استفاده کرد، شرایط و محدودیت های خاصی دارند، مثلا باید نام هر فیلدی که نیاز دارید را در کوئری بنویسید و از * استفاده نکنید، یا نام جدول باید بصورت دو بخشی نوشته بشه، مثل [dbo].[Table1] ، و یک سری شرایط دیگه که در MSDN توضیح داده شده.
توی Demoی SDAC هم یک نمونه برای ChangeNotification آورده شده.

SYNDROME
دوشنبه 04 شهریور 1387, 18:25 عصر
با تشکر فراوان از علی آقا


MSQuery

کامپونت فوق جایگزین ADOquery است؟


MSQuery بطور خودکار Refresh میشه.

آیا زمانی که عمل Refresh انجام می شود مانند Close و Open کردن aDO است که رویدادهای ان فراخوانی می شود(مانند AfterScroll و . . .)
آیا می توان Refresh شدن را تا بر قراری شرطی به تاخیر انداخت.
با تشکر فراوان از شما

vcldeveloper
سه شنبه 05 شهریور 1387, 00:12 صبح
کامپونت فوق جایگزین ADOquery است؟
بله، ولی فقط برای SQL Server.


آیا زمانی که عمل Refresh انجام می شود مانند Close و Open کردن aDO است که رویدادهای ان فراخوانی می شود(مانند AfterScroll و . . .)
مطمئن نیستم که اصلا موقع Refresh کردن کل جدول را باز و بسته کنه، چون عملش به سرعت انجام میشه، در هر حال می تونید خودتون تست کنید که آیا اون رویدادها را موقع Refresh فراخوانی میکنه یا نه.


آیا می توان Refresh شدن را تا بر قراری شرطی به تاخیر انداخت.
می تونید ReflectChangeNotify را False کنید. ChangeNotifcation خودش یک رویداد داره که موقع تغییر در جدول فراخوانی میشه، خودتون می تونید از طریق اون رویداد متوجه ایجاد تغییر بشید، بعدش هر وقت دلتون خواست، Refresh کنید.