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

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

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

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

عندي قاعدة بيانات ضخمة

المشكلة أنه عند البحث عن نتائج كثيرة يجمد الفورم وأنتظر قليلاً حتى تخرج كل النتائج

كيف يتم حل هذه المشكلة؟

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

هذا سيؤدي أن البرنامج سيعلق

ولقد رأيت بعض المكتبات الإسلامية والعلمية تجاوزت هذه المشكلة فتخرج النتائج تباعاً وراء بعضها

لكن لم أعرف الطريقة

أردت أن أرفع لكم قاعدة بيانات ضخمة لكن حجمها 8 ميغا

ما الحل؟

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

#2

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

كيف تملئ الجريد ؟؟ .. ضع لنا كود ملئ الجريد هنا

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

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

#3

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

جزاك الله خيراً لتجاوبك

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

ولكن قمت بتقليصها ورفعت لك بعضها مع مثال بالبيسك

http://www.4shared.com/file/97039437/3fafc36/__online.html

وحتى تعرف المشكلة قمت بوضع شرح فلاشي لك على هذا الرابط

http://www.4shared.com/file/97046998/8b315638/search.html

المشكلة عرضتها على البعض لكن لم أجد حلاً

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

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

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

#4

على هذا الرابط وجدت مثالاً عملياً لما أريده

http://www.planet-source-code.com/vb/scrip...20&lngWId=1

لكن الكود طويل وأظن أنه يمكن اختزاله

والمثال يبحث في كل السجلات وأنا أريد أن أحدد سجلاً معيناً

أتمنى أن تتعاون معي لتطبيق المثال على مرفقاتي

وجزاكم الله خيراً

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

#5

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

أخي العزيز كانت عندي نفس المشكلة وحللتها بواسطة تجزئة نتيجة البحث، ولقد ساعدني كثيرا المثال المرفق.

طبعا تستطيع التعديل عليه بأن تجعل في كل صفحة أكثر من 1000 نتيجة مثلا أو ما شابه، وأن تغير حجم الفورم وحجم الليست.

النتيجة الحالية "1000" وتستطيع استبدالها بالنتيجة التي تريد، علما بأن عددها 10 لو استخدمت "Replace All"

وشكرا

Data_Search.rar

#6

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

المشكلة حقيقة لم تحل فوضع 100 نتيجة في كل صفحة هو حل بسيط

وتصفح عدة صفحات أمر مرهق

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

ما زلنا ننتظر أحد االأخوة

ممنوك جداً يا طيب :)

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

#7

أخي العزيز ضع 1000 نتيجة في كل صفحة والنتيجة سريعة، أن وضعت 5000 نتيجة وما زال النتيجة سريعة

اليك المثال في قاعدة البيانات التي أرستلها أنت والنتيجة 1000 في كل صفحة والوقت للبحث 5 ثواني عن الحرف "ح"

Data_Search2.rar

#8
booknet كتب:
أخي العزيز ضع 1000 نتيجة في كل صفحة والنتيجة سريعة، أن وضعت 5000 نتيجة وما زال النتيجة سريعة

اليك المثال في قاعدة البيانات التي أرستلها أنت والنتيجة 1000 في كل صفحة والوقت للبحث 5 ثواني عن الحرف "ح"

جزاك الله خيرا ومن الأعماق أشككر اهتمامك

أخي الكريم: مشكلتي ليست في أن تخرج ألف نتيجة أو خمسة آلاف لا

المشكلة أن الفورم يجمد أثناء البحث عن نتائج كثيرة

حتى في مثالك هذا الأخير وعند البحث عن حرف الحاء قام بالجمود إلى أن ظهرت النتائج

جرب وسترى

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

#9

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

أنا استخدم هذا الكود منذ زمن على داتا فيها أكثر من مليون ريكورد ولم يتجمد الفورم عندي في أي وقت.

يمكن هذا من نوع الكمبيوتر أو ما شابه لا أعرف.

على كل ننتظر رأي أحد الأخوة المحترفين في البرمجة.

وشكرا

#10
mrx_ta7ady كتب:

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

كيف تملئ الجريد ؟؟ .. ضع لنا كود ملئ الجريد هنا

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

الأخ mrx_ta7ady

أما زلت على قيد الحياة

؟!؟

-_-

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

#11

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

اعتقد ان مرفقي لم يختلف كثيرا عن مرفقك

السندبااد كتب:

ولقد رأيت بعض المكتبات الإسلامية والعلمية تجاوزت هذه المشكلة فتخرج النتائج تباعاً وراء بعضها

