الى الاخوة مشكلتي هي حساب عدد الذكور و عدد الاناث في حقل sex جدول enfant
استعملت الكود التالي ينفذ بدون خطأ ويعطي الناتج 0 ولم اعرف الخطأ قاعدة البيانات sqlserver وشكراً
كود :
DTM.QrySta.Close;
DTM.QrySta.SQL.clear;
DTM.QrySta.SQL.Add ('SELECT Enfant.Sex, Count(Sex) AS CompteDeSex');
DTM.QrySta.SQL.Add ('FROM Enfant ');
DTM.QrySta.SQL.Add ('where sex=''ذكر''');
DTM.QrySta.SQL.Add ('GROUP BY Enfant.Sex');
DTM.QrySta.Open;
LabHome.Caption := IntToStr(DTM.QrySta.FieldByName('CompteDeSex').AsInteger);
كود :
with DTM.QrySta do
begin
Close;
SQL.Text := 'SELECT Sex, Count(Sex) AS CompteDeSex FROM Enfant where sex = :male GROUP BY Sex';
ParamByName('male').Value := 'ذكر';
Open;
end;
LabHome.Caption := DTM.QrySta.FieldByName('CompteDeSex').AsString;
شكــرا الاخ
ferrero
نفس المشكل الكود لا يعطي نتيجة
مرات السبب هو القيمة المخزنة في قاعدة البيانات ، انت تكتب "ذكر" لكن تخزن رموز غير مفهومة ، غيرها اذا كان ذكر اعطيه 1 و اذا انثى 0 و عند الفلترة اعطيها قيمة 1 او 0
مجرد اقتراح
والله شيئ بسيط لكن حيرني الاخ larbiparadox في قاعدة البيانات تخزن عادي و لا اعرف السبب ممكن اعود الى اقتراحك شكرا
جرب :
كود :
with DTM.QrySta do
begin
Close;
SQL.Text := 'SELECT Sex, Count(Sex) AS CompteDeSex FROM Enfant where sex like :male GROUP BY Sex';
ParamByName('male').Value := 'ذكر';
Open;
end;
LabHome.Caption := DTM.QrySta.FieldByName('CompteDeSex').AsString;
أو
كود :
with DTM.QrySta do
begin
Close;
SQL.Text := 'SELECT Sex, Count(Sex) AS CompteDeSex FROM Enfant where sex like :male GROUP BY Sex';
ParamByName('male').Value := QuotedStr('ذكر');
Open;
end;
LabHome.Caption := DTM.QrySta.FieldByName('CompteDeSex').AsString;
أو
كود :
with DTM.QrySta do
begin
Close;
SQL.Text := 'SELECT Sex, Count(Sex) AS CompteDeSex FROM Enfant where sex = :male GROUP BY Sex';
ParamByName('male').Value := QuotedStr('ذكر');
Open;
end;
LabHome.Caption := DTM.QrySta.FieldByName('CompteDeSex').AsString;
أو
كود :
with DTM.QrySta do
begin
Close;
SQL.Text := 'SELECT TRIM(Sex), Count(Sex) AS CompteDeSex FROM Enfant where sex = :male GROUP BY Sex';
ParamByName('male').Value := 'ذكر';
Open;
end;
LabHome.Caption := DTM.QrySta.FieldByName('CompteDeSex').AsString;
سلام عليكم
من المفروض الحقل sex الموجود بالجدول enfant يأخد المفتاح الخاص بالجدول sex
وكما تفضل الاخ العربي برادوكس في الرد الاستعلام يكون بـ 0 او 1
- غالبا ما يكون المشكل في اللغة العربية (مشكل شائع في MSSQL) .
جرب باستخدام التجميع
كود :
select
count(Sex)
from Enfant
group by Sex