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

مساعدة في تخفيف الكود


إذهب إلى أفضل إجابة Solved by jjafferr,

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

السلام عليكم 

هذا الكود لاحد الاساتذة جزاهم الله خير ويعمل يشكل ممتاز لكني حاولت تطبيقة على قاعدة  بيانات جديدة  لكني تفاجئت بعد اضافة اسطر مني للكود ان تنفيذ الكود اصبح بطئ ... الاسطر التي اضفتها مكتوب معلم عليها بكلمة ( هنا ) ارجو المساعدة ولكم مني جزيل الشكر 

Option Compare Database
Option Explicit

    Dim rst_fy As DAO.Recordset
    Dim rst_n As Integer
'


Private Sub namebook_Click()
    'take the Recordset one time, use it many times
    If rst_n = 0 Then
        Set rst_fy = Forms!freadermain!finfo.Form.RecordsetClone
        rst_n = 1
    End If
    rst_fy.OpenRecordset
    
    rst_fy.FindFirst "namebook='" & Me.namebook & "'"
    If rst_fy.NoMatch Then
        Me.Parent!finfo.SetFocus
        DoCmd.GoToRecord , , acNewRec                           '''''!!!!!!    هنا
        Me.Parent!finfo!namebook = Me.namebook                   ''''''!!!!!!  هنا
        Me.Parent!finfo!Serialnamebook = Me.Serialnamebook          ''''''!!!!!!  هنا
        DoCmd.GoToRecord , , acNewRec                             ''''''!!!!!! هنا

    Else
        Me.Parent!finfo.Form.Bookmark = rst_fy.Bookmark
        Me.Parent!finfo.SetFocus
        Me.Parent!finfo!numberreadbook = Me.Parent!finfo!numberreadbook + 1     ''''''!!!!!! هنا

    End If
    rst_fy.Close
End Sub

 

تم تعديل بواسطه ازهر عبد العزيز
رابط هذا التعليق
شارك

  • أفضل إجابة
منذ ساعه, ازهر عبد العزيز said:

هذا الكود لاحد الاساتذة

هذا كأنه خط يدي 🙂

 

اللي اعتقده مفروض يصير:

Option Compare Database
Option Explicit

    Dim rst_fy As DAO.Recordset
    Dim rst_n As Integer
'


Private Sub namebook_Click()
    'take the Recordset one time, use it many times
    If rst_n = 0 Then
        Set rst_fy = Forms!freadermain!finfo.Form.RecordsetClone
        rst_n = 1
    End If
'j    rst_fy.OpenRecordset
    
    rst_fy.FindFirst "namebook='" & Me.namebook & "'"
    If rst_fy.NoMatch Then
        rst_fy.AddNew
            rst_fy!namebook = Me.namebook
            rst_fy!Serialnamebook = Me.Serialnamebook
'j        Me.Parent!finfo.SetFocus
'j        DoCmd.GoToRecord , , acNewRec                           '''''!!!!!!    ???
'j        Me.Parent!finfo!namebook = Me.namebook                   ''''''!!!!!!  ???
'j        Me.Parent!finfo!Serialnamebook = Me.Serialnamebook          ''''''!!!!!!  ???
'j        DoCmd.GoToRecord , , acNewRec                             ''''''!!!!!! ???
        rst_fy.Update
    Else
'j        Me.Parent!finfo.Form.Bookmark = rst_fy.Bookmark
        Me.Parent!finfo.SetFocus
        Me.Parent!finfo.Form.Bookmark = rst_fy.Bookmark + 1
'j        Me.Parent!finfo!numberreadbook = Me.Parent!finfo!numberreadbook + 1     ''''''!!!!!! ???

    End If
    rst_fy.Close
End Sub

 

جعفر

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

ممكن استاذ توضبح مافائدة هذا الجزء من الكود 

21 ساعات مضت, jjafferr said:
    If rst_n = 0 Then
        Set rst_fy = Forms!freadermain!finfo.Form.RecordsetClone
        rst_n = 1

وابضا لدي مشكلة ان شاء الله تكون صغيره اريد عند اضافة كتاب غير موجود في سجلات القارئ ينقل التركيز الى اسم الكتاب

تم تعديل بواسطه ازهر عبد العزيز
رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

الظاهر هذا الكود اصلا كان لبحث اسم الكتاب ، وهذا معناه ان البيانات لا تتغير ، وانما البحث سيكون لعدة مرات ،

فبدل ان ان اجعل الكود في كل مرة يأخذ RecordSet النموذج ويجعله في الذاكرة (طبعا يأخذ وقت، صحيح جدا بسيط ، ولكنه ملحوظ) ، فجعلته يأخذ RecordSet النموذج مرة واحدة فقط ، ويستخدمه مرارا :

المفروض يكون

     Set rst_fy = Forms!freadermain!finfo.Form.RecordsetClone


  
بينما انا جعلته هكذا
    'take the Recordset one time, use it many times
    If rst_n = 0 Then
        Set rst_fy = Forms!freadermain!finfo.Form.RecordsetClone
        rst_n = 1
    End If
  
  
 وتصريح المتغيرات في اعلى الوحدة النمطية ، حتى تبقى قيمها في الذاكرة ، الى ان نحذفها نحن
  Dim rst_fy as dao.Recordset
  Dim rst_n As Integer

.

40 دقائق مضت, ازهر عبد العزيز said:

اريد عند اضافة كتاب غير موجود في سجلات القارئ ينقل التركيز الى اسم الكتاب

هذا مو شغل الكود ، وانما شغل جني او عفريت 😁

اما الكود ، كيف ينقل التركيز على اسم الكتاب ، وانت قلت انه غير موجود 😲

 

جعفر

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

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

النموذج مرة واحدة فقط ، ويستخدمه

ماشاء الله

 

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

اما الكود ، كيف ينقل التركيز على اسم الكتاب ، وانت قلت انه غير موجود 😲

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

    Else
'j        Me.Parent!finfo.Form.Bookmark = rst_fy.Bookmark
        Me.Parent!finfo.SetFocus
        Me.Parent!finfo.Form.Bookmark = rst_fy.Bookmark + 1
'j        Me.Parent!finfo!numberreadbook = Me.Parent!finfo!numberreadbook + 1     ''''''!!!!!! ???

    End If
    rst_fy.Close
End Sub

 

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

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