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

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

قام بنشر

السلام عليكم ,,  زملائي الاكابر اريد مساعده في التنقل بين السجلات فيي النموذج الفرعي (بدون امر Requery) لانه بيعمل مشاكل في الارقام وشكرا

انا عملت طريقه بالتنقل  

Me.ek = Me.ek - 1
DoCmd.Requery

--------

Me.ek = Me.ek - 1
DoCmd.Requery
ولكن بتعمل مشاكل  بالارقام عند التنقل او البحث

مرفق

test.accdb

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

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

بعد الإطلاع مرتين على الملف المرفق وطريقة عملك عليه ، جرب الحدثين التاليين في الأزرار ..

Private Sub a1_Click()
    Dim curID As Long
    Dim nxt As Variant

    If Nz(Me.ek, "") = "" Then
        curID = Me.no_rece + 1
    Else
        curID = CLng(Me.ek)
    End If

    nxt = DMin("no_rece", "enar_dman", "no_rece > " & curID)

    If Not IsNull(nxt) Then
        Me.ek = nxt
        Me.Requery
    Else
        MsgBox "لا يوجد سجل تالي", vbInformation + vbMsgBoxRight, ""
    End If
End Sub

Private Sub a2_Click()
    Dim curID As Long
    Dim prv As Variant

    If Nz(Me.ek, "") = "" Then
        curID = Me.no_rece - 1
    Else
        curID = CLng(Me.ek)
    End If

    prv = DMax("no_rece", "enar_dman", "no_rece < " & curID)

    If Not IsNull(prv) Then
        Me.ek = prv
        Me.Requery
    Else
        MsgBox "لا يوجد سجل سابق", vbInformation + vbMsgBoxRight, ""
    End If
End Sub

 

طبعاً قد تحتاج لزر "سجل جديد" إذا كان النموذج الحالي إدخال البيانات .

 

وهذه الفكرة بدلاً من التكرار للحدثين في الزرين ،يمكن دمجهم في دالة واحدة والإستدعاء فقط من خلال الزرين يميز السابق والتالي :-

Private Sub a1_Click()
    GoToRecord True
End Sub

Private Sub a2_Click()
    GoToRecord False
End Sub

Private Sub GoToRecord(isNext As Boolean)

    Dim curID As Long
    Dim newID As Variant
    Dim fld As String: fld = "no_rece"

    If Nz(Me.ek, "") = "" Then
        If isNext Then
            curID = Me(fld) + 1
        Else
            curID = Me(fld) - 1
        End If
    Else
        curID = CLng(Me.ek)
    End If

    If isNext Then
        newID = DMin(fld, "enar_dman", fld & " > " & curID)
    Else
        newID = DMax(fld, "enar_dman", fld & " < " & curID)
    End If

    If Not IsNull(newID) Then
        Me.ek = newID
        Me.Requery
    Else
        If isNext Then
            MsgBox "لا يوجد سجل تالي", vbInformation + vbMsgBoxRight, ""
        Else
            MsgBox "لا يوجد سجل سابق", vbInformation + vbMsgBoxRight, ""
        End If
    End If

End Sub

 

test.zip

تم تعديل بواسطه Foksh
إضافة فكرة تقلل التكرار ..

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

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

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

Important Information