اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم اسعد الله مساؤكم

احبابي الكرام
لدي نموذج فيه حقول كثيرة حوالي 30 حقلا
المطلوب هو ان المستخدم لا يمكن الحفظ إلى بعد ملئ جميع الحقول كاملة

لدي فكرة وهو ان اقوم بضبط كل حقل على حده ولكن اعتقد انه غير عملي 

اريد بكود واحد فقط يتم التأكد قبل الحفظ ما إذا كانت الحقول غير فارغه جميعها فيتم الحفظ وإلا تظهر رساله ان هناك بعض الحقول فارغه 

 

شكرا من القلب اليكم مرفقا للتجربة

الحقول الفارغة.accdb

قام بنشر (معدل)

وعليكم السلام ورحمة الله وبركاته ،،

وبما اني اتابع من الجوال ، ولم استطع من رؤية الملف . اعتقد ان هناك أكثر من فكرة !!!

الأولى قد تعتمد على دالة تتفقد جميع العناصر ذات النوع "مربع نص" بأنها تحتوي قيم وغير فارغة . وهذا قد يسبب مشكلة لأنه حينها لن يميز بين مربعات النص التي تريدها من مربعات نص أخرى على سبيل المثال .

الثانية أنه عند الحفظ وقبل إتمام عملية الحفظ التأكد من مربعات النص التي لها مصدر بيانات مرتبط بحقل وليس مربعات النص الغير مضمنة بمصدر بيانات ، وهنا قد تكون مشكلة أيضاً .

الثالثة وما أرجحها بشكل أفضل وأقوى ، وهو من خلال الـ TAG . بحيث تضع وسماً لجميع مربعات النص التي تريدها أن يتم التحقق منها ولنفترض = Ham

حيث من خلال زر الحفظ نستعمل كود بهذا الشكل تقريباً - ما لم أكن مخطئاً في بعض الأجزاء ..

 

dim ctl as control, missing as string
for each ctl in me.controls
if lcase(trim(ctl.tag)) = "Ham" then
if nz(ctl.value, "") = "" then
missing = missing & vbcrlf & ctl.name
end if
end if
next
if missing <> "" then
msgbox " :  الحقول التالية فارغة" & vbcrlf & missing, vbinformation+ vbmsgboxright, ""
exit sub
end if
docmd.runcommand accmdsaverecord
docmd.gotorecord,,acnewrec


طبعاً ، إذا كنت من الأشخاص الذين يتركون اسم مربع النص كما هو من مصدره من الجدول ، فقد قمت بإضافة فكرة تحديد اسماء المربعات النصية التي لم يتم ادخال بيانات فيها .

بكل الأحوال جرب وأخبرنا بالنتيجة ، عل أحد الأساتذة والأخوة يتابع معك من كمبيوتر 🥴

على كل حال جرب 

 

 

خطر على بالي نقطة أخرى من خلال السطر :-

missing = missing & vbcrlf & ctl.name

بأن نستبدله بالسطر التالي :-

missing = missing & vbcrlf & ctl.controls(0).caption

فهنا سيأقرأ التسمية ( label ) المرتبطة بكل مربع نص بدلاً من اسم مربع النص نفسه .

تم تعديل بواسطه Foksh
إضافة ملاحظة وتعديل
قام بنشر

احسنت وبارك الله فيك شكرا لتجاوبك 
تمت التجربة مع بعض التعديلات البسيطه وكانت فعاله

 

    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If (ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox) Then
            If (Nz(ctrl.Value, "") = "") Then
                MsgBox "يرجى تعبئة جميع الحقول قبل الحفظ." & vbCrLf & _
                       "الحقل الفارغ: " & ctrl.Name, vbExclamation
                ctrl.SetFocus
                Exit Sub
            End If
        End If
    Next ctrl

    ' إذا جميع الحقول تم تعبئتها، يتم الحفظ
DoCmd.RunCommand acCmdSaveRecord
   MsgBox "تم الحفظ بنجاح بنجاح", 0 + 64 + 1048576, "مؤكد"
DoCmd.Close

 

  • Like 1
قام بنشر
6 ساعات مضت, Hamtoooo said:

تمت التجربة مع بعض التعديلات البسيطه وكانت فعاله

الحمد لله على نعمه..

لا تنسى إغلاق الموضوع أخي الكريم 🤗 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information