هل يمكنك رفع احد هذه البرامج التي ذكرتها ؟

Search.rar

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

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

#12
mrx_ta7ady كتب:

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

اعتقد ان مرفقي لم يختلف كثيرا عن مرفقك

هل يمكنك رفع احد هذه البرامج التي ذكرتها ؟

السلام عليكم

حمداً لله على سلامتك

أخي الكريم لم تفعل شيئاً جديداً

هل رأيت المثال الموجود هنا

http://www.planet-source-code.com/vb/scrip...20&lngWId=1

هذا ما قصدته

على كلٍ قام أحد الأخوة بحل جيد ولكن ليس كالذي في الرابط

:wink:

ملاحظة: عند تعديل المثال لا ترفع القاعدة معه حتى يكون الحجم صغيراً فالقاعدة موجودة على جهازي

بالنسبة لطلبك هذا هو موقع المكتبة الشاملة تستطيع تحميلها وهي مجانية

http://www.shamela.ws/download.php?type=0

تستطيع أن تبحث في آلاف الكتب ومئات الآلاف من السجلات بكل مرونة

وهي مبرمجة بالبيسك6

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

#13

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

اولا فعلا لم آتيك بجديدي

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

لذا طلبت البرنامج الذي قصدته انت كي افهم ماذا تقصد تحديدا :)

والبرنامج نفسه لم استطيع استخراج منه الكتب كي ابحث فيه .. اقصد لم استطيع استخدامه جيدا

والسؤال الذي يطرح نفسه الآن .. مالمطلوب اذا طالما وجدت ضالتك :) ؟

علما بان طريقة الـ Progress هذه ستضاعف الوقت المستنفذ في عملية البحث

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

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

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

#14

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

أستاذب الحبيب

سأرسل لك المسكلة على الخاص

جاري تحضير الموضوع وإرساله لك عالخاص

ألف تحية لك

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

#15

اخي الكريم

لابد من وضع الكود فقد يكون هو سبب البطء و قد تكون استخدمت دوارة فى كل سجل

كما واضح انك تستخدم الداتا كنترول و هي اداة ضعيفة و بطيئة

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

تقبل مرورى

#16

السلام عليكم

الأخ mrx_ta7ady تم إرسال رسالة على الخاص بالمرفقات

وتوضيح المشكلة

أتمنى منك مساعدتي وأجرك على الله

الأخ medhatzayed بارك الله بك

شاكر مرورك العطر

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

#17

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

"قواعد طرح الأسئله والمشاركات"

6. لا تطلب الإجابة على سؤالك إلى بريدك الخاص، الفائدة يجب أن تعم، و احتمال تكرار نفس السؤال كبير..

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

"قواعد طرح الأسئله والمشاركات"

6. لا تطلب الإجابة على سؤالك إلى بريدك الخاص، الفائدة يجب أن تعم، و احتمال تكرار نفس السؤال كبير..

السلام عليكم

إن شاء الله عندما ينتهي العمل ترون ما يسركم

بارك الله فيك

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

#19

الأخ السندباد الكريم ، بعد إذنك أنا شفت قاعدة البيانات ، وشيء طبيعي أن يحدث بطء أثناء عرض البيانات ، لسببين :

1- عدد السجلات اليتي تتحدث عنها كبيرة جداً.

2- أنت مش عامل فهرسة علي الجدول.

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

أنا جربت مسبقاً الموضوع دة وأدرجت حوالي مليون سجل وكان بيتم عرض كافة البيانات دفعة واحدة علي الجريد بطريقة الـ Loop وبطرق أخري مختلفة ، وكانت النتيجة واحدة ... للأسف مدة أكثر من ربع ساعة تقريباً ، وأحياناً نصف ساعة ، لكن لما عملت فهرسة علي كافة الحقول بدأت تظهر ليا السرعة علي حق ، فوجأت لقيت أن السرعة نزلت من ربع ساعة فأكثر الي ثواني معدودة ، يعني تقريباً من 15 الي 30 ثانية.

ملحوظة ، لو فية حقل متكرر ومش محتاج فهرسة زي حقل "الملاحظات" علشان خطري فهرسة بردو وأخبرنا بالنتيجة

فية شيء آخر يجب أن تفهمة جيداً ، أن كلما أستخدمت الجملة ( Select Fld1, Fld2, Fld3, FldN From TabName ) يعني تحط إسم الحقل مباشرتاً كلما كان أسرع من جمل الحسابات الخارجية.

