PDA

View Full Version : Refresh شدن اطلاعات گرید در شبکه



ahmad_n80
پنج شنبه 31 اردیبهشت 1388, 17:19 عصر
با سلام
چه طوری میشه یک dbgrid که به datasource وصل است توی شبکه درست کار کنه - یعنی اگر در یک سیستمی رکوردی اضافه شد در سیستم دیگر بدون بسته شدن فرم ( فرمی که گرید را نمایش میدهد ) اطلاعات گرید refresh شود . ( آن رکورد را نمایش دهد )

merced
جمعه 01 خرداد 1388, 00:22 صبح
درباره سه (چند) لايه تحقيق كن
توي برنامه سه لايه شما يك برنامه سرور داريد كه وسط ارتباط بين كلاينت ها با ديتابيس قرار مي گيره و به وسيله اون مي تونيد مديريت كننين كه هر كسي چه كاري انجام داده و به اطلاع بقيه كلاينت ها يا بعضي از اونا برسوني

vcldeveloper
جمعه 01 خرداد 1388, 00:45 صبح
چه طوری میشه یک dbgrid که به datasource وصل است توی شبکه درست کار کنه - یعنی اگر در یک سیستمی رکوردی اضافه شد در سیستم دیگر بدون بسته شدن فرم ( فرمی که گرید را نمایش میدهد ) اطلاعات گرید refresh شود .
درستش همین رفتاری هست که الان انجام میده. کلاینت شما برای سرور بانک اطلاعاتی درخواستی ارسال میکنه، و رکوردهایی را به عنوان جواب دریافت میکنه. طبیعی هست که اگر داده های سرور بانک اطلاعاتی تغییر کنند، تاثیری بر روی رکوردهایی که قبلا کلاینتی دریافت کرده، نگذارند، و اگر کلاینت نیاز به دریافت اطلاعات جدید دارد، باید درخواست جدیدی به بانک ارسال کند.

در هر حال، برای مواردی مشابه موردی که شما ذکر کردید، سه راه حلی کلی وجود دارد که دو مورد آن وابسته به امکانات بانک اطلاعاتی هست، و یک مورد را هم خودتان می توانید پیاده سازی کنید.

موردی که خودتان می توانید پیاده سازی کنید، همان مطلب پست شماره 2 هست.
مواردی که مربوط به بانک اطلاعاتی می شود، عبارتند از:
1- پشتیبانی از Dynamic Cursor.
2- پشتیبانی از Query Notification.

یعنی اگر بانک اطلاعاتی شما یکی از این قابلیت ها را پشتیبانی کند، شما می توانید بدون اینکه نیاز باشد خودتان چیزی را پیاده سازی کنید، از امکان مورد نظر استفاده کنید.

از آنجایی که هر سه مورد مطرح شده بارها در این سایت بحث شدند، من هیچکدام را دوباره اینجا تکرار نمی کنم. خودتان می توانید در سایت جستجو کنید.

یاسر مددیان
سه شنبه 12 خرداد 1388, 09:05 صبح
سلام
این قابلیت Query Notification رو با خود دلفی (ado و...) نمیشه پیاده کرد؟ یعنی حتماً باید از کامپوننت استفاده کنیم؟ استفاده از کامپوننت تو دلفی بعداً مشکلاتی ایجاد میکنه. آیا راهی نمیشناسید که بشه این قابلیت یا قابلیت های مشابه که بشه تغییرات تو بانک به صورت OnTime به کلاینت فرستاده بشه و با استفاده از خود دلفی و بدون دخالت هیچ کامپوننتی پیاده کرد؟ ( کلاینت سرور نباشه ! )

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


با تشکر

vcldeveloper
سه شنبه 12 خرداد 1388, 10:03 صبح
با خود دلفی (ado و...) نمیشه پیاده کرد؟
مایکروسافت دیگه قابلیت جدیدی به ADO اضافه نمیکنه، و بجای آن ADO.NET را توسعه میده.


استفاده از کامپوننت تو دلفی بعداً مشکلاتی ایجاد میکنه.
مثلا؟


یه سوال دیگه اینکه این کامپوننت های SDAC هنگامی که یه رکورد به بانک اضافه میشه میان کل جدول رو دوباره فراخونی می کنن یا اینکه هوشمند هستن و همون رکورد رو فقط می فرستن؟
SDAC کار چندان خاصی نمیکنه، بلکه این قابلیت بیشتر به SQL Server مربوط میشه. در ضمن، فقط رکوردهای تغییر یافته آپدیت میشند.

یاسر مددیان
سه شنبه 12 خرداد 1388, 10:18 صبح
مثلاً اینکه شاید بعداً این کامپوننت ها ساپورت نشن و دچار مشکل شیم.
Dynamic Cursor چطور ؟ کدوم SQL Server میتونه multi-record رو ساپورت کنه که بتونیم clDynamic رو فعال کنیم. یه سوال دیگه اینکه با این کار میشه به نتیجه رسید یا نه؟