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

هل استطيع جعل النموذج يتوقف عن العمل بعد ادخال عدد معين ؟؟


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

السلام عليكم 

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

 

مثلا سند  قبض  ......... ادعله يستقبل 10 سجلات فقط وبعد ذلك تتحول كافة الحقول الى عدم التمكين 

اذا حدا عنده فكرة عن الموضوع يا ريت لانه يخدمني كثير

 

بحثت ولم اوفق 

رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

تستطيع حساب عدد السجلات هكذا (اكتب اسم الجدول بدلا عن Table_Name) :

dim rst as dao.recordset
dim RC as integet

set rst=currentdb.openrecordset("Select * From Table_Name")
rst.movelast:rst.movefirst:RC=rst.recordcount

if RC=>10000 then
هنا تكتب ما تريد من الاوامر لوقف البرنامج
endif

 

جعفر

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

جاري التجربة

1 ساعه مضت, jjafferr said:

وعليكم السلام:smile:

 

تستطيع حساب عدد السجلات هكذا (اكتب اسم الجدول بدلا عن Table_Name) :


dim rst as dao.recordset
dim RC as integet

set rst=currentdb.openrecordset("Select * From Table_Name")
rst.movelast:rst.movefirst:RC=rst.recordcount

if RC=>10000 then
هنا تكتب ما تريد من الاوامر لوقف البرنامج
endif

 

جعفر

اخي العزيز @jjafferr

ما حكيت لي وين احط الكود ؟ قبل التحديث ولا بعد ........... الخ ؟؟

  • Like 1
رابط هذا التعليق
شارك

2 ساعات مضت, عبد اللطيف سلوم said:

مثلا سند  قبض  ......... ادعله يستقبل 10 سجلات فقط وبعد ذلك تتحول كافة الحقول الى عدم التمكين

اتفضل اليك مثال على ذلك بطريقة اخرى
 

Private Sub Form_Current()
    If Me.RecordsetClone.RecordCount >= 10 Then
'            Me.Names.Enabled = False
'            Me.ID.Enabled = False
'            Me.PhoneNumber.Enabled = False
            Me.Form.AllowAdditions = False
        Else
'            Me.Names.Enabled = true
'            Me.ID.Enabled = true
'            Me.PhoneNumber.Enabled = true
            Me.Form.AllowAdditions = True
    End If
End Sub

 

فقط استقبال 10 سجلات في النموذج.accdb

  • Like 3
رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

وبعد التحية والسلام على اخوي محمد سلامة وشفان:smile:

 

تستطيع استعمال طريقتي في اي مكان كان ، وحتى في وحدة نمطية مستقله ، مثلا:

public function Check_Records()

dim rst as dao.recordset
dim RC as integet

set rst=currentdb.openrecordset("Select * From Table_Name")
rst.movelast:rst.movefirst:RC=rst.recordcount

if RC=>10000 then
هنا تكتب ما تريد من الاوامر لوقف البرنامج
endif

end function

.

اما مثال اخوي شفان ، فيكون في النموذج فقط (هكذا بعد التعديل ، لكي تحصل على عدد السجلات الصحيح)

Private Sub Form_Current()
    Me.RecordsetClone.movelast
    If Me.RecordsetClone.RecordCount >= 10 Then
'            Me.Names.Enabled = False
'            Me.ID.Enabled = False
'            Me.PhoneNumber.Enabled = False
            Me.Form.AllowAdditions = False
        Else
'            Me.Names.Enabled = true
'            Me.ID.Enabled = true
'            Me.PhoneNumber.Enabled = true
            Me.Form.AllowAdditions = True
    End If
End Sub

 

جعفر

  • Like 3
  • Thanks 1
رابط هذا التعليق
شارك

22 دقائق مضت, jjafferr said:

اما مثال اخوي شفان ، فيكون في النموذج فقط

اهلا بعودتك استاذي الحبيب

27 دقائق مضت, jjafferr said:

هكذا بعد التعديل ، لكي تحصل على عدد السجلات الصحيح

هل هناك مشكلة بدون ان تكتب هذا السطر

28 دقائق مضت, jjafferr said:

Me.RecordsetClone.movelast

لان انا جربت بدون هذا السطر بواسطة مسج بوكس ليس هناك مشكلة

رابط هذا التعليق
شارك

حيا الله اخوي شفان:smile:

 

الامر Recordset  او Recordsetclone هما من عائلة DAO ، 

فإذا طلبت عدد السجلات مباشرة ، فستحصل على 0 (اي لا سجلات) ، او رقم (ولكن ليس عدد السجلات الصحيح) ،

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

واذا اردت الحصول على عدد السجلات الصحيح ، فيجب ان تستخدم MoveLast قبل استعمال RecordCount :smile:

 

جعفر

  • Like 3
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information