منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : استفسار في معرفة عدد السجلات في الداتا جريد بشرط
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمه الله وبركاته
واجهتني مشكلة ارجو اجد لها حل
عندي داتا جريد فيو ويوجد فيها اكثر من عامود اريد معرفة عدد السجلات التى تحتوي على كلمة معينة في الحقل
مثال لدينا حقل التقدير وتحتوي على جيد جدا و حيد و ممتاز
اريد معرفة عدد السجلات التى تحتوي على كلمة ممتاز في عامود التقدير
شاكر مقدر تعاونكم
جرب الكلاس التالي بفورم جديد
PHP كود :
Public Class Form1
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        dg
.AutoGenerateColumns False
        dg
.Rows.Add("محمد""رياضيات""ممتاز")
 
       dg.Rows.Add("سعود""رياضيات""ضعيف")
 
       dg.Rows.Add("علي""رياضيات""جيد")
 
       dg.Rows.Add("ماضي""رياضيات""جيد جدا")
 
       dg.Rows.Add("ابراهيم""رياضيات""ممتاز")
 
   End Sub

    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        Dim i 
As Integer 0
        For a 
0 To dg.Rows.Count - (IIf(dg.AllowUserToAddRows21))
 
           If dg.Rows(a).Cells(2).Value "ممتاز" Then
                i 
+= 1
            End 
If
 
       Next
        MsgBox
("عدد الممتاز: " i)
 
   End Sub
End 
Class 
شكرا اخوى سعود على الرد جربت الكلاس وهو يعمل كما اريد ربي يوفقك ويزيدك من علمه .
اذا امكن تشرح لنا طريقة عمل الكود كي تتضح لنا طريقة عمله ويستفيد منه جيمع اعضاء المنتدى .
وتقبل تحياتي
العفو اخوي .. مدري كيف اشرح اخاف اعميها ...لكن انت حدد النقطة الغامضة وابشر بالايضاح.
سعود موضوعي لا تنساه النسخه الأحتياطيه  Huh Huh
السلام عليكم ورحمة الله

أخي عادل


استخدم التقنية الحديثة من يكروسوفت Linq
وهي عدة أنواع:
LINQ to Objects
LINQ to SQL
LINQ to XML
LINQ to DataSet

وهنا سنستخدم النوع LINQ to Objects
ومن ضمت خدماتها Aggregate وتعني التجميع أو الإحصاء،
ودوالها All وAny وAverage وCount وLongCount وMax وMin وSum


وبالنسبة لهذا الموضوع سنستخدم الدالة Count بالطريقة التالية
PHP كود :
Dim c =
 
   Aggregate x As DataGridViewRow In DataGridView1.Rows
    Into Count
(x.Cells(2).Value "ممتاز")

MsgBox(c

وكما نلاحظ تم وضعها في سطرين للتوضيح (مع أنه يمكن وضعهما في سطر واحد)
السطر الأول: نريد التجميع من أسطر DataGridView1 (وتم وضع المتغير x للسطر لنتمكن من اختيار الخلية المطلوب معاينتها)
السطر الثاني: ضعها بشكل عدد عناصر Count بما يتفق مع الشرط الموجود بين القوسين

ملاحظة: لتسير على خطى صحيحة في البرمجة لا تستخدم التقديرات (ممتاز وجيد وجيد جداً) وما شابهها بشكل نصي في جدول المواد، وإنما ضعها في جدول واربط جدول المواد به.
وصلت الفكرة اخوى سعود ومشكور على الشرح السطر التالي ما فهمته
For a = 0 To dg.Rows.Count - (IIf(dg.AllowUserToAddRows, 2, 1))
If dg.Rows(a).Cells(2).Value = "ممتاز" Then
بالضبط الجملة هذي (IIf(dg.AllowUserToAddRows, 2, 1
مهموم الله يفرج همك 


بتعلمها أنشاء الله لكن أنا عندي مشروع للمدير ولازم اخلصه أخر وقت لي الأسبوع الجاي إذا ما خلصته الله يعنني على ..... Angel

وبعد ما أخلصه برجع بدرسسسسها دراسه لكن خلني أخلص مشروعي أول شي مافيه مجال لتجربه
(02-11-15, 08:33 PM)alachk كتب : [ -> ]وصلت الفكرة اخوى سعود ومشكور على الشرح السطر التالي ما فهمته
       For a = 0 To dg.Rows.Count - (IIf(dg.AllowUserToAddRows, 2, 1))
           If dg.Rows(a).Cells(2).Value = "ممتاز" Then
بالضبط الجملة   هذي    (IIf(dg.AllowUserToAddRows, 2, 1

هذي لتوي عرفتها من احد الاخوة وهي تعني  ان اداة شبيكة البيانات يختلف عدد صفوفها في حال تمكين الاضافة عنها في حال عدم التمكين لذلك استخدمنا هذا الكود وهو اختصار لكود طويل مقارنة به.