الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عمل فلترة لبيانات قريد

بدأه رحيّم في 25 يناير 2014 · 4 رد · 984 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

كيفكم أساتذتي وإخواني ...

 

عندي داتا قريد فيو ... أريد عمل فلترة للبيانات التي فيها .. بعيداً عن الداتاسيت ( مصدر القريد ) .. هل يمكن ذلك ...

وإذا لم يمكن هذا ... فهذا كود تعبئة القريد لمساعدتي في عمل فلتر للداتاسيت ...

مع العلم أن الفلترة ستكون لأكثر من عمود ( ثلاثة أو أربعة ) وكلها عبارة عن حقول بوليون (( 0 / 1 ) - نعم - لا ) أريد في الفلترة أن تكون ثلاث خطوات ( نعم - لا - الإثنين معاً )

 

هذا كود تعبة القريد

        Dim LSQL As String = "SELECT Req.* where req_name like '%" & TextBox2.Text.Trim & "%' and req_no like '%" & TextBox4.Text.Trim & "%' "
        Dim LAdapter As New SqlDataAdapter(LSQL, Con)
        LDataSet = New DataSet
        Dim RowsCount As Integer
        Dim i As Integer

        ' مسح الداتاقريدفيو من قيم سابقة محتملة
        DataGridView1.Rows.Clear()


            LAdapter.Fill(LDataSet, "LoadingData")
            RowsCount = LDataSet.Tables("LoadingData").Rows.Count
            If RowsCount = 0 Then
                ' يتم فحص السجلات المسترجعة من جمل اس كيو ال، فإن كان عددها صفرا
                ' معناها لا يوجد سجلات والجدول فارغ
                ' فيتم إغلاق الاتصال وعدم عرض اي شيء
                DataGridView1.Rows.Clear()
                LDataSet.Reset()
                Con.Close()
                Exit Sub
            Else
                DataGridView1.Rows.Add(RowsCount)

                ' هذه هي عملية تعبئة البيانات من الداتاسيت إلى الداتاقريد فيو
                For i = 0 To RowsCount - 1
                    With DataGridView1
                        .Rows(i).Cells(0).Value = LDataSet.Tables("LoadingData").Rows(i).Item("req_no")
                        .Rows(i).Cells(1).Value = LDataSet.Tables("LoadingData").Rows(i).Item("req_name")
                        .Rows(i).Cells(2).Value = LDataSet.Tables("LoadingData").Rows(i).Item("req_name2")
                        .Rows(i).Cells(3).Value = LDataSet.Tables("LoadingData").Rows(i).Item("Typ_name")
                        .Rows(i).Cells(4).Value = LDataSet.Tables("LoadingData").Rows(i).Item("Rejected")
                        .Rows(i).Cells(5).Value = LDataSet.Tables("LoadingData").Rows(i).Item("Waiting")
                        .Rows(i).Cells(6).Value = LDataSet.Tables("LoadingData").Rows(i).Item("accepted")
                    End With
                Next
                LDataSet.Reset()
                Con.Close()
            End If
#3

شكراً أستاذ محمد

لقد قمت سابقاً بتطبيق الكود ولكنه لم يعمل في حالة أكثر من عمود ..

والآن : في مشروعي هذا لم يعمل نهائياً لأن الداتاسيت يتم تصفيرها بعد ملئ القريد ...

فوضعت الكود التالي بعد كود عملية ملئ الداتاسيت بالبيانات فأصبح كالتالي :

            LAdapter.Fill(LDataSet, "LoadingData")
            LDataSet.Tables("LoadingData").DefaultView.RowFilter = " req_quickly=" & CheckBox1.Checked
            RowsCount = LDataSet.Tables("LoadingData").Rows.Count

ولكن بدون فائدة لم يفلتر أبداً .. حتى ولو وضعت بدل CheckBox1.Checked   كلمة true  أو 1

 

أين أضع هذا الكود ؟؟؟

#4

الحمد لله أولاً

والشكر للأستاذ محمد على تجاوبه ...

لقد حلت المشكلة بما ذكره أستاذنا ( أبو رائد ) في موضوعه في منتدى فيجوال بسط لكل العرب :

http://vb4arb.com/vb/showthread.php?tid=367

وهذا الكود الأخير الذي عمل ما أردته ولكن بقيت مشكلة واحدة أذكرها بالأسفل :

        Dim sql As String = "SELECT Req.* "

        Dim where As String = ""
        If Me.TextBox2.Text.Trim <> "" Then where &= "AND [req_name] like @req_name "
        If Me.TextBox4.Text.Trim <> "" Then where &= "AND [req_no] = @req_no "
       If Me.CheckBox1.CheckState = 1 Then where &= "AND [rejected] = @ rejected "
        If Me.CheckBox1.CheckState = 0 Then where &= "AND [rejected] is null "
        If Me.CheckBox2.CheckState = 1 Then where &= "AND [accepted] = @accepted "
        If Me.CheckBox2.CheckState = 0 Then where &= "AND [accepted] is null "

        If where <> "" Then sql &= "WHERE " & where.Substring(4)

        Dim comm As New SqlCommand(sql, con)
        If Me.TextBox2.Text.Trim <> "" Then comm.Parameters.AddWithValue("@req_name", Me.TextBox2.Text.Trim)
        If Me.TextBox4.Text.Trim <> "" Then comm.Parameters.AddWithValue("@req_no", Me.TextBox4.Text.Trim)
        If Me.CheckBox1.CheckState = 1 Then comm.Parameters.AddWithValue("@ rejected", Me.CheckBox1.CheckState)
        If Me.CheckBox2.CheckState = 1 Then comm.Parameters.AddWithValue("@accepted", Me.CheckBox2.CheckState)

المشكلة المتبقية : لا أستطيع البحث بجزء من الإسم ... حاولت ووضعت % مع الكومات بعد كلمة like بطرق وكيفيات مختلفة ولم أوفق إلى الطريقة الصحيحة ...

كيف يمكنني ذلك ...

#5

الحمد لله .. بفضل الله
ثم بفضل عدد من مواضيعكم المتعددة ... توصلت إلى الحل

If Me.TextBox2.Text.Trim <> "" Then comm.Parameters.AddWithValue("@req_name", "%" & Me.TextBox2.Text.Trim & "%" )

مواضيع مشابهة