السلام عليكم
اخوانى احتاج مساعدتكم فى dbgrid
انا عندى قاعدة بيانات فيها جدول خاص بمعلومات الشخص من اسم و لقب الى........ الجنس ( ذكر , انثى )
المطلوب كيف يتم احصاء عدد الذكور و يظهر العدد فى edit1.text
بحيث عند التغيير واضافة ذكر اخر يتغير ايضا فى edit1.text
http://store1.up-00.com/2015-12/1450117685281.png
و الله يبارك فيكم
وعليكم السلام ورحمة الله وبركاته ،
يمكنك فعل ذلك باستخدام ال Sql
مثال ذلك :
كود :
select Distinct Sex , Count(Sex) as Tot
From MyTable
Group By Sex
(14-12-2015, 08:57 PM)Unprogramme كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته ،
يمكنك فعل ذلك باستخدام ال Sql
مثال ذلك :
كود :
select Distinct Sex , Count(Sex) as Tot
From MyTable
Group By Sex
الله يبارك فيك لقد حاولت ب adoquery من قبل و استطعت حساب عدد الذكور
العدد يظهر عند بداية البرنامج لكن عند اضافة ذكر جديد العدد لا يتغير فى edit الا عند اعادة تشغيل البرنامج
(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;
بالتوفيق
السلام عليكم ،
كما قال الأخ الفاضل bassem_43 بعد الحدث AfterPost للADOTable إغلق و افتح ال ADOQuery.
شكرا جزيلا
الان adoquery تقوم بعمل حساب عدد الذكور و كل شىء تمام بقى المشكل فى كيفية اضهار العدد فى edit.text
استعملت datasource و dbgrid واستعملت الكود EDIT1.TEXT:=IntToStr(DBGrid3.DataSource.DataSet.RecordCount);
و كل شىء تمام
لكن اطلت الطريق بهذه الطريقة و عندما اجعل dbgrid3 مخفية فان الناتج يصبح لا يظهر فى edit و انا لا احتاج ظهور ال dbgrid فى البرنامج
يعنى هل يمكن اظهار نتائج query مباشرة فى ال edit
السلام عليكم ،
هناك حلين و لك الاختيار ،
1- إذا أردت استعمال Edit ، فالحل أن تقوم بإرفاق القيمة برمجيا ، بمعنى ، في الحدث OnADOQueryOpen ، تكتب ما يلي :
كود :
Edit1.Text := ADOQuery.FieldByName('...').asString ;
2- الحل الثاني و هو ببساطة أن تستعمل DBEdit عوضا عن Edit ، طبعا إذا تحققت أن ال ADOQuery لا ترجع إلا قيمة واحدة.
و الباقي عليك.
وفقك الله لكل خير.
فكرة ،
لماذ لا تستعمل DbGrid آخر مربوط بال ADOQuery ؟
الله يبارك فيكم اخوانى على المساعدة
ساوضح اكثر انا استهمل ال 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
السلام عليكم ورحمة الله وبركاته ،
نعم يمكنك ذلك عن طريق البرمجة ،
مجرد فكرة للتطوير :
كود :
var nb : Integer
nb := 0 ;
ADOTable.First ;
while Not ADOTable.EOF do
Begin
if ADOTable.FieldByName('Sex').asString = 'ذكر' then
nb := nb + 1 ;
end ;
(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;