كيف يتم احصاء عدد الذكور فى dbgrid
#1
Sad 
السلام عليكم
اخوانى احتاج مساعدتكم فى dbgrid
انا عندى قاعدة بيانات فيها جدول خاص بمعلومات الشخص من اسم و لقب الى........ الجنس ( ذكر , انثى )
المطلوب كيف يتم احصاء عدد الذكور و يظهر العدد فى    edit1.text
بحيث عند التغيير واضافة ذكر اخر يتغير ايضا فى  edit1.text
http://store1.up-00.com/2015-12/1450117685281.png
و الله يبارك فيكم
الرد
#2
وعليكم السلام ورحمة الله وبركاته ،
يمكنك فعل ذلك باستخدام ال Sql
مثال ذلك :
كود :
select Distinct Sex , Count(Sex) as Tot From MyTable Group By Sex
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#3
(14-12-2015, 08:57 PM)Unprogramme كتب : وعليكم السلام ورحمة الله وبركاته ،
يمكنك فعل ذلك باستخدام ال Sql
مثال ذلك :
كود :
select Distinct Sex , Count(Sex) as Tot From MyTable Group By Sex
الله يبارك فيك لقد حاولت ب adoquery من قبل و استطعت حساب عدد الذكور

 العدد يظهر عند بداية البرنامج لكن عند اضافة ذكر جديد العدد لا يتغير فى edit  الا عند اعادة تشغيل البرنامج
الرد
#4
(14-12-2015, 09:32 PM)eriktuz كتب :
(14-12-2015, 08:57 PM)Unprogramme كتب : وعليكم السلام ورحمة الله وبركاته ،
يمكنك فعل ذلك باستخدام ال Sql
مثال ذلك :
كود :
select Distinct Sex , Count(Sex) as Tot From MyTable Group By Sex
الله يبارك فيك لقد حاولت ب adoquery من قبل و استطعت حساب عدد الذكور

 العدد يظهر عند بداية البرنامج لكن عند اضافة ذكر جديد العدد لا يتغير فى edit  الا عند اعادة تشغيل البرنامج
السلام عليكم
اغلق واعد فتح adoquery بعد الاضافة او اي تعديل هكدا
adoquery.close;
adoquery.open;
بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#5
السلام عليكم ،
كما قال الأخ الفاضل bassem_43  بعد الحدث AfterPost للADOTable  إغلق و افتح ال ADOQuery.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#6
شكرا جزيلا

الان adoquery تقوم بعمل حساب عدد الذكور و كل شىء تمام بقى المشكل فى كيفية اضهار العدد فى edit.text

استعملت datasource و dbgrid واستعملت الكود EDIT1.TEXT:=IntToStr(DBGrid3.DataSource.DataSet.RecordCount);

و كل شىء تمام

لكن اطلت الطريق بهذه الطريقة و عندما اجعل dbgrid3 مخفية فان الناتج يصبح لا يظهر فى edit و انا لا احتاج ظهور ال dbgrid فى البرنامج

يعنى هل يمكن اظهار نتائج query مباشرة فى ال edit
الرد
#7
السلام عليكم ،
هناك حلين و لك الاختيار ،
1- إذا أردت استعمال Edit  ، فالحل أن تقوم بإرفاق القيمة برمجيا ، بمعنى ، في الحدث OnADOQueryOpen  ، تكتب ما يلي :

كود :
Edit1.Text :=  ADOQuery.FieldByName('...').asString ;

2- الحل الثاني و هو ببساطة أن تستعمل  DBEdit  عوضا عن Edit  ، طبعا إذا  تحققت أن ال ADOQuery  لا ترجع إلا قيمة واحدة.
و الباقي عليك.
وفقك الله لكل خير.

فكرة ،
لماذ لا تستعمل DbGrid  آخر مربوط بال ADOQuery ؟
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#8
الله يبارك فيكم اخوانى على المساعدة
ساوضح اكثر انا استهمل ال adotable مع dbgrid ثم اضفت adoquery لتحسب لى عدد الذكور فقط الموجودين فى عمود الجنس الموجود فى adotable ثم يظهر الناتج كعدد فى edit او dbedit

الصورة : http://store1.up-00.com/2015-12/1450117685281.png

اظن انني اخطات فى استعمال adoquery للاستعلام لانها تلعب دور adotable قهى تحتاج الى dbgrid

هل استطيع حساب عدد الذكور الموجودين فى الجدول adotable و اظهارهم فى edit باى طريقة من غير ado query لانى اظن اننى اخطات فى استعمال adoquery فهى تلعب نفس دور adotable فهما يحتاجان الى dbgrid لاظهار النتائج

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

هذه صورة توضيحية http://store1.up-00.com/2015-12/1450282200511.png
الرد
#9
السلام عليكم ورحمة  الله وبركاته ،
نعم يمكنك ذلك  عن طريق البرمجة ،
مجرد فكرة للتطوير :

كود :
var nb : Integer  nb := 0 ; ADOTable.First ; while Not ADOTable.EOF do Begin     if ADOTable.FieldByName('Sex').asString =  'ذكر'  then       nb := nb + 1 ; end ;
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#10
(16-12-2015, 07:57 PM)Unprogramme كتب : السلام عليكم ورحمة  الله وبركاته ،
نعم يمكنك ذلك  عن طريق البرمجة ،
مجرد فكرة للتطوير :

كود :
var nb : Integer  nb := 0 ; ADOTable.First ; while Not ADOTable.EOF do Begin     if ADOTable.FieldByName('Sex').asString =  'ذكر'  then       nb := nb + 1 ; end ;
الله يبارك فيك الله يحفظك و لكل من ساعدنى

الفكرة رائعة و هذا ما كنت ابحث عنه من دون استعمال ال adoquery

فقط تصحيح للكود يجب اضافة begin و end اخرى ليعمل الكود

كود :
var nb : Integer; begin   nb := 0;  ADOTable1.First;  while not ADOTable1.Eof do  begin    if  ADOTable1.FieldByName('الجنس').asString =  'ذكر'  then    nb := nb + 1;    ADOTable1.Next;   end;   eDIT1.TEXT:= IntToStr(nb); end;
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم