PDA

View Full Version : نمایش یک پیغام به جای پنجره خطای Key violation



saeed_d
سه شنبه 13 آبان 1382, 12:38 عصر
سلام
همانطور که اساتید محترم می دانید اگر در یک جدول یک فیلد را از نوع Key تعریف کنیم و اگر بخواهیم مقداری را که قبلا در یک رکورد دیگر در این فیلد ذخیره شده را دوباره به آن بدهیم پیغام خطای Key Violation دریافت می کنیم.
آیا می توان کاری کرد که به جای پنجره خطای فوق یک پیغام طراحی شده توسط خودمان نمایش داده شود؟

SReza1
سه شنبه 13 آبان 1382, 19:25 عصر
میری در از ONPOST ERROR اون ado یا table
بعد

در e.message چک میکنی که این error همون key violation است!!! فقط کافیه این رشتهدرون اون باشه!!
بهد یک پیغام فارسی میدی که مثلا نام خاونادگی تکراری است
مثلا

application.messagebox('این خطا است',....)
بعد واسه اینکه اطلاعاتت نپره

Action := daAbortرو آخرش اضافه میکنی
نمودونم متوجه شدی یا نه؟؟؟

saeed_d
چهارشنبه 14 آبان 1382, 10:27 صبح
دوست عزیز متشکرم 8)
همش رو گرفتم :wink:
مشکل حل شد

(امید)
پنج شنبه 15 آبان 1382, 12:06 عصر
با سلام
آقای داودی موردی که گفتین خیلی جالب ومفید هست.
من از راهی که گفتین نتونستم نتیجه بگیرم.
برای مثال وقتی کد تکراری وارد می کنیم ( keyfield) اصلا برنامه به پروسیجر onPosterror نمی ره که من بخوام e.message رو چک کنم.
و در مورد e.message من متوجه نشدم.یعنی باید مثلا اینجوری چک کرد
'...e.message='the change you request to the table
متشکرم از راهنماییتون

امید

SReza1
پنج شنبه 15 آبان 1382, 16:39 عصر
سلام دوستان
شما احتمالا در زمان برنامه نوسی این کار رو کردید!! مطمئن باشد که به errorpost میره!! کافیه که یه message که چی هست!! من 1000000000 بار این کار رو کردم!

(امید)
پنج شنبه 15 آبان 1382, 18:46 عصر
با سلام

منظور شما از e.message همونه که بالا نوشتم.یعنی شما چک می کنید که errore database استرینگش چیه . بعد با messagebox پیغام مورد نظر خودمونو می نویسیم.اونوقت خود error database چی می شه
در ضمن من با دلفی 5 کار می کنم .
شرمنده , من تا یه چیزی رو خوب متوجه نشم دس بردار نیستم :oops:
8)

SReza1
پنج شنبه 15 آبان 1382, 20:48 عصر
error بانک رو به طور موقع با این دستور

Action := daAbortبه عقب میندازی

SReza1
پنج شنبه 15 آبان 1382, 20:50 عصر
error بانک رو به طور موقع با این دستور

Action := daAbortبه عقب میندازی
البته میتونی حتی عملیات انجام شده رو نیز لغو کنی

dataset.cancell
بستگی داره که چطور میخواهی کار کنی :oops:

(امید)
جمعه 16 آبان 1382, 12:15 عصر
عالیه
آقا رضا کارت درسته :wink:
تو دلفی که برنامه رو run می کردم مشکل داشتم.فایل exe ش همونطور که گفتین کار کرد.
دستت درد نکنه :)

امید

SReza1
جمعه 16 آبان 1382, 18:21 عصر
قابلی نداره :oops: :oops:

said ali
شنبه 17 آبان 1382, 15:44 عصر
با سلام

سلام دوستان
شما احتمالا در زمان برنامه نوسی این کار رو کردید!! مطمئن باشد که به errorpost میره!! کافیه که یه message که چی هست!! من 1000000000 بار این کار رو کردم!
جان من این اعداد رو یه خورده همچین یه خورده واقعی تر بنویسید این عددی که شما نوشتید یعنی دقیقا 31.709791983764586504312531709792 سال هر یک ثانیه این کار رو تکرار کردید. :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:

SReza1
شنبه 24 آبان 1382, 07:59 صبح
بابا کارت درسته!! میبینم که چقدر محاسبه دقدق انجام میدی!!! امیدوارم در همه زمنیهها اینتقدر دقیق باشی!!

said ali
شنبه 24 آبان 1382, 13:42 عصر
با سلام
قربانت :lol: :lol: :lol: :lol: :lol: :lol: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

JavanSoft
چهارشنبه 26 فروردین 1383, 13:29 عصر
31.709791983764586504312531709792
عدد شما با 4 رقم گرد شده این شده ؟

شفیعی
پنج شنبه 27 فروردین 1383, 05:05 صبح
سلام
یک فیلد از نوع KEY تعریف کرده ام وقتی با LOCATE در بانک جستجو می کنم اطلاعات موجود در این فیلد را پیدا نمی کند یعنی وقتی کاربر مقدار این فیلد را وارد می کند ابتدا با LOCATE جستجو می کنم که این مقدار در بانک هست یا نه در صورتی که تکراری با شد پیغام می دهد ولی با LOCATE هر چی بانک را می گردم چیزی پیدا نمی کند و خطای Key Violation پیش می آید

said ali
چهارشنبه 02 اردیبهشت 1383, 11:45 صبح
با سلام
احتمالا تا Table شما به حالت عادی برنگردد یعنی از حالت ادیت خارج نشود Locate کار نمیکند.