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

مشكلة البحث بقواعد البيانات الضخمة

بدأه السندبااد في 6 أبريل 2009 · 43 رد · 3,517 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#26

يا خبر أبيض ، وأنت بقي عايز تبحث في الجدول علي أساس جملة 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 سجل مثلاً وهتعمل بار خفيف يتنفذ علي ثواني معدودة

عفواً أخي الكريم ، ما هو مفيش مفر من الحيل والتقسيم ، بردو ممكن بأكثر من طريقة في عملية الخداع البصري تعمل كل ما تشتهي ويرضي العميل

بالتوفيق

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#27

بســم الله الـرحمــن الرحيــم

الملف المرفق هو تغيير في بعض الكود للمثال المذكور في المشاركة رقم 4

تستطيع تحريك الفورم أثناء البحث، أو اجراء أي عملية أخرى

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

ملاحظة: البحث نوعا ما بطيئ لأن النص مُشكل.

A1_Search_Access_Database_Search.rar

#28
booknet كتب:
بســم الله الـرحمــن الرحيــم

الملف المرفق هو تغيير في بعض الكود للمثال المذكور في المشاركة رقم 4

تستطيع تحريك الفورم أثناء البحث، أو اجراء أي عملية أخرى

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

ملاحظة: البحث نوعا ما بطيئ لأن النص مُشكل.

السلام عليكم

جملة البحث خاطئة

ابحث عن نص ثم أوقف البحث وابحث عن آخر ستكون النتيجة غير صحيحة

لتتأكد من عدم صحته ابحث عن ويقولون متى هذا الوعد إن كنتم صادقين

ستجد أنه سيعطيك الكثير من النتائج وهذا خطأ هي موجودة 6 مرات فقطط

الخطأ: أنه يبحث عن كل المفردات التي يحتويها مربع النص

فمثلاً: "فبأي آلاء ربكما تكذبان" سيبحث عن "فبأي" و"آلاء" و "ربكما" وستخرج أكثر من 150 نتيجة وهذا خطأ

عند تعديل المرفق يرجى عدم رفع قاعدة البيانات حتى يكون الحجم صغيراً

تم تعديل هذه المشاركة بواسطة السندبااد في 12 أبريل 2009 في 04:20

فاعلم أنه لا إله إلا الله

#29

بالنسبة لسرعة البحث بالقواعد الضخمة

وضعت بالمرفق ملفاً بعد تعديله من دون القاعدة فهي بالمشاركة الأولى

إلى حدٍ ما النتائج مرضية دون أي مشاكل وسرعة البحث جيدة

__________6.rar

فاعلم أنه لا إله إلا الله

#30

يرجى تعديل السطر من:

If InStr(1, ReplaceString(Rec.Fields(1)), ReplaceString(SerItem(0)), vbTextCompare) Then

إلى

If InStr(1, ReplaceString(Rec.Fields(1)), ReplaceString(Text1.Text), vbTextCompare) Then

يطي النتيجة مضبوطة

#31

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

قمت بتحويل كود البحث إلى Thread منفصل :)

المشكلة أن الوقت زاد بمقدار 3 ثواني عن العمل بنفس الثريد =\

لا أدري هل ستفيد في حالة كبر قاعدة البيانات أو شي ,

جرب أيضاَ تحريك الفورم في مثالك ومثالي أيضاَ :)

متابع للموضوع , والمعذرة عالتدخل , دمتم بود ,

___________6.5.rar

#32
booknet كتب:
يرجى تعديل السطر من:

If InStr(1, ReplaceString(Rec.Fields(1)), ReplaceString(SerItem(0)), vbTextCompare) Then

إلى

If InStr(1, ReplaceString(Rec.Fields(1)), ReplaceString(Text1.Text), vbTextCompare) Then

يطي النتيجة مضبوطة

نفس الخطأ

ابحث عن :

ويقولون متى هذا الوعد إن كنتم صادقين

فبأي آلاء ربكما تكذبان

ما النتيجة؟

Syntax_err كتب:
السلام عليكــم ورحمـة الله وبركاتــه ،،

قمت بتحويل كود البحث إلى Thread منفصل :)

المشكلة أن الوقت زاد بمقدار 3 ثواني عن العمل بنفس الثريد =\

لا أدري هل ستفيد في حالة كبر قاعدة البيانات أو شي ,

جرب أيضاَ تحريك الفورم في مثالك ومثالي أيضاَ :)

متابع للموضوع , والمعذرة عالتدخل , دمتم بود ,

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

لكن المثال الموجود بالمشاركة 29 أسرع

جرب وشوف النتائج

ألف شكر لمشاركتك

فاعلم أنه لا إله إلا الله

#33

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

