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

ربط قاعده البيانات بواسطه listbox

بدأه محمد الدرة في 18 نوفمبر 2010 · 6 رد · 2,420 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

توضيح مشكلتي

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

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

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

المشكله

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

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

11890278.png

61856267.png

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

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

عند الربط بـ listbox

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

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

السورس

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

#2

وانت بالف خير

ربنا بحقق اماني الجميع

بمكنك استخدام DBGrid بدلا من استخدام listbox

#3

لا لا

لايصلح باستخدامه بل يجب ان يكون listbox

لانه لايقوم بعرض نتائج البحث

ومشكور على الرد

#4

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

مساكم الله بالخير

اخي محمد البحث يجب أن يكون بـ LIKE وهذا مثال ولكن بطريقة الـ DBgrid و fastreport .

ولكن عليك انت ان تُنشأه بطريقة الـ Listbox وتخبرنا بالنتيجة.

انظر المرفقات

:) :) :)

تشابه الاسماء.zip

#5
محمد الدرة كتب:

لا لا

لايصلح باستخدامه بل يجب ان يكون listbox

لانه لايقوم بعرض نتائج البحث

ومشكور على الرد

كيف لا يصلح كل ما عليك فعله وضع DBgrid و DataSource وتقوم بربطها مع ADOQuery

#6

السلام عليكم

توضيح للاخ format82

بالنسبه للـ dbgrid ينفع اذا كان في فلتره لانه سيرتبط برقم السجل

اما لو حاولت البحث بواسطه الداله pos

فانها لن تنفع

وقد وجدت الحل من احد الاخوه

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

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

استبدل السطر:

كود:

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

- يبنبغي أن يكون للجدول مفتاح على الأقل

...

بالتوفيق.

رد مع اقتباس

لكن تبقى مشكله كيف اقوم بنفس العمل :

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

للتوضيح اكثر

عندي برنامج اسمه دليل الاكواد

هذه صورته

34715543.jpg

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

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

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

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

لانه عند اضافه فروع في treeview نقوم بكتابه الامر

كود PHP:

treeview.items.addchiled()

فكيف اقوم بنفس الامر بواسطه object

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

تم تعديل هذه المشاركة بواسطة محمد الدرة في 23 نوفمبر 2010 في 11:21

#7

شكراً على البرنامج

¤©§¤°^°¤§©HEMA©§¤°^°¤§©¤

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