البحث في قاعده البيانات بواسطه listbox
#1
بسم الله الرحمن الرحيم

وعيدكم مبارك ان شاء الله

توضيح مشكلتي

اعمل على برنامج دليل هاتف فيه العديد من الاسماء وقمت بعمل زر بحث عن اسم معين ويتم عرض هذه الاسماء في listbox

اردت ان اربط ال listbox بقاعده البيانات عبر منهج locate

تم الربط واشتغل البرنامج تمام

المشكله

عند تشابه اسمين اوا كثر يقوم listbox بالارتباط باسم واحد فقط حتى وان كانت مختلفه

وهذه الصور للتوضيح






[صورة: 11890278.png]






[صورة: 61856267.png]


المشكله الثانيه

عدد السجلات في هذا البرنامج 600000 سجل
عند الربط بـ listbox

يتاخر البرنامج وقتاً من الزمن حتى يتم الربط واظهار البيانات

هل هناك طريقه افضل


السورس في المرفقات

ولكم جزيل الشكر


الملفات المرفقة
.rar   Project1.rar (الحجم : 290.43 ك ب / التحميلات : 222)
الرد
#2

السلام عليكم ورحمة الله
ان كنت تتوقع اكثر من سجل استخدم طريقة بحث اخرى غير locate
الرد
#3
السلام عليكم

بما ان adoquery1 يبقى مفتوح بعد عمليت الفلترة ونقل البينات منه الى listbox1
لا داعى لعملية البحث فى adoquery1 المفلتر . ... يكفى تغير مؤشره فقط .
مثلا فى حدث الضغط على listbox1
PHP كود :
adoquery1.RecNo := listbox1.ItemIndex 1
الرد
#4
مشكورين على مروركملكن كل الحلول لم تنفع ساوضح مشكلتي

نفرض اني اعرض جميع الاسماء في listbox
وقد يتشابه اسمين ويظهران في listbox
كيف عندما اعمل ربط بين listbox وقاعده البيانات يستطيع التمييز بين الاسم الاول والثاني
مثلا محمد محمد
الاسم الثاني محمد محمد
كيف يستطيع التفريق بين الاول والثاني
من خلال بحثي سمعت ان مكون dblookuplistbox
يقوم باظهار نتائج معينه ويقوم بتخزين قين اخرى لكني لم استطع اظهار اي شي فيه مع اني بحثت في هذا المنتدى ووجدت الكود الا انه لم ينفع معي
ولكم جزيل الشكر
الرد
#5
السلام عليكم ورحمة الله
لم أتمكن من مراجعة المرفق لعدم ظهور حروف اللغة العربية!
استبدل السطر:
كود :
listbox1.Items.Add(adoquery1.Fields[3].asstring);
بـ:
كود :
listbox1.Items.AddObject(adoquery1.Fields[3].asstring, TObject(ADOQuery1.FieldByName('r').AsInteger));

و السطر:
كود :
if adoquery1.Locate('name',listbox1.Items[listbox1.ItemIndex],[]) then
بـ:
كود :
if adoquery1.Locate('r',Integer(listbox1.Items.Objects[listbox1.ItemIndex]),[]) then
لا أنصحك بهذه الطريقة.
استخدم المكونات الافتراضية (TDBGrid, TDBListBox...)
ملاحظات أخرى:
- البحث يتم مرتين مما يثقل العملية، ومع عدد كبير من السجلات تزيد المشكلة...
- استخدم TRadioGroup عوض مجموعة من الـ TRadioButton
- يبنبغي أن يكون للجدول مفتاح على الأقل
...
بالتوفيق.
الرد
#6
السلام عليكم

اشكركم جميعاً

تم حل مشكلتي

الاخ kachwahed

حلت كان الافضل لك جزيل الشكر

عندي استفسار بسيط

لو كانت البيانات تظهر في treeview ومثلاً النتائج تظهر في الفروع كبف اقوم بنفس الامر

للتوضيح اكثر


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

هذه صورته


[صورة: 34715543.jpg]

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

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


علماً بان الارتباط يتم في الفروع

فكيف اقوم بعمل الفكره السابقه في treeview

لانه عند اضافه فروع في treeview نقوم بكتابه الامر
PHP كود :
treeview.items.addchiled() 


فكيف اقوم بنفس الامر بواسطه object
,ولكم جزيل الشكر
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم