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

أريد إضافة كود فلترة للداتاجريد في هذا المشروع

مغلقمُجاب
بدأه أبو حمزة سكر في 17 يوليو 2014 · 7 رد · 1,742 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم أحبائي

في مشروعي أعاني من مشكلتين بما أني جديد و لأول مرة أعمل على البرمجة
و بما أن المنتدى لا يسمح بأكثر من سؤال سأطرح المشكلتين في موضوعين مختلفين
المشكلة الأولى 
أنشأت فورم لتحكم بالأصناف لكني لا أجد سبيل لكود الفلتر في الداتا غريد
فقد وضعت أزرار كل زر من شأنه إظهار فئة معينة من الأصناف و أريد عند الضغط عليه أن يظهر فقط الفئة المحددة في الزر
لم أتمكن من رفع المشروع بسبب الحج
سأضع هنا الكود المستخدم في الفورم

و لكم جزيل الشكر   أرجوا الدعم

Imports System.Data, System.Data.OleDb
Imports System.Collections
Public Class frm_stouk
    Dim cmd As New OleDbCommand
    Private Where_SQL, SQLTemp As String : Dim Temp As String = " AND "
  
    Private Sub grid()


        ' كود التحكم في عرض الخلايا 
        DataGridView2.Columns(3).Width = 75
        DataGridView2.Columns(0).Width = 40
        DataGridView2.Columns(4).Width = 75
        DataGridView2.Columns(1).Width = 100




        ' الكود التالي لتوسيط الأعمدة
        DataGridView2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView2.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter


        ' توسيط الهيدر 
        DataGridView2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter


        ' كود جعل ثاني خليه  'الاسم' تأخذ باقي عرض الداتا جريد
        DataGridView2.Columns(2).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
        ' تلوين سطر وسطر 
        DataGridView2.AlternatingRowsDefaultCellStyle.BackColor = Color.LavenderBlush


    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If MsgBox("هل أنت متأكد من عملية التعديل   ? ", MsgBoxStyle.OkCancel, "تأكيد تعديل / إضافة") = MsgBoxResult.Cancel Then
            Exit Sub
        End If
        Try
            CreateConn()
            Dim blnAdd As New OleDb.OleDbCommand
            blnAdd.Connection = getConn()
            blnAdd.CommandType = CommandType.Text
            '-----------------
            'حذف قيمة السجل الذي يتم تحديده
            'DGview.Item(0, DGview.CurrentCellAddress.Y).Value
            blnAdd.CommandText = "add FROM stouks  WHERE الرقم =" & CType(DataGridView2.Item(0, DataGridView2.CurrentCellAddress.Y).Value, Integer) & ""
            '---------------
            OpenConn()
            If blnAdd.ExecuteNonQuery() Then
                'إذا تم حذف السجل بنجاخ من قاعدة البيانات 
                'يتم ايضا حذفه من الداتاقريد مباشرة
                If Not DataGridView2.CurrentRow.IsNewRow Then
                    DataGridView2.Rows.Add(DataGridView2.CurrentRow)
                End If
            Else
                MsgBox("فشلت عملية الإضافة  حاول مرة أخرى ", MsgBoxStyle.MsgBoxRight, "فشل العملية")
            End If
            CloseConn()


        Catch ex As Exception
            MsgBox("لا يوجد أي سجلات للتحديث  ", MsgBoxStyle.MsgBoxRight, "فشل العملية")


        End Try
    End Sub
   


    Private Sub frm_stouk_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        SQLTemp = ""
        'تعبئة الداتاقريد بالبيانات
        FillDG(SQLTemp)
        Call grid()
        panel.Hide()
        txtno.Enabled = False
        txtname.Enabled = False
        txtFee.Enabled = False
        txtpris.Enabled = False
        txtsize.Enabled = False
        BtnSave.Enabled = False
        BtnAndo.Enabled = False
        BtnDelet.Enabled = False
        BtnUpdate.Enabled = False
        DataGridView2.Hide()
        TableLayoutPanel3.Hide()
        TableLayoutPanel4.Hide()
        TableLayoutPanel5.Hide()
        TableLayoutPanel6.Hide()
        TableLayoutPanel7.Hide()
        TableLayoutPanel8.Hide()
        TableLayoutPanel9.Hide()
    End Sub
    Sub FillDG(ByVal SQL)


        CreateConn()


        OpenConn()
        cmd.Connection = getConn()


        DataGridView2.Columns.Clear()
        cmd.CommandType = CommandType.Text
        '------------------
        cmd.CommandText = "select stouks.الرقم,الفئة,اسم_الصنف,السعر_الإفرادي,وحدة_القياس from stouks " & SQL


        dr = cmd.ExecuteReader


        DataGridView2.ColumnCount = 5


        DataGridView2.Columns(0).HeaderText = "رقم"
        DataGridView2.Columns(1).HeaderText = "الفئة"
        DataGridView2.Columns(2).HeaderText = "اسم الصنف"
        DataGridView2.Columns(3).HeaderText = "السعر الإفرادي"
        DataGridView2.Columns(4).HeaderText = "وحدة القياس"


        Dim n As Integer
        n = -1
        Do While dr.Read


            n += 1
            DataGridView2.RowCount += 1
            DataGridView2.Item(0, n).Value = dr.Item("الرقم") '
            DataGridView2.Item(1, n).Value = dr.Item("الفئة")
            DataGridView2.Item(2, n).Value = dr.Item("اسم_الصنف")
            DataGridView2.Item(3, n).Value = dr.Item("السعر_الإفرادي")
            DataGridView2.Item(4, n).Value = dr.Item("وحدة_القياس")


        Loop
        dr.Close()


        CloseConn()




    End Sub




    Private Sub BtnAdd_Click(sender As Object, e As EventArgs) Handles BtnAdd.Click
        '---Add max number---------
        Me.txtno.Text = AddMaxID("الرقم", "stouks")
        '----clear text-------
        Me.txtFee.Clear()
        Me.txtname.Clear()
        Me.txtpris.Clear()
        Me.txtsize.Clear()


        txtno.Enabled = False
        txtFee.Enabled = True
        txtname.Enabled = True
        txtpris.Enabled = True
        txtsize.Enabled = True
        BtnAndo.Enabled = True
        BtnSave.Enabled = True
        BtnDelet.Enabled = False
        BtnUpdate.Enabled = False
    End Sub
    Function AddMaxID(ByVal columname As String, ByVal tblcolumn As String) As Integer
        '---------------------
        Dim SavInto As New OleDb.OleDbCommand
        CreateConn()
        Dim intMaxID As Integer
        Dim objCommand As OleDbCommand = New OleDbCommand()
        Dim maxIdCommand As OleDbCommand = New OleDbCommand _
        ("SELECT MAX( " & columname & " ) AS MaxID FROM  " & tblcolumn & "  ", getConn)
        ' Open the connection, execute the command


        Try
            OpenConn()
            Dim maxId As Object = maxIdCommand.ExecuteScalar()
            ' If the MaxID column is null...
            If maxId Is DBNull.Value Then
                ' Set a default value of 1000...
                intMaxID = 1
            Else
                ' Get the integer part of the string...
                '  intMaxID = CType(maxId, Integer)
                ' Increment the value...
                intMaxID = maxId + 1
            End If
            CloseConn()
            Return intMaxID
        Catch ex As Exception
            MsgBox("لقد صادفت مشكله   حاول مرة آخرى " & ex.Message, MsgBoxStyle.OkOnly, "تحذير")
        End Try


        '----------------------
    End Function


    Private Sub BtnUpdate_Click(sender As Object, e As EventArgs) Handles BtnUpdate.Click
        'عرض النافذة الصغيرة الخاصة بالتعديل
        '(panel)
        Me.panel.Visible = True
        Me.BtnUpdate.Enabled = False
        'تعيين قيمة الحقوق بنفس قيم السجل الذي تم تحديده
        Me.IDTextBox.Text = DataGridView2.Item(0, DataGridView2.CurrentCellAddress.Y).Value
        Me.txtfee2.Text = DataGridView2.Item(1, DataGridView2.CurrentCellAddress.Y).Value
        Me.txt_name1.Text = DataGridView2.Item(2, DataGridView2.CurrentCellAddress.Y).Value
        Me.txt_address1.Text = DataGridView2.Item(3, DataGridView2.CurrentCellAddress.Y).Value
        Me.TextBox1.Text = DataGridView2.Item(4, DataGridView2.CurrentCellAddress.Y).Value
    End Sub


    Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
        Try
            Dim SavInto As New OleDb.OleDbCommand
            CreateConn()
            SavInto.Connection = getConn()
            SavInto.CommandType = CommandType.Text
            SavInto.CommandText = "INSERT INTO stouks(الرقم,الفئة,اسم_الصنف,السعر_الإفرادي,وحدة_القياس)" & _
                "values ('" & Me.txtno.Text & "','" & Me.txtFee.Text & "','" & Me.txtname.Text & "','" & Me.txtpris.Text & "','" & Me.txtsize.Text & "') "
            OpenConn()
            If SavInto.ExecuteNonQuery() Then
                'إذا تمت عملية الإضافة بنجاح يتم اضافة الحقول إلى الداتا قريد مباشرة بدل استراجاعها من الداتابيس
                DataGridView2.Rows.Add()
                DataGridView2.Item(0, DataGridView2.Rows.Count - 1).Value = Me.txtno.Text
                DataGridView2.Item(1, DataGridView2.Rows.Count - 1).Value = Me.txtFee.Text
                DataGridView2.Item(2, DataGridView2.Rows.Count - 1).Value = Me.txtname.Text
                DataGridView2.Item(3, DataGridView2.Rows.Count - 1).Value = Me.txtpris.Text
                DataGridView2.Item(4, DataGridView2.Rows.Count - 1).Value = Me.txtsize.Text
                Me.txtno.Clear()
                Me.txtFee.Clear()
                Me.txtname.Clear()
                Me.txtpris.Clear()
                Me.txtsize.Clear()
                txtno.Enabled = False
                txtname.Enabled = False
                txtFee.Enabled = False
                txtpris.Enabled = False
                txtsize.Enabled = False
            Else
                MsgBox("فشلت عملية الإضافة", MsgBoxStyle.MsgBoxRight, "رسالة خطأ")
            End If
            CloseConn()
        Catch ex As Exception
            MsgBox("صادف مشكله أثناء القيام بعمليه الإضافه , الرجاء المحاولة لاحقا", MsgBoxStyle.OkOnly, "تنبيه")
        End Try
    End Sub


    Private Sub BtnDelet_Click(sender As Object, e As EventArgs) Handles BtnDelet.Click
        If MsgBox("هل أنت متأكد من عملية الحذف   ? ", MsgBoxStyle.OkCancel, "تأكيد حذف") = MsgBoxResult.Cancel Then
            Exit Sub
        End If
        Try
            CreateConn()
            Dim SavInto As New OleDb.OleDbCommand
            SavInto.Connection = getConn()
            SavInto.CommandType = CommandType.Text
            '-----------------
            'حذف قيمة السجل الذي يتم تحديده
            'DGview.Item(0, DGview.CurrentCellAddress.Y).Value
            SavInto.CommandText = "DELETE FROM stouks  WHERE الرقم =" & CType(DataGridView2.Item(0, DataGridView2.CurrentCellAddress.Y).Value, Integer) & ""
            '---------------
            OpenConn()
            If SavInto.ExecuteNonQuery() Then
                'إذا تم حذف السجل بنجاخ من قاعدة البيانات 
                'يتم ايضا حذفه من الداتاقريد مباشرة
                If Not DataGridView2.CurrentRow.IsNewRow Then
                    DataGridView2.Rows.Remove(DataGridView2.CurrentRow)
                End If
            Else
                MsgBox("فشلت عملية الحذف  حاول مرة أخرى ", MsgBoxStyle.MsgBoxRight, "فشل العملية")
            End If
            CloseConn()


        Catch ex As Exception
            MsgBox("لا يوجد أي سجلات للحذف  ", MsgBoxStyle.MsgBoxRight, "فشل العملية")


        End Try
    End Sub


    Private Sub BtnAndo_Click(sender As Object, e As EventArgs) Handles BtnAndo.Click
        SQLTemp = ""
        'تعبئة الداتاقريد بالبيانات
        Me.txtno.Clear()
        Me.txtFee.Clear()
        Me.txtname.Clear()
        Me.txtpris.Clear()
        Me.txtsize.Clear()
        FillDG(SQLTemp)
        panel.Hide()
        txtno.Enabled = False
        txtname.Enabled = False
        txtFee.Enabled = False
        txtpris.Enabled = False
        txtsize.Enabled = False
        Me.BtnAdd.Enabled = True
        Me.BtnSave.Enabled = False
        Me.BtnUpdate.Enabled = True
        Me.BtnDelet.Enabled = True
    End Sub


    Private Sub BtnExit_Click(sender As Object, e As EventArgs) Handles BtnExit.Click
        Me.Close()
    End Sub


    Private Sub btn_savesedit_Click(sender As Object, e As EventArgs) Handles btn_savesedit.Click
        If MsgBox("تأكيد عملية التعديل ؟ ", MsgBoxStyle.OkCancel, "تعديل الأصناف") = MsgBoxResult.Cancel Then
            Exit Sub
        End If


        Try
            Dim SavInto As New OleDb.OleDbCommand
            CreateConn()
            SavInto.Connection = getConn()
            SavInto.CommandType = CommandType.Text
            SavInto.CommandText = "UPDATE stouks SET   الفئة = '" & Trim(Me.txtfee2.Text) & "' ,  اسم_الصنف = '" & Trim(Me.txt_name1.Text) & "' , السعر_الإفرادي= '" & Trim(Me.txt_address1.Text) & "' , وحدة_القياس= '" & Trim(Me.TextBox1.Text) & "' WHERE  الرقم = " & CType(IDTextBox.Text, Integer) & ""
            OpenConn()
            If SavInto.ExecuteNonQuery() Then
                'إذا تم تعديل قاعدة البيانات بنجاح يتم تعديل الداتاقريد مباشرة
                MsgBox("تم تعديـــل بنجاح", MsgBoxStyle.MsgBoxRight, "نجاح العملية")
                DataGridView2.Item(1, DataGridView2.CurrentCellAddress.Y).Value() = txtfee2.Text
                DataGridView2.Item(2, DataGridView2.CurrentCellAddress.Y).Value() = txt_name1.Text
                DataGridView2.Item(3, DataGridView2.CurrentCellAddress.Y).Value() = txt_address1.Text
                DataGridView2.Item(4, DataGridView2.CurrentCellAddress.Y).Value() = TextBox1.Text
                'اخفاء نافذة التعديل
                Me.panel.Visible = False
                Me.BtnUpdate.Enabled = True
            Else
                MsgBox("لم يتم تعديل ", MsgBoxStyle.MsgBoxRight, "رسالة خطأ")
            End If
            CloseConn()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


    Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
        Me.panel.Visible = False
        Me.BtnUpdate.Enabled = True
    End Sub


    Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
        Me.panel.Visible = False
        Me.BtnUpdate.Enabled = True
    End Sub


    Private Sub DataGridView2_Click(sender As Object, e As EventArgs) Handles DataGridView2.Click
        BtnDelet.Enabled = True
        BtnUpdate.Enabled = True
    End Sub

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 17 يوليو 2014 في 07:20 — السبب: تنسيق الكود

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

#2

أخي الفاضل

أتمني في المرات القادمة وضع الكود منسق كما نسقته لك اعلاه حتي نستطيع قرائتة

كما أتمني ان ترفق مثال موضحا به مشكلتك حتي يسهل التعديل علي المثال بدلا من النظر في كل هذا الكود

مرفق مشاركة توضح البحث في الجريد فيو اتمني ان تفي بالغرض

 

طريقة عمل البحث داخل DataGridview

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

استاذي الفاضل

جزاكَ الله عنا كل خير

لقد أفصحت في موضوع سابق بأني لم أعرف طريقة تنسيق الكود في الموضوع و طلبت المساعدة

و قمت أنت مشكوراً بتنسيق الكود دون تعليمي طريقة التنسيق

و أضيف بأني ذكرت في الموضوع الحالي بأنني لم أتمكن من رفع المشروع بسبب الحجم

و أوضح بأني أتعلم الفيجوال بيسك من مواضيعكم الكريمة أي أنني ليس لدي الخبرة الكافية في كيفية إدراج أمثلة مصغرة توضح مشكلتي

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

في الداتا جريد عن طريق صندوق الخيار المدرج داخل الداتا جريد

أما طلبي فهو كود البحث في الداتا جريد عن طريق الضغط على زر خارجها يكون محدد فيه مسبقاً الكلمة المراد البحث عنها و العمود المراد البحث فيه

أشكركَ ثانيا على الدعم و المساعدة

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

#4

أخي الفاضل

لتنسيق الاكواد داحل المشاركات يجب ان تضع الكود هنا اولا ثم تحديد كامل الكود بالماوس ثم الضغط علي وسم كود وكما هو موضح بالصورة

 

post-46243-0-25856200-1405612726_thumb.j

 

Imports System.Data
Imports System.Data.OleDb
Public Class Form1

    Dim ConnSTR As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\db.mdb;Persist Security Info=False;"
    Dim da As New OleDb.OleDbDataAdapter("Select * From Employee", ConnSTR)
    Dim dt As New DataTable
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        da.Fill(dt)
        Me.DataGridView1.DataSource = dt
    End Sub

    Private Sub BtnFind_Click(sender As System.Object, e As System.EventArgs) Handles BtnFind.Click
        dt.DefaultView.RowFilter = "EmpName Like '%" & TextBox1.Text & "%'"
    End Sub
End Class
 
أما بخصوص طلبك الاساسي فقد قمت بعمل مثال مصغر لك يحتوي علي عملية البحث بمجرد ان تضغط علي زر
المثال في المرفقات
بالتوفيق

Fouad.rar

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

بارك الله بك استاذنا و جزاك الله عنا كل خير
جاري التعامل مع الكود ليعمل كما اريد
أتمنى أن لا أزعجكَ بأسئلتي
و شكراً مرة أخرى

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

