يا خبر أبيض ، وأنت بقي عايز تبحث في الجدول علي أساس جملة Loop ، بالطبع لن أشجعك في ذلك !!!!
الأخ الكريم ، لو كل مرة تم عملية البحث بهذا الأسلوب يبقي مش هنخلص علي الإطلاق !!!
أنت عايز تمر كل مرة علي أكثر من مليون سجل علشان ترتجع بالكثير 100 سجل ؟؟؟
بالطبع شيء غير جيد بالمرة !!!!
وللأسف كان نطاق حديثك من البداية عن كيفية عرض أكثر من مليون سجل في جريد أو ليستة أو كومبو ، ودة أللي أنا فهمتة
طيب حصل خير ، بص بقي معايا ، موضوع الفهرسة دة مفيش مفر منة ، علشان سرعة جلب البيانات
لكن تعالي بقي نتحدث عن شيء ، أنت لما بتعمل بحث علي القيمة النصية بتستخدم التالي :
Do Until RS.EOF If InStr(1, RS![Word], X) <> 0 Then MSHFlexGrid1.AddItem RS![Word] DoEvents End If ProgressBar1.Value = ProgressBar1.Value + 1 DoEvents RS.MoveNext DoEvents Loop
لاحظ جيداً معايا
If InStr(1, RS![Word], X) <> 0 Then
أنت أستخدمت الأمر InStr في إجراء عملية البحث ، طيب لية مبتستخدمش نفس الطريقة من قاعدة البيانات ، مش هيكون أسرع بردو ، أنظر :
SQL = "Select * From Root Where InStr(Root.[Word],'" & X & "') > 0"
طيب بلاش دي ، بص لطريقة أخري :
SQL = "Select * From Root Where Root.Word Like '%" & X & "%'"
بكدة أنت هترتجع مجموعة السجلات بسرعة عالية جداً ، وأعتقد أن عملية البحث النصي مش هتجيب أكثر من 100 سجل !!!
يا سيدي قول 1000 ، قول 5000
أهون من مليون وشوية أمر عليهم كلهم كل مرة أثناء عملية البحث
يا سيدي قول أنك بحثت وأرتج عليك 50.000 سجل ، قسم هذه العملية كما ذكرت لك عن طريق DoEvents ، وبدل ما تتنفذ علي كل سجل خليها تتنفذ علي كل 1000 سجل مثلاً.
وبكدة رضيت جميع الأطراف ، وزودت السرعة بأعلي مما تتخيل ، بدل ما تمر علي أكثر من مليون هتمر فقط علي 50.000 سجل مثلاً وهتعمل بار خفيف يتنفذ علي ثواني معدودة
عفواً أخي الكريم ، ما هو مفيش مفر من الحيل والتقسيم ، بردو ممكن بأكثر من طريقة في عملية الخداع البصري تعمل كل ما تشتهي ويرضي العميل
بالتوفيق
لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي
ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك
أنت وتصرفاتك
ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه
اشد آلام ... فصمتي أنا عنوان