PDA

View Full Version : جلوگیری از Post جدول



dkhatibi
یک شنبه 20 آبان 1386, 21:29 عصر
در رویداد OnBeforePost مقداری از جدول را باید چک کنم تا در صورت تکراری بودن عمل پست انجام نشه! exit را استفاده کردم جواب نمی ده و در هرصورت جدول ذخیره می شه!
راهی برای جلوگیری از Post جدول موقعی که متد Post فراخوانی شد وجود دارد؟

Mahmood_M
یک شنبه 20 آبان 1386, 21:50 عصر
متد Cancel رو امتحان کردید ؟ در این رویداد با متد Cancel می تونید از Post جلوگیری کنید ...
درضمن : در Help دلفی نوشته شده که با متد Abort میتونید Post شدن اطلاعات رو Cancel کنید ، توجه کنید که متد Abort مربوط به DataSet نیست و به صورت جدا و به عنوان یک دستور فراخوانی میشه ...


Abort;

موفق باشید ...

daffy_duck376
یک شنبه 20 آبان 1386, 22:06 عصر
شما در حالت insert یا edit نمویتونید چیزی رو تو جدول چک کنید زیرا باعث ذخیره شدن ان مقدار میشه و باعث خطا میشه بهتره شما اول مقدار را از کاربر تو یه edit معمولی بگیری
بعد واسه تکراری بودن چک کنی اگه تکراری نبود میتونی با متود fieldvaluis['نا م فیلد '] میتونی مقدلر edit رو داخل جدول بذاری

ghabil
دوشنبه 21 آبان 1386, 00:38 صبح
تابع Exit موجب میشه که از تابع فعلی روند اجرای برنامه خارج بشه و بره سراغ تابع بعدی، پس فقط از همین ایونت BeforePost خارج میشی و بقیه برنامه که شامل رویه پست هست اجرا میشه اما اگر مثلا از همین Abort که محمود گفته استفاده کنی ، موجب میشه که کلا روند اجرای برنامه از اینجا ببعد متوقف بشه و کدهای ذخیره شدن انجام نشوند ، اما از این هم بهتر اینه که کلا یک Exception رو Raise کنی اینطوری کاربرت هم متوجه میشه و روند کار هم متوقف میشه یعنی مثلا توی رخداد BeforPost بنویسی :



raise Exception.Create('Data is invalid and cant be saved');

JAFO_IRAN
دوشنبه 21 آبان 1386, 21:04 عصر
با سلام

کنترل سایر رکوردهای جدول منجر به تغییر مکان نمای جدول میشه که خود به خود عمل post را انجام میده.

فقط میخواهی از Post شدن یک رکورد جلوگیری بشه یا مثلا از cached update استفاده میکنی و میخواهی که کل ویرایشها cancel بشوند؟

اگر مورد اول است، باید با یک روش دیگر، مثلا با یک DataSet جداگانه همان جدول را بازخوانی و بررسی کنی.
در مورد دوم، باید یک جوری داده‌ها را clone کنی. این کار در client dataset میسر است ولی در سایر پیاده سازی های cached update نمیدانم چه میشود...

ghabil عزیز: abort هم یک جور exception است - فقط پیغام نمیده...

ghabil
دوشنبه 21 آبان 1386, 21:21 عصر
با سلام

سلام
به سایت خوش اومدی.


کنترل سایر رکوردهای جدول منجر به تغییر مکان نمای جدول میشه که خود به خود عمل post را انجام میده.

فقط میخواهی از Post شدن یک رکورد جلوگیری بشه یا مثلا از cached update استفاده میکنی و میخواهی که کل ویرایشها cancel بشوند؟

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


اگر مورد اول است، باید با یک روش دیگر، مثلا با یک DataSet جداگانه همان جدول را بازخوانی و بررسی کنی.
در مورد دوم، باید یک جوری داده‌ها را clone کنی. این کار در client dataset میسر است ولی در سایر پیاده سازی های cached update نمیدانم چه میشود...
.
اینا دیگه مشکوک میزنه ;-) به هر حال اینجا صحبت از یک برنامه دولایه معمولی بدون هرگونه Delta هست.


ghabil عزیز: abort هم یک جور exception است - فقط پیغام نمیده...

اطلاعات بیشترش رو هم قبلا اینجا توضیح دادم (http://barnamenevis.org/forum/showpost.php?p=367643&postcount=4) ، ولی اینجا بهتره که از Exception استفاده بشه که کاربر هم متوجه بشه که اطلاعات پست نشده و چرا پست نشد.

dkhatibi
دوشنبه 21 آبان 1386, 21:36 عصر
چیزی که تو Raise exception اعصاب منو خورد می کنه گذاشته شدن یک نقطه آخر پیامه که در صورنی که پیام پیام فارسی باشه در ابتدا می آد.

Mohammad_Mnt
چهارشنبه 23 آبان 1386, 01:17 صبح
خوب شما اول بذار که آخر بیاد

dkhatibi
چهارشنبه 23 آبان 1386, 07:05 صبح
نه
اون خودش به طور خودکار نقطه رو اضافه می کنه. اصلا نقطه گذاشته نشه باز هم می گداره

Hamid_PaK
پنج شنبه 24 آبان 1386, 09:04 صبح
یه راه غیر منطقی اینه که یونیت Dialogs رو خودت یکم دستکاری کنی و در پوشه برنامت بزاری مشکل حل میشه.

یا حق ...