حساب عدد الحقول لجدول (سؤال)
#1
الى الاخوة مشكلتي هي حساب عدد الذكور و عدد الاناث في حقل 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);
وقل ربي زدني علماً
الرد
#2
كود :
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;
الرد
#3
شكــرا الاخ  ferrero

نفس المشكل الكود لا يعطي نتيجة
وقل ربي زدني علماً
الرد
#4
مرات السبب هو القيمة المخزنة في قاعدة البيانات ، انت تكتب "ذكر" لكن تخزن رموز غير مفهومة ، غيرها اذا كان ذكر اعطيه 1 و اذا انثى 0 و عند الفلترة اعطيها قيمة 1 او 0

مجرد اقتراح
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
الرد
#5
والله شيئ بسيط لكن حيرني الاخ larbiparadox في قاعدة البيانات تخزن عادي و لا اعرف السبب ممكن اعود الى اقتراحك شكرا
وقل ربي زدني علماً
الرد
#6
جرب :

كود :
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;
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
الرد
#7
سلام عليكم
من المفروض الحقل sex الموجود بالجدول enfant يأخد المفتاح الخاص بالجدول sex
وكما تفضل الاخ العربي برادوكس في الرد الاستعلام يكون بـ 0 او 1

- غالبا ما يكون المشكل في اللغة العربية (مشكل شائع في MSSQL) .
الفاشلون نوعان : الأول : فكر ولم يفعل .. والآخر: فعل ولم يفكر
الرد
#8
جرب باستخدام التجميع

كود :
select     count(Sex) from Enfant group by Sex
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد


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


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