ملحوظة أخيرة ، يجب أن تقسم العمل سواء في التقارير أو في الشاشات علي قدر المستطاع ، يعني مثلاً لو أنت عايز تعمل شاشة تبحث من خلالها عن موظف محدد مفيش مانع أبدأ أنك تستخدم أسلوب الـ Pages كما تفضل الأخوي الكرام بطرح الفكرة عليك.

شكراً وبالتوفيق

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

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

أنت وتصرفاتك

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

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

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

My FaceBook

#20
MMA_EG_Cairo كتب:
الأخ السندباد الكريم ، بعد إذنك أنا شفت قاعدة البيانات ، وشيء طبيعي أن يحدث بطء أثناء عرض البيانات ، لسببين :

1- عدد السجلات اليتي تتحدث عنها كبيرة جداً.

2- أنت مش عامل فهرسة علي الجدول.

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

أنا جربت مسبقاً الموضوع دة وأدرجت حوالي مليون سجل وكان بيتم عرض كافة البيانات دفعة واحدة علي الجريد بطريقة الـ Loop وبطرق أخري مختلفة ، وكانت النتيجة واحدة ... للأسف مدة أكثر من ربع ساعة تقريباً ، وأحياناً نصف ساعة ، لكن لما عملت فهرسة علي كافة الحقول بدأت تظهر ليا السرعة علي حق ، فوجأت لقيت أن السرعة نزلت من ربع ساعة فأكثر الي ثواني معدودة ، يعني تقريباً من 15 الي 30 ثانية.

ملحوظة ، لو فية حقل متكرر ومش محتاج فهرسة زي حقل "الملاحظات" علشان خطري فهرسة بردو وأخبرنا بالنتيجة

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

حمداً لله عسلامتك والله المنتدى نور بتواجدك

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

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

أخي الكريم:

أظنك نظرت لقاعدة البيانات والتي هي عبارة عن مفردات وجذور لكلمات اللغة العربية وتضم مليون و300 ألف كلمة

فكرت فوجدت أسلس طريقة هي البحث اليدوي

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

أضف إلى أنني لا أعرف كيفية تطبيقها

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

هل هنالك مثال عملي أخي الكريم

فالمدة التي ذكرتها مذهلة من ربع ساعة إلى خمس ثوانٍ

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

#21

الأخ الكريم يمكنك فعلياً إجراء فهارس برمجياً ، ولكن ما الداعي في ذلك طالما هناك حلول مباشرة ؟؟؟؟

مجرد أنك تقف علي الحقل المناسب وتحدد الفهرسة بتاعتها وتختار فهرسة غير متكررة للحقول الخاصة بذلك زي مثلاً إسم الموظف وكود الموظف ، أما بقي الحقول الأخري المتكررة أختر فهرسة مع التكرار زي مثلاً "نوع الموظف - الراتب - تاريخ الميلاد - تاريخ التعيين" !!!

لكن البرمجة سيبها لإستخداماتها زي مثلاً الحقول المركبة مثل إسم الموظف المقسم الي 3 أو 4 حقول ، مثال :

نفرض أن لدينا جدول إسمة Emp ، وبيحتوي علي الحقول التالي :

Emp_ID	   --> Primary Key ( Number )
Emp_Code   --> Unique ( String )
Emp_Fname --> String
Emp_Mnane --> String
Emp_Lname --> String
Emp_Sex	 --> Number
Emp_Salary  --> Money

نفرض أن الجدول دة لا يحتوي علي أي فهارس ، السؤال كيف يمكننا إدراج فهارس برمجياً ؟؟؟

1- إدراج مفتاح رئيسي للجدول ( Emp_ID ):

Alter Table Emp Add Constraint PK_Emp Primary Key(Emp_ID)

2- إدراج فهرس بدون تكرار لحقل وحيد ( Emp_Code ) :

Alter Table Emp Add Constraint UQ_Emp_Code Unique(Emp_Code)

3- إدراج فهرس بدون تكرار لأكثر من حقل أو حقل مركب ( Fname, Mname, Lname ) :

Alter Table Emp Add Constraint UQ_Emp_Name Unique(Emp_Fname,Emp_Mname,Emp_Lname)

4- إدراج فهرس غير متكرر لحقل واحد :

Create Index IN_Emp_Sex On Emp(Emp_Sex)

5- إدراج فهرس غير متكرر لأكثر من حقل دفعة واحدة :

