PDA

View Full Version : اخطار خالی بودن فیلد قبل از ذخیره



Masoud.eh
چهارشنبه 07 تیر 1402, 20:20 عصر
سلام دوستان
کد زیر اخطار خالی بودن فیلد قبل از ذخیره است
مشکلی که داره فیلدهای خالی رو به ترتیب برنمیگردونه، مثلا اگر فیلد های فرم ما به ترتیب نام، نام خانوادگی، نام پدر و شماره ملی باشه
زمان اخطار خالی بودن قاعدتا باید ابتدا خالی بودن فیلد نام چک بشه و بعد نام خانوادگی و ...، ولی این کد بصورت رندوم کار میکنه و مثلا اول فیلد نام پدر رو چک میکنه بعد نام خانوادگی و ...
اساتید لطفا در صورت امکان ممنون میشم مشکل رو برطرف کنید.
Dim ctrl As Control
For Each ctrl In Screen.ActiveForm
If ctrl.Tag = "*" And Not IsNull(ctrl) Then ctrl.BackColor = vbWhite
If ctrl.Tag = "*" And IsNull(ctrl) Then
ctrl.BackColor = vbYellow
ctrl.SetFocus

MsgBoxFa "! لطفا اطلاعات را کامل وارد کنيد", vbOKOnly + vbInformation, "توجــــــــــــــــــــــ ـه"

Exit Sub
End If
Next ctrl


If MsgBoxFa("اطلاعات وارد شده ذخيره شود؟", vbOKCancel + vbMsgBoxRight, "تاييد ذخيره اطلاعات") = vbOK Then
DoCmd.SetWarnings off
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec
DoCmd.Requery
Else
Me.Undo
End If

simorgh2000
پنج شنبه 08 تیر 1402, 20:25 عصر
سلام
۱- استفاده از حلقه برای چک خالی یا پر بودن کنترل روش مناسبی نیست شاید پر بودن بعضی فیلدها اختیاری باشه اون موقع اجازه نمیده به نظرم شما بجای حلقه ،کنترل‌ها ی که کاربر باید پر کند را بصورت تک به تک چک کنید اگه خالی بود پیغام مناسب داده بشه
۲- اگه هم از حلقه استفاده‌ میکنید tab order کنترلها را به ترتیب دلخواه تنظیم کنید شاید درست جواب بده .

mazoolagh
شنبه 10 تیر 1402, 18:54 عصر
سلام و روز خوش


کد زیر اخطار خالی بودن فیلد قبل از ذخیره است
مشکلی که داره فیلدهای خالی رو به ترتیب برنمیگردونه

به دلایل زیر کدی که استفاده کردین نه تنها کد خوبی برای کنترل خالی بودن فیلد نیست، بلکه بد هم هست:
1- کافی هست کاربر فقط یک کارآکتر یا حتی blank در تکسباکس وارد کنه،
و چون کد ناتوان در تشخیص این موارد هست از سد رد میشه.

2- کد به محض پیدا کردن اولین مورد متوقف میشه،
درست اینه که همه موارد بررسی و نتیجه یکجا به کاربر گفته شه.

3- پروسه form validation یک کار دقیق و ظریف هست،
برای هر فرم شرایط خودشون رو میطلبه و باید برای هر فیلد با توجه به محدودیتهای معین شده جداگانه کد نوشت.
دقیقا همین که جناب simorgh2000 هم به درستی اشاره کردن.

بنابراین اگر اصلا validation نداشته باشین بهتر از این هست که اون رو نادرست انجام بدین.

-----
با همه اینها،
اگر همین اندازه برای شما کفایت میکنه کافی هست که:
1- حلقه رو تا آخر ادامه بدین
2- ترجیحا به همین تغییر رنگ پس زمینه قناعت کنین (msgbox رو بردارین)
----------
یک نمونه از form validation (https://barnamenevis.org/showthread.php?558147)

mazoolagh
شنبه 10 تیر 1402, 19:01 عصر
شاید پر بودن بعضی فیلدها اختیاری باشه

سلام و روز خوش

اتفاقا این یک مورد رو در نظر گرفتن:
اگر tag کنترل رو * بگذارن به معنای required بودن اون هست.
تنها نکته مثبت این کد همینه!