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

الانتقال الى حقل محدد في نمموذج مستمر

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

السلام عليكم

اخواني الكرام في المنتدى

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

اريد عند الضغط على enter او tab ان ينتقل المؤشر الى تفس الحقل في السجل التالي

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

وطبعا اريد تطبيق هذا الشيء على هذا النموذج فقط وليس على كل القاعدة

وهذه صورة توضح المطلوب

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

وشكرا لكم

post-181137-12628128581375_thumb.jpg

#2

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

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

أي ان اسم مربع النص الملون بالأصفر هو "الكمية" وهكذا

فضع الكود التالي في حدث "AfterUpdate" لمربع النص "الكمية"

    If Me.CurrentRecord = acLast - 1 Then
        Me![المادة].SetFocus
        Me![الكمية].SetFocus
    Else
        DoCmd.GoToRecord , , acNext
        Me![الكمية].SetFocus
    End If

والكود السابق لن يتنفذ إلا إذا حدثت القيمة ... ولن يتنفذ بمجرد الضغط على Enter أو Tab .... فإذا كنت تريد ذلك ... فتجاهل الكود السابق

وضع الكود التالي في حدث "KeyDown" لمربع النص الكمية

If KeyCode = 9 Or KeyCode = 13 Then
    If Me.CurrentRecord = acLast - 1 Then
        Me![المادة].SetFocus
        Me![الكمية].SetFocus
    Else
        DoCmd.GoToRecord , , acNext
        Me![الكمية].SetFocus
    End If
End If

وبالتوفيق

تم تعديل هذه المشاركة بواسطة koao في 7 يناير 2010 في 02:48

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#3

السلام عليكم

الف شكر لك اخي الكريم على مشاركتك وجهدك معي

ولكن الكود يعطي خطا عند السطر التالي

docmd.gotorecord, , acnext

وارجو اذا امكن شرح الكود

والف شكر لكم مقدما

#4

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

إذا كانت نسخة الأوفيس 2003 فسيعمل الكود ... أما إذا نسختك 2007 ... فأعتذر لأني لم أتعامل مع هذه النسخة حتى الآن ولا أعرف إذا يدعم هذه الأكواد

وبالتوفيق

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#5

الف شكر لك اخي الكريم على تفاعلك مع الموضوع

الحقيقة انا اعمل على اوفيس 2003 ومع ذلك يعطي خطأ

وشكرا لك

#6

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

أخي الكريم nicemessenge ... أعتذر منك فلقد كتبت الكود السابق من دون تجربته ... ونسيت أن acLast أصلا هي قيمة ثابتة وليست حاملة لعدد السجلات ... وبعد المراجعة تبين أن كل الكود خطأ ... ولقد تعلمت من خطأي فشكرا لك

عموما ... أبشر بالعوض ... ففي المرفق نموذج يبين لك كيف يعمل الكود .... وسأقوم بشرح الكود

نعرف متغير من نوع Boolean خارج الأحداث ليكون مرئي من جميعها

Dim Inn As Boolean

نضع الكود التالي وهو واضح في حدث فتح النموذج ... والكود الذي بداخله ببساطة ليجعل التركيز داخل مربع النص "الكمية"

Private Sub Form_Load()
    Me!Quantity.SetFocus
End Sub

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

Private Sub Quantity_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 9 Or KeyCode = 13 Then
        Inn = True
        If Me.CurrentRecord <> DCount("*", "MyTable") Then
            DoCmd.GoToRecord , , acNext
            Me!Quantity.SetFocus
        End If
    End If
End Sub

ثاني سطر من الكود نختبر إذا كان المفتاح المضغوط هو إما Enter أو Tab ..... فإذا كان كذلك سينفذ ما بداخله

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

نختبر إذا كان السجل الحالي لايساوي عدد كل السجلات في الجدول MyTable والذي هو مصدر الصف للنموذج ..... فإذا كان كذلك سينفذ ما بداخله

نأمره أن يذهب للسجل التالي

ثم نأمره أن يجعل التركيز على مربع النص "الكمية"

الآن نضع الكود التالي وهو واضح لحث دخول مربع النص "المجال" ... وصراحة هذا الكود تحايلي

Private Sub Scale_Enter()
    If Inn Then
        Inn = False
        Me!Quantity.SetFocus
    End If
End Sub

صراحة هذا الكود تحايلي .. فكل كود جربته لإبقاء التركيز في مربع النص "الكمية" إذا وصل لآخر سجل .. فإنه عند النقر على Enter أو Tab فإنه ينقل التركيز لمربع النص الذي يليه وهو "المجال" ... فوضع هذا الكود في حدث الدخول لمربع النص "المجال" ... وذلك ليعيد التركيز إلى مربع النص "الكمية"

ثاني سطر من الكود يختبر ما إذا كان المتغير Inn يحمل القيمة صحيح ... وكما ذكرنا بأنه إذا كان كذلك ... فبالتأكيد كان آخر تصرف من المستخدم هو الضغط على مفتاح Enter أو Tab في مربع النص "الكمية" ... فإذا كان كذلك سينفذ التالي

نأمره بأن يجعل قيمة المتغير Inn خطأ

ثم نأمره بأن ينقل التركيز لمربع النص "الكمية"

وأخيرا .... أعتذر مرة أخرى .... والحمدلله رب العالمين

koao_NextRecord.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#7

الف شكر لك اخي الكريم على مجهودك الرائع

وتعبك معي

وعسى الله ان يجعله في ميزان حسناتك

بارك الله فيك

لقد تم الوصول للحل وشكرا لك

والكود تمام

وفقك الله

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…