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

ربط جدولين عن طريق dbcombobox

مغلق
بدأه c_vita في 9 أبريل 2006 · 9 رد · 2,020 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

شباب دخت يا شباب فى حل هالمعضلة بالنسبة لى ساعدونى

لدىجدولين ومثال عليهما جدول الموظفين وجدول ابناء الموظفين فى مؤسسة ما اى عن طريق رقم الموظف فى جدول الموظفين استطيع ان اتعرف على ابناءه هذا للتوضيح

اما المشكلة ان لدى dblookupcombobox متصل بحقل الاسم فى جدول الموظفين و

dbcombobox متصل بجدول ابناء الاموظفين, عند اختيار احد العناصر/الموظفين فى dblookupcombobox اريد ان اظهر اسماء الابناء للموظف فى dbcombobox حاولت كثيرا واجريت عدة تعديلات وهذا اخر ماتوصلت اليه

procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);
var k,g:integer;
begin
DBComboBox1.Clear;
with DataModule2 do
begin
c_type.Locate('class_type',DBLookupComboBox2.Text,[]);
k:=c_typeclass_no.Value;

g:=1;
repeat
begin
if c_nameclass_no.Value=k then
begin
DBComboBox1.AddItem(c_nameclass_name.Value,c_name);
Edit4.Text:=IntToStr(k);
end;
c_name.Next;
 g:=g+1;
end;  until g>=10;
end;
end;

يعمل هذا الكود لكن لا يعطى الناتج المطلوب 100% ارجو المساعدة :wacko:

#2

قم بربط الجدولين Master->Details بعدها عندما تقف على السجل الاب سوف يتفلتر الجدول الذي يحتوي على الابناء ليعرض لك الابناء فقط

قم باستخدام 2 DBLookUpComboBox الاول لعرض الاباء و الثاني لعرض الابناء

حيث هناك خمس خصائص ممكن ان تساعدك

DataSource

DataField

Listsource

ListField

KeyField

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

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#3

بارك الله فيك

#4

نسيت :wacko: ولكن لدى بعض التساؤلات

اولا بعد الربط عن طريق master>details لم نعد نحتاج للحلقة , هل عندما اريد ان ابحث عن قيمة ما فى الجدول باستخدم ال table.next يكون الشرط مثلا هكذا

for c:=1 to table.recordcount-1

ام هناك شرط اخر لنهاية الحلقات فى مثل هذه الحالات B)

هل يوجد فى خصائص ال DBgrid ما يجعلها تعرض الحقول من الاعلى الى الاسفل بدل من يسار يمين ويمين يسار

اخيرا وليس اخرا كيف يمكن ان امنع المستخدم من اغلاق الفورم عن طريق X وانما عن طريق Button و form.close

ارجو ان لا اكون قد اكثرت الاسئلة

#5

:( :( :(

#6
اقتباس
اولا بعد الربط عن طريق master>details لم نعد نحتاج للحلقة , هل عندما اريد ان ابحث عن قيمة ما فى الجدول باستخدم ال table.next

السؤال غير مفهوم و لكن سوف اوضح لك بعض المفاهيم

اولا بالنسبة للتعامل مع الجدوال استخدام Eof للدلالة على انّ الجدول قد انتهى كأن تقول

While not table1.eof do
begin
table1.next;
end;

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

على كلا

للبحث في جدول ما عن قيمة ما في حقل معين استخدم التابع Locate

table1.Locate(ID,21,[])

اقتباس
هل يوجد فى خصائص ال DBgrid ما يجعلها تعرض الحقول من الاعلى الى الاسفل بدل من يسار يمين ويمين يسار

لم افهم ابدا ما هو المقصود من سؤالك الرجاء الايضاح

اقتباس
كيف يمكن ان امنع المستخدم من اغلاق الفورم عن طريق X وانما عن طريق Button و form.close

استخدام الحدث FormCloseQuery للفورم نفسها و الذي يشتعل عند اغلاق الفورم سواء من زر الاغلاق X او عند استدعاء التابع Close

حيث يحتوي هذا الحدث على بارميتر اسمه canclose

اذا اسندت له القيمة True فسوف تنغلق الفورم و اذا اسندت له false فلن تنغلق الفورم و الشيئ الجميل فعلا انّ الفورم لن تنغلق حتى و

لو ضغط المستخدم على زر alt + F4 لأنه الغينا تفعيل زر X

اما بالنسبة الى ما تريد قم بتعريف متحول عام و ليكن مثلا AllowClose من نمط بوليان Boolean اسند له عند انشاء الفورم القيمة false ثم عند الضغط على زر Button الاغلاق اسند له القيمة True و قم باغلاق الفورم باستخدام التابع Close

ثم في الحدث FormCloseQuery اسند قيمة المتحول AllowClose الى البارميتر CanClose لتحصل على ما تريد.

انظر هذا الكود

var
  Form1: TForm1;
  AllowClose:boolean;

implementation

{$R *.dfm}

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= AllowClose;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AllowClose:= false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  AllowClose:= true;
  close;
end;

تم تعديل هذه المشاركة بواسطة waeldalol في 15 أبريل 2006 في 20:12

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#7
السؤال غير مفهوم و لكن سوف اوضح لك بعض المفاهيم
اولا بالنسبة للتعامل مع الجدوال استخدام Eof للدلالة على انّ الجدول قد انتهى كأن تقول
CODE
While not table1.eof do
begin
table1.next;
end;

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

يبدو انك فهمتنى , هذا بالضبط ما كنت ابحث عنه اذ انى كنت استخدم while not eof do :(

ولم اكن اعنى التابع locate

وبالنسبة لل dbgrid انها تعرض الحقول بشكل افقى والسجلات بشكل عمودى ما قصدته هو هل يمكن عمل العكس عن طريق احدى الخصائص؟؟

اما موضوع اغلاق الفورم فقد افحمتنى والله (h) بعض الاحيان تريد ان تعرف معلومة ما وتجدها ولكن الان هى وكل اهلها يعنى زى ما تقول (جبت من الاخر) ;)

#8
اقتباس
وبالنسبة لل dbgrid انها تعرض الحقول بشكل افقى والسجلات بشكل عمودى ما قصدته هو هل يمكن عمل العكس عن طريق احدى الخصائص؟؟

لا يوجد هكذا ميزة نهائيا في dbgraid

و لكن ماذا تريد بالضبط ان تعمل اذا ممكن تضع صورة تدل على ما تريد اعملها في Excel

لانني الى الان لم اتخيل ما تريد

كيف سوف تعرض الحقل بشكل افقي و السجلات بشكل عامودي :wacko: :wacko:

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#9
اقتباس
وبالنسبة لل dbgrid انها تعرض الحقول بشكل افقى والسجلات بشكل عمودى ما قصدته هو هل يمكن عمل العكس عن طريق احدى الخصائص؟؟

لا يوجد هكذا ميزة نهائيا في dbgraid

و لكن ماذا تريد بالضبط ان تعمل اذا ممكن تضع صورة تدل على ما تريد اعملها في Excel

لانني الى الان لم اتخيل ما تريد

كيف سوف تعرض الحقل بشكل افقي و السجلات بشكل عامودي :wacko: :wacko:

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#10

اخى وليد ما قصدته كما فى الصورة الا اننى علمت انه لايوجد خاصية لذالك ولكن يمكن ذالك عن طريق التلاعب بال stringgrid سوف احاول ذلك واضعه هنا للفائدة :)

17_04_06_01_08_47_11453045271_.gif

تم تعديل هذه المشاركة بواسطة c_vita في 17 أبريل 2006 في 23:12

هذا الموضوع مغلق.

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