delphi4arab منتديات دلفي للعرب

نسخة كاملة : البحث في قاعده البيانات بواسطه listbox
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم

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

توضيح مشكلتي

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

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

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

المشكله

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

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






[صورة: 11890278.png]






[صورة: 61856267.png]


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

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

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

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


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

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

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

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

نفرض اني اعرض جميع الاسماء في listbox
وقد يتشابه اسمين ويظهران في listbox
كيف عندما اعمل ربط بين listbox وقاعده البيانات يستطيع التمييز بين الاسم الاول والثاني
مثلا محمد محمد
الاسم الثاني محمد محمد
كيف يستطيع التفريق بين الاول والثاني
من خلال بحثي سمعت ان مكون dblookuplistbox
يقوم باظهار نتائج معينه ويقوم بتخزين قين اخرى لكني لم استطع اظهار اي شي فيه مع اني بحثت في هذا المنتدى ووجدت الكود الا انه لم ينفع معي
ولكم جزيل الشكر
السلام عليكم ورحمة الله
لم أتمكن من مراجعة المرفق لعدم ظهور حروف اللغة العربية!
استبدل السطر:
كود :
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
- يبنبغي أن يكون للجدول مفتاح على الأقل
...
بالتوفيق.
السلام عليكم

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

تم حل مشكلتي

الاخ kachwahed

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

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

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

للتوضيح اكثر


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

هذه صورته


[صورة: 34715543.jpg]

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

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


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

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

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


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