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

الاخوة الاعزاء عندي مشكلةفي هذا الكودهي انه بطئ جد

مغلق
بدأه المهنا في 9 أكتوبر 2005 · 5 رد · 556 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الاعزاء عندي مشكلة في هذا الكود وهي انه بطئ جدا جدا

قمت بوضع الكود في موديل وفي جنرال وفي الفورم وفي تايمر ولم تنفع كل تلك المحاولات ما زال الكود بطئ جدا جدا

Sub comboadd()
    On Error Resume Next
    If db.State = adStateOpen Then db.Close
    db.Provider = "Microsoft.JET.OLEDB.4.0;"
    db.Open App.Path & "\data.mdb"
    RS.Open "[workers]", db, adOpenStatic, adLockPessimistic
    Rs1.Open "[co4]", db, adOpenStatic, adLockPessimistic
    Do While Not Rs1.EOF
        Combo18.AddItem Rs1!author
        Combo22.AddItem Rs1!author
        Combo25.AddItem Rs1!author
        Rs1.MoveNext
    Loop
    Rs1.Close

    '    rs2.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs3.Open "[co5]", db, adOpenStatic, adLockPessimistic
    Do While Not rs3.EOF
        Combo20.AddItem rs3!mohagg
        Combo24.AddItem rs3!mohagg
        Combo26.AddItem rs3!mohagg
        rs3.MoveNext
    Loop
    '    rs10.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs11.Open "[co6]", db, adOpenStatic, adLockPessimistic
    Do While Not rs11.EOF
        Combo23.AddItem rs11!motargm

        rs11.MoveNext
    Loop
    rs11.Close
    '    rs4.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs5.Open "[nsr]", db, adOpenStatic, adLockPessimistic
    Do While Not rs5.EOF
        Combo21.AddItem rs5!nasher

        rs5.MoveNext
    Loop
    rs5.Close
    '    rs6.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs7.Open "[co7]", db, adOpenStatic, adLockPessimistic
    Do While Not rs7.EOF
        Combo19.AddItem rs7!baldnshr

        rs7.MoveNext
    Loop
    rs7.Close
    '    rs8.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs9.Open "[SUPJCT123]", db, adOpenStatic, adLockPessimistic
    Do While Not rs9.EOF
        Combo1.AddItem rs9!SUBJCT
        Combo4.AddItem rs9!SUBJCT
        Combo5.AddItem rs9!SUBJCT
        rs9.MoveNext
    Loop
    rs9.Close



    '    rs12.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs13.Open "[co9]", db, adOpenStatic, adLockPessimistic
    Do While Not rs13.EOF
        Combo3.AddItem rs13!magas

        rs13.MoveNext
    Loop
    rs13.Close

    '    rs14.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs15.Open "[co1]", db, adOpenStatic, adLockPessimistic
    Do While Not rs15.EOF
        Combo12.AddItem rs15!selselah

        rs15.MoveNext
    Loop
    rs15.Close


    '    rs16.Open "[workers]", db, adOpenStatic, adLockPessimistic
    rs17.Open "[co2]", db, adOpenStatic, adLockPessimistic
    Do While Not rs17.EOF
        Combo2.AddItem rs17!gelaf

        rs17.MoveNext
    Loop
    rs17.Close

End Sub
#2

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

أخى الحبيب المهنا

كل عام وأنت بخير وتقبل الله منك الطاعات وأسكنك ومن تحب فسيح الجنات

ردا على سؤالك أسوق إليك بعض النصائح لعل بعضها ينقص من الزمن الذى يستهلكه الكود

1- لا تستخدمه فى حدث التحميل للنموذج Form_Load فسيكون أبطأ ما يكون هناك

2- حاول استخدام For Next بدلا من Do Loop

ستجدها أسرع 30 % على الأقل فى التنفيذ

لأنه فى اللوب مع Do While Loop ينفذ إجراء مقارنة هلى تحقق الشرط أم لا وهذا يسبب تأخيرا فى الدورة