#6

أستاذي أرجو المعذرة لكن لم أفلح في تعديل الكود كما أريد
فأنا أريد أن يكون الزر نفسه يحتوي علىالكلمة المراد البحث عنها و لا أريد أن أضيف الكلمة يدوياً في TEXTBOX أي أن كلمة البحث ثابتة لا تتغير و بمجرد الضغط على الزر يتم فلترة الداتا جريد على أساس الكلمة المثبتة في الزر

كنت قد فعلت هذا الأمر قبل ذلك لكن مع نظام إتصال بقاعدة بيانات غير هذا النظام و كان الأمر سهل لكن مع الإتصال هذا لا أتمكن من إيجاد الكود

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

#7 أفضل إجابة

تم عمل اللازم وتثبيت كلمة البحث وعندما تضغط علي زر اابحث يقوم بعمل فلتر علي اسم Mohamed

مرفق المثال

بالتوفيق

Fouad_up.rar

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#8

بارك الله بك أستاذي الفاضل و جزاكَ الله عني كل خير
تم إستخدام الكود
كنت أحاول في التعديل قبل ردك الأخير و كان يظهر عندي خطأ 
و عند رؤيتي للمثال تبين أن خطئي هو علامات الإقتباس كانت أماكنها خاطئة و الحمد لله بمساعدتكَ تم التصحيح
جعلها الله في ميزان حسناتك
أرجوا منك أستاذي أن تدلني على درس أو موضوع يساعدني في إنشاء فورم نقطة البيع الذي يعمل بنفس طريقة شاشة اللمس
فأنا أريد أن أنشئ فورم يقوم بإضافة زر لكل صنف أضيفه في الأصناف و عند الضغط على الزر يقوم بنسخ السجل التابع له إلى داتا جريد الفاتورة

و لك جزيل الشكر

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…