الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إجبار المستخدم على ادخال قيمه عند الإختيار

بدأه أبو شادي في 11 أبريل 2010 · 7 رد · 1,930 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني واخواتي السلام عليكم

حاولت ولكني عجزت وبالبحث لم اجد ما يفيدني

كمبوكس عند الاختيار الاول يجبر حقل ما ان تكون قيمته عددية

وعند الاختيار الثاني يجبر نفس الحقل ان تكون قيمته نصيه

وعند مخالفة ذلك تظهر رسالة بان المدخل خطأ

الشرح داخل المرفق

جزاكم الله خير

رقم ونص.rar

#2

وعليكم السلام ورحمة الله وبركاته، أخي الكريم أبي شادي...

حاول أن تجرب مثل هذا الكود في حدث KeyPress لمربع النص، وهدفه تقييد الإدخال حرفاً حرفاً، اعتماداً على قيمة Ascii الحرف المدخل (رموز الآسكي للأرقام تقع بين 48، وهو الصفر، و57، وهو التسعة):

Private Sub z_KeyPress(KeyAscii As Integer)
    If (KeyAscii = 8 Or KeyAscii = 13) Then Exit Sub ' تجاوز عن مفتاح التراجع إلى الخلف ومفتاح الإدخال في كلا الحالتين
    Select Case x.Value
        Case "A", "B":
            If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
                MsgBox "من فضلك، أدخل رقماً", vbExclamation, "خطأ"
                KeyAscii = 0
            End If
        Case "C":
            If (KeyAscii >= 48 And KeyAscii <= 57) Then
                MsgBox "من فضلك، أدخل حرفاً غير رقمي", vbExclamation, "خطأ"
                KeyAscii = 0
            End If
    End Select
End Sub

والله أعلم.

1
#3

أخي الفاضل والعزيز / احمد مبارك

الله الله عليك

جزاك الله كل خير وجعله في ميزان حسناتك ان شاء الله (+1)

طب هل يمكن لو عند اختيار c من الكمبوكس ان يكون الادخال في مربع النص يكون عددا ونص مثل جملة (5 هندي )أو (6 مصري )

والهدف من ذلك

لدي برنامج شؤون موظفين واريد عند ادخال كود الموظف مثلا (2 يمني) عبارة عن رقم ونص في حالة اختيار c

وعند اختيار A و B يكون رقم فقط بدون نص اي بدون الجنسية

حاولت ان تكون رسالة التحذير بعد الادخال لا عند الادخال ولكن بدون فائدة

بارك الله فيك

كل احترام وتقدير

تم تعديل هذه المشاركة بواسطة أبو شادي في 12 أبريل 2010 في 01:05

#4

وإياك جزى الله خيراً، وفيك بارك الله، أخي العزيز أبا شادي...

من أجل تنفيذ المطلوب من الممكن نقل الفحص في حالة حرف C إلى حدث BeforeUpdate لمربع النص (حتى يتم الفحص بعد إدخال القيمة كاملة، وقبل الحفظ). وعلى هذا يصبح الكود كالتالي:

Private Sub z_BeforeUpdate(Cancel As Integer)
    If IsNumeric(z) Then
        MsgBox "من فضلك، أدخل نصاً في هذا الحقل", vbExclamation, "خطأ"
        Cancel = True
    End If
End Sub

Private Sub z_KeyPress(KeyAscii As Integer)
    If (KeyAscii = 8 Or KeyAscii = 13) Then Exit Sub
    If (x.Value = "A" Or x.Value = "B") And (Not (KeyAscii >= 48 And KeyAscii <= 57)) Then
        MsgBox "من فضلك، أدخل رقماً هنا", vbExclamation, "خطأ"
        KeyAscii = 0
    End If
End Sub

والله أعلم.

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 12 أبريل 2010 في 01:59

1
#5

اخي / احمد مبارك

الله يكرمك ويعطيك العافيه

في حالة اختيار A مربع النص لا يقبل رقم ولا نص

تكرما ارجو تجربه هذا بنفسك

ثانيا اخي الكريم انا اريد في حالة اختيار ( C ) ان يقبل مربع النص( رقم +حروف ) مثل كلمة (5 هندي ) او (7 يمني) أو (3 مصري) وهكذا

لانه كما ذكرت لك في الرد السابق ان لدي برنامج شؤون موظفين واريد ان ادخل كود الموظف مرة رقم في حالة اختيار (A)

ومرة رقم ونص مثل جملة (5 هندي ) عبارة عن كود الموظف + جنسيته في حالة اختيار ( C) فقط.

اسف جدا لتعبك معايا ولكن

ان شاء الله سوف يكون في ميزان حسناتك

بارك الله فيك

#6
أبو شادي كتب:

اخي / احمد مبارك

الله يكرمك ويعطيك العافيه

في حالة اختيار A مربع النص لا يقبل رقم ولا نص

تكرما ارجو تجربه هذا بنفسك

