PDA

View Full Version : کنترل مقادیر دریافتی در فرم



shima_m
دوشنبه 19 خرداد 1382, 05:44 صبح
سلام عزیزان

فعلا دارم یه برنامه ء دتابیسی می نویسم اما ،

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

البته از برخی evntها مثل OnBeforPost و OnValidate استفاده می کنم ؛ اگه لطف کنید یه راهنمایی حسابی بفرمایید خیلی ممنون میشم.اینکه از چه راههایی می تونم به کاربر اجازه ورود اطلاعات غلط رو ندم

(امید)
دوشنبه 19 خرداد 1382, 06:52 صبح
سلام

دو مورد هست که همیشه باید هنگام ورود دادهها به بانک چک بشن : 1-اعداد 2- فرم مورد نظر تاریخ

برای اعداد من کد زیر رو پیشنهاد می کنم .


procedure Tinput2.Edit10KeyPress(Sender: TObject; var Key: Char);
var assci:byte;
begin
assci:=ord(key);
if not((assci=48)or (assci=49)or (assci=50)or (assci=51)or (assci=52)or
(assci=53)or (assci=54)or (assci=55)or (assci=56)or (assci=57)
or (assci=11)or (assci=13)or (assci=32)or(assci=8)or(assci=9 )) then
begin
messagedlg(' لطفا" فقط عدد وارد کنید ! ',mterror,[mbok],0);
key:=char(9);

end;
if key=char(13) then
begin
if edit10.Text='' then
begin
showmessage('طبقه را وارد کنید');
end
else
begin
edit11.SetFocus;
end;

end;
end;


فرض کنید در edit10 باید حتما یک عدد وارد شود.در صورت ورود یک عدد و enter زدن مکان نما به edit11 می رود.
برای تاریخ هم بسته به چگونگی تعریف تاریخ می شود کد نوشت .
البته توصیه من اینست که به هیچ وجه از توابع تبدیل تاریخ datetostr , strtodate استفاده نکنیم .
در واقع فیلد date در بانک نداشته باشید .
به طور مثال تاریخ رو بصورت 82/03/19 که گرفتید بصورت 820319 ذخیره کنید . البته این برای تاریخ هایی باشه که قراره سرچ و مقایسه روش انجام بشه . وگرنه اون رو هم text بگیریم فرقی نداره .
برای چک کردن ورود تاریخ نیز راه ساده همون استفاده از maskedit و استفاده از کد بالا با کمی تغییر .

قبل از post کردن هم باید از درست بودن ورودی ها اطمینان داشت.

امیــــــــد

amirrf
چهارشنبه 21 خرداد 1382, 20:53 عصر
در کاربردهای دیتابیس؛

اگر از روش های استاندارد استفاده کنید به کمترین کدنویسی و بررسی در این رابطه نیاز خواهید داشت. بیشتر قیدهای درستی داده ها را می توان در لایه دیتابیس بطور متمرکز قرار داد و اگر کنترل های متصل به داده را بکار برید به بررسی مقدار وارد شده از نظر نوع داده نیاز نخواهد بود.
با تعریف قیدهای درستی (Integrity Constraints) در لایه دیتابیس و همچنین در فیلدهای دیتاست شما می توانید به شکل متمرکز جلوی ورود مقدارهای نادرست را بگیرید. این قیدها شامل محدوده مجاز مقدارها، وضعیت تهی بودن، و درستی ارجاعی (Referential Integrity) از طریق کلیدهای خارجی می شود.
کنترل های متصل به داده (data-aware) نیز جلوی ورود کاراکترهای غیرمجاز را می گیرند و چون به فیلدهای یک دیتاست متصل هستند مقدارهای غیرقابل قبول از جهت نوع داده نیز جلوگیری خواهند شد.
پس از اینها اگر باز هم به کنترل درستی نیاز بود یا زمانی که با دیتابیس هایی مثل Paradox کار می کنید و امکانات کمتری در اختیار دارید، می توانید از خاصیت CustomConstraint فیلدها و رویداد BeforePost استفاده کنید.

در غیراینصورت با کدنویسی های اضافی و تکراری زمان توسعه و نگهداری زیاد خواهد بود.

غریبه2
سه شنبه 27 خرداد 1382, 09:49 صبح
سلام
من یدونه کامپوننت DBMaskedit دارم که میتونی براش mask- EditBox تعریف کنی که کاربر نتونه چیزی به جز اونی که مطلوب شما هست وارد کنه .:wink:
ولی نمی دونم کجا باید بذارمش اگه خواستین یا راهنمایی کنین که چیکار کنم یا Mail بدین تا براتون بفرستم
My Email : Me_a2002@hotmail.com