أما مع For Next فإنه يدور لعدد محدد مسبقا من المرات

كما فى المثال التالى:

With Rs1
  Dim R As Long
  If .RecordCount > 0 Then
   .MoveLast: .MoveFirst
   For R = 0 To .RecordCount - 1
       Combo18.AddItem "" & !Author
       Combo22.AddItem "" & !Author
       Combo25.AddItem "" & !Author
       .MoveNext
       DoEvents
   Next R
  End If
End With

ولا تنسى تفريغ الكومبوبوكس قبل تعبأتها

3- استخدام DoEvents سيسمح للبرنامج من تنفيذ ما يطلب منه بجانب قيامه بتنفيذ هذا الكود فى تنسى استخدامها فى وسط الحلقات التكرارية كلها

هذا سيمنع تهنيج البرنامج أثناء تنفيذ الكود

4- وهى الأهم والأجدر أن تبدأ بها : أنت تكون رحيما على البرنامج ولا تجعله ينفذ كل شئ فى خطوه واحده فهذا سيجعله يتباطأ أكثر ولاسيما عندما تزيد وطأة البيانات عليه ويضطر أن يقرأها واحده واحده فى كل استدعاء- لو أنت مكانه لأخذت سنين تقرأها ههههههههه - فالأفضل أن تقسمها لعدة أكواد وتستدعى ما يلزمك فقط عند الحاجه فقط

إلا أن تكون الحاجه تقتضى التضحية بكل هذا الزمن فى تنفيذ التعليمات الثقيله هذة

وربنا ييسر لك كل أمر عسير

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#3

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

أخى الحبيب abulyaman المبدع

كل عام وأنت بخير وتقبل الله منك الطاعات وأسكنك ومن تحب فسيح الجنات وجميع أهلك

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

ولا يوجد غير الفورم والجنرال لهذه المهمة

#4

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

الله يبارك فيك

و لك مثل ما قلت

عندى نصيحة أخرى وهى فى صورة سؤال

لماذا تعبئ نفس البيان فى ثلاثة كمبوبوكس؟

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#6

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

أخى العزيز

مجرد رأى

وطبعا كل شيخ وله طريقه - كما يقال

على قدر ما فهمت حتى الآن - وأرجوا أن لا نوسع الحوار أكثر مما يستحق ونزحم المنتدى بلا داع

إذا كنت تريد أن تتيح للمستخدم إختيار كتب لأكثر من كاتب ، ولديك جدول يحمل اسم الكاتب وكتبه مثلا

يمكنك تعبأة أسماء الكتاب Authors فى قائمة ListBox وتنشط فيها خاصية الاختيار CheckBox

وبجانب هذه القائمة مثلا تضع زر يعرض كتب هؤلاء الكتاب ولن يقتصر الأمر على ثلاث كتاب فقط بل ممكن يمتد لكل الكتّاب حسب رغبة المستخدم

وطبعا أنت ستستخدم عبارة IN فى الاستعلام الذى ستبحث به عن الكتب الخاصة بهؤلاء الكتاب

وبإمكانك أيضا أن تعرضهم فى جدول لتعرض معها اسم الكاتب ودار النشر وخلافه مما ترغب فى عرضه

وبعد ظهورهم فى الجدول يستطيع المستخدم مثلا بالنقر المزدوج على سطر أن يدخل منه لبيانات أكثر حسب رغبتك

بهذا سيكون سرعة تنفيذ الكود عندك أكثر من سريعه لأن كل ما فعلناه هو استعلامين ومنفصلين بدلا من الاستعلامات الأكثر من تسعة المدرجه فى مثالك المبين أعلاه

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

أرجوا أن لا أكون تطفلت على تعديل تصميمك الذى أرتحت له وتعمل عليه

وفى الختام تقبل منى أخلص الدعوات بالتوفيق والسداد

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

هذا الموضوع مغلق.

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

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

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

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

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