delphi4arab منتديات دلفي للعرب

نسخة كاملة : حساب عدد الحقول لجدول (سؤال)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الى الاخوة مشكلتي هي حساب عدد الذكور و عدد الاناث في حقل 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