Create Index IN_Employee On Employee(Employee_Sex, Employee_Salary)

بالتوفيق

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

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

أنت وتصرفاتك

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

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

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

My FaceBook

#22

جزاك الله الجنة أخي العزيز

الآن جربت ما تفضلت به

وبعد الفهرسة تضاعف حجم قاعدة البيانات

لكن صدق لم أجد أثراً عملياً في البحث سوى أن إقلاع البرنامج أصبح أسرع

أرجوك ضع مثالاً عملياً

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

MMA_EG_Cairo كتب:
للأسف مدة أكثر من ربع ساعة تقريباً ، وأحياناً نصف ساعة ، لكن لما عملت فهرسة علي كافة الحقول بدأت تظهر ليا السرعة علي حق ، فوجأت لقيت أن السرعة نزلت من ربع ساعة فأكثر الي ثواني معدودة ، يعني تقريباً من 15 الي 30 ثانية.

:huh:

؟!؟!

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

#23

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

اولا وصلت الرسالة وسيتم الرد ان شاء الله ولكن اعذرني على التاخير

واطلعت على المشروع والفكرة واعجبوني كثيرا .. ولو تسمح لي ان اجري بعض التغييرات

وسيتم العمل باذن الله تعالى اليوم ولكن بعد ان انتهي من تصفح باقي الموضوعات :)

وثانيا تصديقا على قول الأخ MMA_EG_Cairo ان الـ Indexing هي فعلا لتسريع عملية البحث

حتى في الـ Attributes للملفات والمجلدات .. وهي من اهم مميزات الـ NTFS كـ File System

اي ان الفهرسة حيثما وجدتها فانتظر السرعه .. لدرجة ان هناك مواد دراسية للفهرسة اليدوية :D

اي ليس فقط للكمبيوتر في الملفات و قواعد البيانات .. بل لكل انواع المحفوظات

اي عموما وان اختلفت طريقة الفهرسة :)

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

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

#24

الأخ الحبيب الموضوع مش محتاج مثال عملي ، دة أمر بسيط جداً في الأكسيس إسمة "فهرسة" ، ودة بيأخذ قيمة من 3 قيم كما يلي :

1- لا ( يعني بدون فهرسة ).

2- نعم ( تكرار موافق ) --> يعني موافق علي التكرار زي كدة حقل النوع والراتب وتاريخ الميلاد وخلافة.

3- نعم ( بدون تكرار ) --> يعني مفهرس وغير متكرر زي كدة إسم الموظف وكود الموظف.

أما بقي بخصوص موضوع الحقول المركبة زي إسم الموظف المقسم الي 3 أو 4 حقول فعرضت عليك الطريقة ، ولكن في هذه المرة لن أعرض عليك نفس الفكرة ولكنني سأعرص عليك فكرة أبسط بكثييييييييييييييييييير .

بص يا أخي ، أذهب الي الثلاثة حقول ، وقف عليهم حقل حقل ، وأمنح كل حقل "نعم ( تكرار موافق )" ، أنت بكدة فهرست الأعمدة كما تشاء

روح بقي علي الفيجوال 6.0 وألعب بالبرمجة كما تشاء ، ولو كان الإسم متكرر أرفض العمل ، ولو كان الإسم غير متكرر نفذ العمل ، وإليك مثال علي 3 حقول لجدول الموظف :

1- الحقول المتاحة :

Emp_Fname  String(30)
Emp_Mname String(30)
Emp_Lname String(30)

2- غرض بسيط لجلب قيمة محددة من قاعدة البيانات OneValue :

Public Function GetSqlValue(SQLString As String) As Variant
	On Error Resume Next
	Dim oRs As New ADODB.Recordset
	GetSqlValue = ""
	oRs.CursorLocation = adUseClient
	oRs.Open SQLString, Cn
	If (Err.Number <> 0) Then Exit Function
	If (oRs.RecordCount = 0) Then
		GetSqlValue = ""
	Else
		GetSqlValue = IIf(IsNull(oRs(0)) = True, "", oRs(0))
	End If
End Function

2- إختبار إسم الموظف إن كان متكرر أم لا :

Dim Sql As String

Sql = "Select Count(0) From Emp Where Emp_FName & Emp_Mname & Emp_Lname = '" & Trim(txt1.Text) & Trim(txt2.Text) & Trim(txt3.Text) & "'"

