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

سؤال عن DBGrid

بدأه abedallah في 5 فبراير 2013 · 7 رد · 1,338 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
السلام عليكم ورحمة الله 

الأخوة الأفاضل 

لدي سؤالين نأمل منكم الإجابة 

السؤال الأول : لدي حقل الجنسية والجنس والديانه أقوم يتخزين أرقام بدلا من نصوص داخل الجداول   مثلا ذكر = يتم تخزين 0  أنثي=1

سؤالي كيف يمكنني عرض هذه الحقول داخل DBGrid كنص في حالة القيمة المخزنة 0 عرض في DBGrid ذكر ،  الجنسية 1 يعرض الجنسية كنص مقابلها وهكذا.

 

السؤال الثاني :

الـ DBGrid بها ثلاث حقول 

رقم الصنف       اسم الصنف     الكمية المطلوبة        الكمية الموجودة

   1                        ج                     10                            15

   2                         د                    11                            10         

السؤال كيف يمكنني اختبار بعد ادخال الكمية المطلوبة انها اكبر من الكمية الموجودة داخل DBGrid أي اختبار الحقل الثالث اكبر من الحقل الرابع وذلك لكل صنف ( صفوف

)

نأمل منكم الإفادة  ، وجزاكم الله عنا خير الجزاء وبارك فيكم 
#2

سلام عليك

يتوجب عليك أولا أن تنشئ جدولين الأول للجنس فيه حقلان الأول رقم الجنس والثاني لبيان نوع الجنس هل هو ذكر أو أنثى على هذه الطريقة

CREATE TABLE sex( id smallint primary key, sex varchar(20));

ثم تنشئ جدولا آخر  هو الجدول الذي ذكرته (الرقم والجنس والجنسية...) وقبل أن تغلق القوس وتضغط على زر تنفيذ الكود أضف

CONSTRAINT constraint_name
FOREIGN KEY (id_sex) REFERENCES sex (id),

الآن عند الاستعلام قم بالربط بين هذا الجدول والجدول الأول (الجنس)

 

مثال (نفرض أن الجدول الثاني يسمى info)

select  info.id,sex.sex where info.sex=sex.id from info,sex

أرجو أن تكون الفكرة وضحت

 

(الباحثون عن المواقع الإباحية سيصابون بخيبة أمل عندما يقودهم محرك البحث إلى هذا الموضوع :D )

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 5 فبراير 2013 في 19:06

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#3

أخي الفاضل احمد بارك الله فيك على الرد 

كنت اضيف في الحقل قيمة  ItemIndex للــ ComboBox ولم أقم بعمل جدول لأني لا استخدمها إلا للجنس والجنسية فإذا كان لا يوجد طريقة الا بعمل جدول يقرأ منه فأأمل من سيادتك إفادتي علماً بأن قاعدة البيانات اكسس ، بدلفي 7 .. 

وبارك الله فيك ،،

كما أأمل الإجابة عن السؤال الثاني إن أمكن 

#4

سلام عليك

لا يمكن عمل ذلك إلا بالطريقة التي ذكرت لك وهذا غاية علمي وإليه أنتهي فإن رأى أحد الإخوة غير ذلك فهو علم واسع لا ساحل له

أنا لا أتعامل مع الدالفي ولا مع الأكسس ، فكما ترى عن اليمين انا لينكساوي وإنما اقيس الأمور ببعضها وأعطيك الفكرة حتى تكمل الطريق

 

نصيحة : كنت يوما أحب أن أتعامل مع قواعد البيانات من خلال أسئلة أطرحها في المنتديات أو تتبع دروس هنا وهناك ، ثم تبين لي أني أعبث ، فتوقفت عن دراسة اللغة O-pascal واتجهت إلى دراسة SQL حتى ظننت أني قد وفيت بأغلبها ، فعليك أنت أن تسلك هذا الطريق وإلا بقيت في الغارقات غرقا

 

الجواب الذي كتبته لك سابقا هو مجردد اساسيات في sql فلو كنت على علم بها فهمت مقصودي بسرعة

 

ملخص الجواب أنه يتم الربط بين جدولين عن طريق حقلين،  في كل جدول حقل ، الحقل الأول أساسي في جدول sex والحقل الثاني غريب  foreign key في جدول info  بالطريقة التي ذكرت لك ، ويحدث الربط بين الجدولين عند طلب الاستعلام بالأمر select كما بينت لك

 

بالنسبة للسؤال الثاني فهو سهل بسيط ، يتم التحقق عند إدخال قيمة الطلب ومقارنتها بالحقل الرابع

يتم استجلاب قيمة الحقل الرابع بالطريقة التالية

var x:integer;
....
x:=DBGrid1.Datasource.DataSet.FieldByName('id').AsString;

حيث id هو الحقل الرابع

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 6 فبراير 2013 في 11:25

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#5
كحل اخر بدون اجراء اي تعديل في قاعدة البيانات

في الحدث onDrawColumnCell  للDBGrid

اكتب هذا الكود 

 

 

     TTimeField(travel.FieldByName('time')).Displayformat:='hh:mm AM/PM';
#6

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

 

في حالة حقل الجنس فإن الأمر بسيط لأن عدد القيم محدود (فقط ذكر أو أنثى)، و بالتالي يمكن استعمال الحدث OnGetText للحقل (في المكون TADOQuery أو TADOTable).

نفرض أن المكون هو ADOQuery1 و أن اسم الحقل هو Gender. بعد إضافة كل الحقول إلى ADOQuery1 (بالنقر المزدوج عليه) نحدد الحقل Gender ثم نختار الحدث OnGetText و نكتب الكود التالي:

 

procedure TForm1.ADOQuery1GenderGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
    if Sender.IsNull then
        Text := ''
    else if Sender.AsInteger = 1 then
        Text := 'أنثى'
    else
        Text := 'ذكر';
end;

 

أما بالنسبة إلى الجنسيات فإنها - حسب ما أعتقد - ستكون كثيرة و غير محصورة و بالتالي فمن الأفضل إنشاء جدول للجنسيات و ربطه مع جدولك عن طرق استعلام (Query). مثلاً جدول الجنسيات اسمه Nats و به الحقلان NatID (رقم الجنسية) و NatName (اسم الجنسية):

 

SELECT Info.*, Nats.NatName FROM info INNER JOIN Nats ON Info.NatID = Nats.NatID

 

حيث Info اسم الجدول لديك، و Nats.NatID يشير إلى حقل رقم الجنسية في جدول الجنسيات و Info.NatID يشير إلى حقل رقم الجنسية في جدولك. لا يشترط في الحقلين الخاصين برقم الجنسية أن يكون اسماهما متطابقين في الجدولين، و لكن يجب أن يكونا من نفس النوع.

 

( الأخ أحمد أبو عبد البر: يمكنك استعمال Gender بدل ceks :D )

 

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

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

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

#7
اقتباس

( الأخ أحمد أبو عبد البر: يمكنك استعمال Gender بدل ceks :D )

عليك السلام ناجي

لم أفهم أقصدك

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#8

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

بارك الله فيكم ونفع الله بكم وجزاكم خيراً على ردودكم وتوضيحاتكم .

سؤال للأخوة 

هل يمكنني أن أقوم بإدراج داخل الـ Dbgrid  حقول من اكثر من جدول أي لدي جدولين أريد أضافة الحقل الأول من جدول1 والحقل الثاني من الجدول 2 والجدولين علاقة واحد لواحد ، فإذا لا يمكن أأمل من اخواني أن يدلوني على أداة أخرى تؤدي الغرض 

وبارك الله فيكم 

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