اخي انا ارى ان انتظار 3 او 5 ثواني لاظهار النتيجة وحدوث Hang

افضل من انتظار 3 او 5 دقائق لعرض النتيجة دون حدوث Hang

متفق معك في حتمية وجود Progress Bar ولكن للعرض وليس للبحث

انظر المرفقين الاول ما احبذه والثاني استكمالا للاسلوب الذي اتبعته انت

Search_1.rar

Search_2.rar

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

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#34
mrx_ta7ady كتب:

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

اخي انا ارى ان انتظار 3 او 5 ثواني لاظهار النتيجة وحدوث Hang

افضل من انتظار 3 او 5 دقائق لعرض النتيجة دون حدوث Hang

متفق معك في حتمية وجود Progress Bar ولكن للعرض وليس للبحث

انظر المرفقين الاول ما احبذه والثاني استكمالا للاسلوب الذي اتبعته انت

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

الله يبيض وجهك ويرفع قدرك ويرزقك الزوجة الصالحة والذرية الطيبة

المثال الأول صحيح أنه يبنتظر ثوانٍ ولكنه طيارة في البحث

بالفعل هذا ما كنت أبحث عنه

فجزاك الله خيراً

أريد إضافة بسيطة إن أمكن

زر إيقاف البحث مؤقتاً وليس نهائياً كما هو حال الزر الموجود

وزر آخر متابعة البحث

يتابع البحث من النقطة التي توقف منها

جزاك الله الجنّة

فاعلم أنه لا إله إلا الله

#35

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

شكرا على الدعاء ونسال الله الاستجابة لك ولي وللمسلمين كافة :)

ولكن بالنسبة للمثال الاول فلن يمكنك الإيقاف الى بعد الـ Hang هذه .. لان التحكم في هذا الوقت ليس بايدينا

Search_1.rar

Search_2.rar

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

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#36

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

رفع الله قدرك ومقدارك أخ mrx_ta7ady وأكرمك الزوجة الصالحة

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

وقد جربت ذلك على قاعدة البيانات الضخمة ذات الحجم 50 ميغا وبـ مليون و300 ألف سجل

ألف تحية لك ولجميع الأخوة الذين كان لهم لمسات رائعة في هذا الموضوع

فاعلم أنه لا إله إلا الله

#37

جرب أن تستعمل مثالي لكن مع إستبدال كود البحث داخل الthread بكود الأخ mrx_ta7ady

هل يقوم بتعليق الواجهة ؟؟

وفقك الله لما يحبه ويرضى , دمت بود ,

#38
Syntax_err كتب:
جرب أن تستعمل مثالي لكن مع إستبدال كود البحث داخل الthread بكود الأخ mrx_ta7ady

هل يقوم بتعليق الواجهة ؟؟

وفقك الله لما يحبه ويرضى , دمت بود ,

أخي الكريم : نعم يعلٌّق والكود يحتاج لتعديلات قبل نسخه

هل يدور في ذهنك شيء ما؟

تحية لك

فاعلم أنه لا إله إلا الله

#39

ما يدور بذهني هو إستعمال كود البحث السريع بثريد منفصل ,

مما يساعدك على تخطي التعليق الذي يحصل للواجهة , أيضاَ يمكنك عمل Suspend و Resume للثريد , بهذا تستطيع إيقاف/إستكمال الإيقاف المؤقت للبحث بأسهل طريقة ممكنة :)

كان الله في عونك :) دمت بود

#40
Syntax_err كتب:
ما يدور بذهني هو إستعمال كود البحث السريع بثريد منفصل ,

مما يساعدك على تخطي التعليق الذي يحصل للواجهة , أيضاَ يمكنك عمل Suspend و Resume للثريد , بهذا تستطيع إيقاف/إستكمال الإيقاف المؤقت للبحث بأسهل طريقة ممكنة :)

كان الله في عونك :) دمت بود

السلام عليكم

بالنسبة لي وصلت للحل المرضي

إن كان لديك شيء آخر فنتمنى أن ترفقه مع المثال

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

فاعلم أنه لا إله إلا الله

#41

بســم الله الـرحمــن الرحيــم

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

أخي العزيز السندباد

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

اعمل كوبي لقاعدة البيانات للمثال الأول، واعمل كوبي للجدول في المثال الثاني.

شكرا

Data_Multi.rar

Table_Multi.rar

#42

ما شاء الله عليك عمل رائع

لكن التعليق شيء غير طبيعي وطويل

ألف تحية لك

فاعلم أنه لا إله إلا الله

#43

ما فهمت ما تقصدون بالتعليق، هل تقصدون تجميد الفورم؟

#44

أقصد التعليق في البداية

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

فاعلم أنه لا إله إلا الله

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

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

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

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

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