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

سؤال ع dbgrid

بدأه nohaa في 4 مارس 2012 · 4 رد · 746 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

اي عندي بيانات جدول الزبون(رقم الزبون , اسم الزبون, رقم المهنة" وهو مفتاح اجنبي اريده ان يظهر باسم المهنة الموجود في دليل المهن’ رقم المصرف "وهو مفتاح اجنبي اريده ان يظهر باسم المصرف الموجود في دليل المصارف"

انا استخدمت حقل LookupField اي قمت بانشاء حقل من نوع LookupField يظهر لي اسم المهنة وقمت بانشاء حقل اخر LookupField يعرض لي اسم المصارف ولكن

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

هل في حل لهده لمشكلة؟ اي اضهار بيانات حقول جدول المهن وجدول المصرف المرتبطة بجدول الزبون في نجدول الزبون كاسماء وليس كمفاتيح اجنبيه ارقام

تم تعديل هذه المشاركة بواسطة nohaa في 4 مارس 2012 في 13:46

#2

السلام عليكم...

استخدمي جملة SELECT كالتالي، إذا افترضنا أن:

اسم جدول الزبائن هو Customers

اسم جدول المهن هو Jobs

اسم جدول المصارف هو Banks

اسم حقل رقم المهنة هو JobID (في جدولي الزبائن و المهن)، و اسم حقل اسم المهنة هو JobName.

اسم حقل رقم المصرف هو BankID (في جدولي الزبائن و المصارف)، و اسم حقل اسم المصرف هو BankName.

SQL := 'SELECT Customers.*, Jobs.JobName, Banks.BankName FROM Customers INNER JOIN Jobs ON Customers.JobID = Jobs.JobID INNER JOIN Banks ON Customers.BankID = Banks.BankID';

* غالباً ستستعملين هنا المكون TQuery أو TADOQuery، مثلاً (يعد الكود السابق):

ADOQuery1.Close;
ADOQuery1.SQL.Text := SQL;
ADOQuery1.Open;

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3
najy_zl كتب:

السلام عليكم...

استخدمي جملة SELECT كالتالي، إذا افترضنا أن:

اسم جدول الزبائن هو Customers

اسم جدول المهن هو Jobs

اسم جدول المصارف هو Banks

اسم حقل رقم المهنة هو JobID (في جدولي الزبائن و المهن)، و اسم حقل اسم المهنة هو JobName.

اسم حقل رقم المصرف هو BankID (في جدولي الزبائن و المصارف)، و اسم حقل اسم المصرف هو BankName.

SQL := 'SELECT Customers.*, Jobs.JobName, Banks.BankName FROM Customers INNER JOIN Jobs ON Customers.JobID = Jobs.JobID INNER JOIN Banks ON Customers.BankID = Banks.BankID';

* غالباً ستستعملين هنا المكون TQuery أو TADOQuery، مثلاً (يعد الكود السابق):

بادن الله حنجربها 
ADOQuery1.Close;
ADOQuery1.SQL.Text := SQL;
ADOQuery1.Open;

نرجو الاستفادة و السلام.

#4

قمت بعمل view في سيكول 2005 وربطها ب ADOQuery ووضعت استعلام كالتالي في هده الكويري

select * from View1

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

#5

السلام عليكم...

تحتاجين إلى تحديث البيانات في الـ ADOQuery باستخدام الوظيفة Refresh أو الوظيفة Requery، و لكن بالتجربة لا تنجح الوظيفتان دائماً في تحديث البيانات. أنا شخصياً أغلق الـ Query (مثلاً بعبارة ADOQuery1.Close) ثم أعيد فتحه (مثلاً ADOQuery1.Open).

إذا كنت أقوم بعملية تعديل للبيانات فغالباً ما أقوم بالاحتفاظ بموقع السجل الحالي قبل إغلاق الـ Query ثم أعيد وضع المؤشر عند ذلك السجل بعد إعادة فتح الـ Query.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

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