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

كيف استطيع تحميل 11 كامبو ببيانات 11 جدول

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

مشكلة الكود يتأخر حوالى 20 ثانية قبل فتح الفورم

اريد طريقة اسرع

في الموديل كتبت

Global Cn As ADODB.Connection
Public db        As New ADODB.Connection
Public RS        As New ADODB.Recordset
Public Rs1        As New ADODB.Recordset

'Public db As New ADODB.Connection
Public RSk As New ADODB.Recordset
'Public Rs1 As New ADODB.Recordset
Public rs2 As New ADODB.Recordset
Public rs3 As New ADODB.Recordset
Public rs4 As New ADODB.Recordset
Public rs5 As New ADODB.Recordset
Public rs6 As New ADODB.Recordset
Public rs7 As New ADODB.Recordset
Public rs8 As New ADODB.Recordset
Public rs9 As New ADODB.Recordset
Public rs10 As New ADODB.Recordset
Public rs11 As New ADODB.Recordset
Public rs12 As New ADODB.Recordset
Public rs13 As New ADODB.Recordset
Public rs14 As New ADODB.Recordset
Public rs15 As New ADODB.Recordset
Public rs16 As New ADODB.Recordset
Public rs17 As New ADODB.Recordset
Public rs18 As New ADODB.Recordset
Public EditORAdd As Boolean
Public Rss As New ADODB.Recordset

انا حطيتها في sub

ثم قمت باستدعاءها في تحميل الفورم

Sub comboadd()
    On Error Resume Next
    If db.State = adStateOpen Then db.Close
    db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=optimize; Data Source=" & App.Path & "\data.mdb"

''''''''        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

كيف استطيع تحميل 11 كامبو ببيانات 11 جدول

يعني ابغاها تكون خيارات للمستخدم للتسهيل عليه بدل كتابة البيانات

تم تعديل هذه المشاركة بواسطة المهنا في 8 نوفمبر 2005 في 20:41

#2

شيء طبيعي جدا ان الكود اللي انت كاتبه يتنفذ بعد ما العيميل يتحال علي المعاش

اولا: انت لا تستهلك الذاكرة فحسب، انت تقتل الذاكرة بسكين مصديء

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

ما الضرر من انك تعرف عدد 2 recordset أحدهما للتعامل مع قاعدة البيانات و الاخر للتعامل مع المهام الفرعية مثل ملأ الكومبو بوكس

فيكون الشكل للكود كالاتي

Public db        As New ADODB.Connection
Public RS        As New ADODB.Recordset
public rstemp as new adodb.recordset

و تلغي كل التعريفات الباقية للكلاس الخاصة بالريكوردست تماما

و بعدين لماذا تستخدم do while هي أبطأ بكثير من ال foor next

من الافضل ان تستخدم for next

كما ان doevents ستسرع لك الاداء

و علي ذلك ان شاء الله يكون كودك كالاتي مثلا

 rs.Open "select * from out order by permno", cn, 1, 3

    rstemp.Open "select type from types order by type", cn, 1, 3
    For i = 1 To rstemp.RecordCount
        combo(0).AddItem rstemp!Type
        rstemp.MoveNext
        DoEvents
    Next i

    If rstemp.RecordCount > 0 Then combo(0).ListIndex = 0
    rstemp.Close

    rstemp.Open "select name from cust order by name", cn, 1, 3
    For i = 1 To rstemp.RecordCount
        combo(2).AddItem rstemp!Name
        rstemp.MoveNext
        DoEvents
    Next i
    If rstemp.RecordCount > 0 Then combo(2).ListIndex = 0
    rstemp.Close


     rstemp.Open "select name from emp where job in ('ãäÏæÈ' ,'ãäÏæÈ ãÈíÚÇÊ') order by name", cn, 1, 3
    For i = 1 To rstemp.RecordCount
        combo(3).AddItem rstemp!Name
        rstemp.MoveNext
        DoEvents
    Next i
    If rstemp.RecordCount > 0 Then combo(3).ListIndex = 0
    rstemp.Close

تم تعديل هذه المشاركة بواسطة romantic_boy في 9 نوفمبر 2005 في 05:14

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

#4

شكرا وتمت التجربة

الكود يعطيني تعارض عند التجربة

الوسائط من النوع الخطاء

ياليت تعيد كتابة الكود السابق كاملا

هل من الممكن ان تميز لى اسم الجدول من اسم الحقل

بكلمة table أو fild

خطاء 3001

مع جزيل الشكر واسف لاتعابكم

#5

سوف أفرض ان لديك قاعدة بيانات اسمها government و بها جدول emp و جدول cash و جدول out و جدول

نريد ملأ الكومبو الاول من emp من حقل name

و نريد ملأ الكومبو الثانية من cash من حقل tsum

و نريد ملأ الكومبو الثالثة من out من حقل id

 dim cn as new adodb.connection
dim rs as new adodb.recordset
dim i as integer
cn.Open "provider=microsoft.jet.oledb.4.0; data source = government.mdb" 

rs.open "any thing", cn, 1, 3

rstemp.open "select * from emp oerder by name"
for i = 1 to rstemp.recordcount
combo1.additem rstemp!name
rstemp.movenext
doevents
next i
rstemp.close

rstemp.open "select * from cash order by tsum"
for i = 1 to rstemp.recordcount
combo2.additem rstemp!tsum
rstemp.movenext
doevents
next i
rstemp.close

rstemp.open "select * from out order by id"
for i = 1 to rstemp.recorcount
combo3.additem rstemp!id
rstemp.movenext
doevents
next i
rstemp.close

set rstemp = nothing

ارجوا منك مراعاة أنني لم أكتب الكود في المحرر و لكن في نافذة الرد مباشرة لذلك في حالة وجود أي خطأ أرجوا اعلامي لاراجع لك الكود

بالتوفيق

احمد شلبي

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

#8

اخي الحبيب هل تمزح؟؟؟؟

يوجد كومبو بوكس واحدة فقط من بين هؤلاء تملأها وحدها بأكثر من ثمانية الاف عنصر، و تقوللي ان البرنامج بطيء؟؟؟

و هل تتوقع من المستخدم ان يبحث ضمن ال 8000 عنصر عن اسم شخص او اسم كتاب؟!!!!

طبعا لابد مع هذا الكم الهائل ان يصبح البرنامج بطيء

لقد سرعته لك قدر استطاعتي ووضعت لك الحل في مثل هذه الظروف

و هي ان تخرج رسالة للمستخدم بأنه جاري تحميل البرنامج Loading

كما انه لابد ان تضع كود لل autocomplete داخل الكومبو بوكس

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

الكامبو خفيف الدم.rar

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

#11

الحمد لله ان البرنامج ظبط معاك و انا اقصد بال autocomplete في ال combo انك عند كتابة جزء من اسم العنصر يبحث الكومبو عن اقرب شبيه و يضعه في ال combo

مثلا لو كتبت مح يكم لك هو محمد و هذا الكود موجود في المنتدي هنا ي قسم الفيجوال 6 ابحث عنه و سوف تجده ان شاء الله

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

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

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