ثانيا اخي الكريم انا اريد في حالة اختيار ( C ) ان يقبل مربع النص( رقم +حروف ) مثل كلمة (5 هندي ) او (7 يمني) أو (3 مصري) وهكذا

لانه كما ذكرت لك في الرد السابق ان لدي برنامج شؤون موظفين واريد ان ادخل كود الموظف مرة رقم في حالة اختيار (A)

ومرة رقم ونص مثل جملة (5 هندي ) عبارة عن كود الموظف + جنسيته في حالة اختيار ( C) فقط.

اسف جدا لتعبك معايا ولكن

ان شاء الله سوف يكون في ميزان حسناتك

بارك الله فيك

السلام عليكم ..

بوركت يداك أستاذنا أحمد ويعطيك ألف عافية على تفضلك بهذا الكود الجميل ولك +1وتستاهل أكثر...

أهلا بأخي الغالي أبو شادي ولي استفسار بسيط ان شاء الله ... اذا الكان المطلوب عند الوضع c فليس هناك أي مشكلة والحل بتوقيف عمل السطور بكود الأخ أحمد وبهذا تكون الأمور طبيعية تدخل الارقام والحروف بدون كونترول واذا كان قصدك أن لا يقبل الا رقم واحد مع الحروف فأعتقد ان لدي حل عسى أن يرضيك ريثما تأتيك المعونة بحل أفضل منه ان شاء الله ..

أرى والله أعلم فصل الادخال بخانتين كيف ؟

أعمل مربع كتابة وسرد يحتوي على تسلسل لارقام محددة من 1 الى الرقم المطلوب وضعه قبل مربع الكتابة z وعندما تكون القيمة لا تساوي c فيختفي مربع الكتابة والا يظهروتدخل الرقم المطلوب وبعدها تجمع القيمتين بحقل z وبهذه الطريقة نكون حافظنا على الكونترول بالتحكم بإدخال البيانات ، وتستطيع أيضا الاستفاده من هذه الطريقة بتخزين القيمتين بالجدول وأعتقد بوجود قيمتين داخل الجدول بحقلين منفصلين ربما تحتاجهم للفرز أو الفصل كما انك تستطيع بكل تأكيد جمعهم في اي مكان بحقل واحد ، ولا تعلم ما يمكن أن تحتاجه بالمستقبل للتحكم بترتيب البيانات هذا ما اردت أن أفيدكم به والله أعلم ..

تقبل تحياتي أخي وأستاذي أحمد وأخي أبو شادي

رقم ونص.rar

تم تعديل هذه المشاركة بواسطة moh samer ali في 12 أبريل 2010 في 09:54

1
27169617.gif
#7

أخي العزيز أبا عدنان، بارك الله فيك، ونفع بك، وأحييك على الفكرة الجميلة، لعل أخانا أبا شادي يستفيد منها...

أخي العزيز أبا شادي: أرجو منك المعذرة، فقد كان الكود يعاني بالفعل من علة bug، إذ نسيت بسبب العجلة أن أضيف إلى شرط if جزءاً مهماً:

If IsNumeric(z) And x.Value = "C" Then

وعلى كل حال، إذا كنت لا تمانع من أن يتم الاختبار بعد إدخال كامل القيمة، فيمكن جمع الكود كله في مكان واحد كالتالي:

Private Sub z_BeforeUpdate(Cancel As Integer)
    Select Case x.Value
        Case "A", "B":
            If Not IsNumeric(z) Then
                MsgBox "من فضلك، أدخل رقماً في هذا الحقل", vbExclamation, "خطأ"
                KeyAscii = 0
            End If
        Case "C":
            If IsNumeric(z) Then
                MsgBox "من فضلك، أدخل نصاً في هذا الحقل", vbExclamation, "خطأ"
                Cancel = True
            End If
    End Select
End Sub

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 12 أبريل 2010 في 14:21

1
#8

اخي الفاضل الاستاذ/ احمد مبارك

والله لا أعرف ماذا أقول لك بهذا الحل الجميل غير اني اقول نفعك الله بعلمك ورفعك وفرج الله عنك ورحمك في الدنيا والأخرة

هذا حل جميل جميل جميل فعلا حل من خبير واستاذ ومازال نتعلم منكم المزيد ففعلا انت مدرسة

جزاك الله كل خير ( +1) الذي لا يكفي حقك

اخي الغالي / ابو عدنان

يا أخي انت فعلا عبقري صدقني لا مجاملة انت وضعتني في حيرة بعد ان كنت لا اجد حل لمشكلتي هذه الآن ان محتار انفذ ايهما حل استاذنا / احمد مبارك الجميل ام حلك انت

فقد تعلمت منك الآن كيف عند وجود مشكله نفكر في طرق اخري حتي نصل للمراد

جزاك الله كل خير اخي / ابو عدنان وبارك الله فيك وغفر لك لك مني (+1) الموجود حاليا وتستاهل والله اكثر

بارك الله فيكم اخواني

مواضيع مشابهة