If (Val(GetSqlValue(Sql)) > 0) Then 
	MsgBox "لا يجوز تكرار إسم الموظف",vbOKOnly + vbExclamation + _
					  vbMsgBoxRight + vbMsgBoxRtlReading, "خطأ"
	Exit sub
End If

وطبعاً الكود دة في حالة الإدراج وليس التعديل

طيب تعالي بقي أأكد علي موضوع تاني ونفسي تجاوبني علية

لماذا لم ترغب في تقسيم البيانات أو تقسيم العمل ؟؟؟

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

طيب تعالي نتحدث علي جزئية تانية ، فية بردو أحد الأصدقاء من فترة تقريباً سنة عرض عليا نفس المشكلة وكان الرد علية إستخدام DoEvents كل حوالي 100 سجل ، فعجبتة الفكرة وأستخدمها فلماذا لم تستخدم هذه الفكرة ؟؟؟

الأخ الكريم ، المفروض أنك بتتعامل مع Grad أو ListBox ، المفروض أن فية مشكلتين بيؤدي الي حدوث بطء لعملية عرض السجلات أو ما يحدث تهنيجة لشاشة البرنامج وهي كالتالي :

1- بطء أثناء جلب السجلات ( ودي حلها الـ Index ) مفيش كلام.

2- بطء أثناء عرض السجلات دي علي الجريد.

طيب أحنا حلينا بطء الجلب ، لازم بقي نحل بطء العرض ، فهنحلها إزاي ؟؟؟؟

بص يا أخي أفضل شيء عند أي مستخدم حتي نحت كمبرمجين أن يكون فية أمامنا أي إثارة فعلية أو أي شيء يجعلني صبوراً لإنهاء عملية العرض ، لا وهي شاشة الإنتظار Wiat ، ويا سلام بقي لو كانت شاشة الإنتظار دي عليها Progress Bar تبقي مية مية !!!

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

الحل الوحيد أننا نستخدم التابع DoEvents ، دة بيمنح فرصة لإجراء أوامر أخري أثناء عمل الـ Loop بتاعي ، مثال :

Rs.MoveFirst
For I = 1 To Rs.RecordCount
	Combo1.AddItem Rs!Emp_Name
	Rs.MoveNext
	DoEvents
Next

بس علشان مخدعكش ، لو أنت حبيت مثلاً تعرض 100000 سجل في هذا الكومبو "ولو أنني لم أفضل ذلك" ، إلا أن السرعة ستضاعف أضعاف أضعاف السرعة الحقيقية أثناء عملية الجلب الفوري ، يبقي أحنا حلينا مشكلة قاعدة البيانات ورجعنا لنفس المدة الذمنية ، طيب إية الحل ؟؟؟

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

Dim intStep As Integer
Rs.MoveFirst
For I = 1 To Rs.RecordCount
	Combo1.AddItem Rs!Emp_Name
	intStep = intStep + 1
	If(intStep = 100)Then
	   DoEvents
	   intStep = 0
	End If
	Rs.MoveNext
Next

بحيث أنه يعرض 100 سجل بسرعة وبعدين يقف مرة واحدة بأمر DoEvents ، وطبعا حسب طريقة العرض نفسها ، يعني مثلاً أنا شايف أن الـ Combo مش مستاهلة أن أعمل DoEvents كل 100 سجل ، ممكن أخليهم كل 500 أو 1000 حسب السرعة أللي أنا شايفها قدامي ( المتاح والعملي والمنطقي في نفس الوقت ).

وطبعاً مش دي الفكرة الوحيدة ، أنت عندك أفكار كثيرة جداً جداص جداً زي مثلاً موضوع تقسيم الـ Recordset نفسة الي صفحات Pages

وبكدة تقدر تعمل Filter علي الـ Recordset وعلي كافة السجلات مش علي Pages كما طلبت

بس أكرر فكرة الـ Pages فعلاً ممتازة وشغالة وأعجبت بيها جداً

شكراً

بالتوفيق للجميع

آآآآآة نسيت ، أنا رغاي جداً بطبعي ، فآسف جداً علي الإطالة

شكراً

تم تعديل هذه المشاركة بواسطة MMA_EG_Cairo في 11 أبريل 2009 في 14:21

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

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

أنت وتصرفاتك

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

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

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

My FaceBook

#25
mrx_ta7ady كتب:

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

اولا وصلت الرسالة وسيتم الرد ان شاء الله ولكن اعذرني على التاخير

واطلعت على المشروع والفكرة واعجبوني كثيرا .. ولو تسمح لي ان اجري بعض التغييرات

وسيتم العمل باذن الله تعالى اليوم ولكن بعد ان انتهي من تصفح باقي الموضوعات :)

وثانيا تصديقا على قول الأخ MMA_EG_Cairo ان الـ Indexing هي فعلا لتسريع عملية البحث

حتى في الـ Attributes للملفات والمجلدات .. وهي من اهم مميزات الـ NTFS كـ File System

اي ان الفهرسة حيثما وجدتها فانتظر السرعه .. لدرجة ان هناك مواد دراسية للفهرسة اليدوية :D

اي ليس فقط للكمبيوتر في الملفات و قواعد البيانات .. بل لكل انواع المحفوظات

اي عموما وان اختلفت طريقة الفهرسة :)

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

الأخ mrx_ta7ady من الأعماق أشكر تعاونك

وسرني جداً إعجابك بالمشروع وستشاهد أمور أخرى ستسرك إن شاء الله فأنا أحببت في البداية أن أجمع الأكواد

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

قمت بحيلة من أجل أن أجعل المستخدم عندما يضغط على ListView أن يعطه معلومات عن الآية

ولكن صدمت عند عندما كتبت آية مكررة في القرآن الكريم، مثل: {وَيَقُولُونَ مَتَى هَذَا الْوَعْدُ إِنْ كُنْتُمْ صَادِقِينَ}[يونس : 48]

وهذه مكررة في 6 مواضع في القرآن وهنا فشلت حيلتي ومن خلال المشروع ستعرف السبب

أضف أن البحث بطيء كونه يبحث ويتجاهل التشكيل

إذا تجاوزنا هذه العقبات يكون أو مشروع يطرح بالفيجوال بيسك وقد انتهت فيه هذه المشكلات وانتهى احتكارها من قبل الشركات البرمجية

وقد كان ساعدني الأخ العزيز MMA_EG_Cairo سابقاً في مسألة التشكيل والآن نريد حسم القضية

كل شيء أمامك أنتظر لمساتك لأني وقفت عاجزاً

MMA_EG_Cairo كتب:
الأخ الحبيب الموضوع مش محتاج مثال عملي ، دة أمر بسيط جداً في الأكسيس إسمة "فهرسة" ، ودة بيأخذ قيمة من 3 قيم كما يلي :

1- لا ( يعني بدون فهرسة ).

2- نعم ( تكرار موافق ) --> يعني موافق علي التكرار زي كدة حقل النوع والراتب وتاريخ الميلاد وخلافة.

3- نعم ( بدون تكرار ) --> يعني مفهرس وغير متكرر زي كدة إسم الموظف وكود الموظف.

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

الأخ MMA_EG_Cairo دوماً تثري الموضوع وتغنيه

يبدو أنني أخذت الكثير من وقتك فجزاك الله خيراً

هنالك نقطة يجب أن أوضحها لك:

لنخرج قليلاً عن برامج الموظفين والشركات وماشابه

دعنا ندخل في البحث العلمي والمكتبي

لدي قاعدة اسمها Derv فيها مليون و300 ألف كلمة ومقسمة لخانتين:

خانة الجذر root وخانة الكلمة word

أريد أن أجهز بحثاً عن "العقل" مثلاً

أكتب في هذه القاعدة عقل فسيعطيني كل الكلمات المتعلقة بهذا المصطلح، مثل: تعقلون ، يعقلون، عقلاء، عاقل، عقول إلخ..

والعكس صحيح إذا كتبت الكلمة فسيعطيك جذرها (مثلاً: "مرجعيات" سيعيطك "رجع")

(وهنا ألفت نظرك لأمر هام أن هذه القاعدة مجهزة من هيئة بحث علمية كبيرة فليس الأمر عبثاً أو افتراضات وحجمها حوالي 50 ميغا)

عند البحث أنا لا أريد أن أنتظر إلى أن يبجث في المليون سجل، لا فقد تخرج أول نتيجة وقد تكون هي التي أريد فعندها أوقف البحث لاختارها

هنا وقعت الإشكالية:

1- البحث بطيء كون القاعدة كبيرة جداً.

2- يجب عليك أن تنتظر إلى أن تخرج كل النتائج، وهذه مشكلة.

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

ولم أضع قاعد البيانات فهي في المشاركة الأولى (في الشماركة الأولى جزء يسير منها)

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

هل لديك تعليق ؟

____________________.rar

تم تعديل هذه المشاركة بواسطة السندبااد في 11 أبريل 2009 في 15:27

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

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

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

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

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

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