تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] إضافة مربع بحث للفورم
#1
Question 
السلام عليكم ورحمة الله تعالى وبركاته
لدي برنامج مبيعات، وأريد إضافة مربعي بحث؛ إحداهما للباركود (أرقام فقط) والآخر للاسم (أرقام وحروف)، فهل أجد لديكم كودا يفي بالغرض؟
برنامج فيجوال ستوديو 2012، وقاعدة بيانات من نوع أكسس 2010
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

قم بتعديل الكود التالي ليناسب برنامجك 
هذا يسمى كود البحث المتعدد ويعتبر اسرع كود للبحث عن نتيجة ما في البيانات التي تريد البحث فيها
سواء كنت تستخدم البرنامج على جهاز كمبيوتر رئيسي أو فرعي(ستحصل على النتيجة بنفس السرعة)
وسواء تبحث عن رقم الفاتورة أو اسم العميل بالعربي أو الانكليزي :

كود :
    Dim Con As New OleDb.OleDbConnection


    Dim Adapter1 As OleDb.OleDbDataAdapter
    Dim DtAct1 As New DataTable
    Dim Dx As New DataGridView     '  جدول افتراضي

    Sub FillDGV()

        Con.ConnectionString = ("Provider=Microsoft.Ace.Oledb.12.0; Data Source =" & Application.StartupPath &
                "\Activities.accdb;Jet OLEDB:Database Password=")
        Con.Open()

        Adapter1 = New OleDb.OleDbDataAdapter("Select Inv_No, CustomerNameAr, CustomerNameEn, Date From Invoices", Con)
        Adapter1.Fill(DtAct1)

        Dx.DataSource = DtAct1

        Con.Close()
    End Sub

    Sub SearchData()        '  البحث ضمن الداتاجريد
        Dim dv As DataView = DtAct1.DefaultView

        If Len(TextBox1.Text) <= 2 Then
            dv.RowFilter = "Inv_No Like '%12A12%'"   ' قيمة غير موجودة
            DataGridView1.DataSource = dv
            Exit Sub
            ' اذا كانت الادخال أقل من ثلاث أحرف فلا يتم البحث ويفرغ الداتاجريد من البيانات
        End If

        If RadioButton1.Checked = True Then
            ' Invoice No
            dv.RowFilter = "Inv_No Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton2.Checked = True Then
            ' Custmer Name (Arabic Name)
            dv.RowFilter = "CustomerNameAr Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton3.Checked = True Then
            '  Custmer Name (English Name)
            dv.RowFilter = "CustomerNameEn Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton4.Checked = True Then
            ' ALL
            dv.RowFilter = "Inv_No+CustomerNameAr+CustomerNameEn Like '%" & TextBox1.Text & "%'"
        End If

        DataGridView1.DataSource = dv

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FillDGV()
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        SearchData()
    End Sub
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: أحمد الغرباوي
#3
(08-03-22, 01:04 AM)Taha Okla كتب : وعليكم السلام ورحمة الله وبركاته

قم بتعديل الكود التالي ليناسب برنامجك 
هذا يسمى كود البحث المتعدد ويعتبر اسرع كود للبحث عن نتيجة ما في البيانات التي تريد البحث فيها
سواء كنت تستخدم البرنامج على جهاز كمبيوتر رئيسي أو فرعي(ستحصل على النتيجة بنفس السرعة)
وسواء تبحث عن رقم الفاتورة أو اسم العميل بالعربي أو الانكليزي :

كود :
    Dim Con As New OleDb.OleDbConnection


    Dim Adapter1 As OleDb.OleDbDataAdapter
    Dim DtAct1 As New DataTable
    Dim Dx As New DataGridView     '  جدول افتراضي

    Sub FillDGV()

        Con.ConnectionString = ("Provider=Microsoft.Ace.Oledb.12.0; Data Source =" & Application.StartupPath &
                "\Activities.accdb;Jet OLEDB:Database Password=")
        Con.Open()

        Adapter1 = New OleDb.OleDbDataAdapter("Select Inv_No, CustomerNameAr, CustomerNameEn, Date From Invoices", Con)
        Adapter1.Fill(DtAct1)

        Dx.DataSource = DtAct1

        Con.Close()
    End Sub

    Sub SearchData()        '  البحث ضمن الداتاجريد
        Dim dv As DataView = DtAct1.DefaultView

        If Len(TextBox1.Text) <= 2 Then
            dv.RowFilter = "ActivityNo Like '%12A12%'"   ' قيمة غير موجودة
            DataGridView1.DataSource = dv
            Exit Sub
            ' اذا كانت الادخال أقل من ثلاث أحرف فلا يتم البحث ويفرغ الداتاجريد من البيانات
        End If

        If RadioButton1.Checked = True Then
            ' Invoice No
            dv.RowFilter = "BusinessCategory Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton2.Checked = True Then
            ' Custmer Name (Arabic Name)
            dv.RowFilter = "BusinessSubCategory Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton3.Checked = True Then
            '  Custmer Name (English Name)
            dv.RowFilter = "Activity Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton4.Checked = True Then
            ' ALL
            dv.RowFilter = "Inv_No+CustomerNameAr+CustomerNameEn+Date Like '%" & TextBox1.Text & "%'"
        End If

        DataGridView1.DataSource = dv

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FillDGV()
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        SearchData()
    End Sub
بارك الله فيك وشكرًا لك، لدي مشكلة في هدا الجزء فقط:

 '
 If BtnSearchBarcode.Checked = True Then
            ' باركود المنتج
            dv.RowFilter = "ItemBarcode Like '%" & TextSearch.Text & "%'"

'
فتظهر الرسالة التالية:

Cannot perform 'Like' operation on System.Int16 and System.String.

وقد قمت بحذف 
(  '    ' اذا كانت الادخال أقل من ثلاث أحرف فلا يتم البحث ويفرغ الداتاجريد من البيانات)
فهل هذا يؤثر على عمل الكود
الرد }}}
تم الشكر بواسطة: رضوان الجماعي , رضوان الجماعي
#4
(08-03-22, 01:04 AM)Taha Okla كتب : وعليكم السلام ورحمة الله وبركاته

قم بتعديل الكود التالي ليناسب برنامجك 
هذا يسمى كود البحث المتعدد ويعتبر اسرع كود للبحث عن نتيجة ما في البيانات التي تريد البحث فيها
سواء كنت تستخدم البرنامج على جهاز كمبيوتر رئيسي أو فرعي(ستحصل على النتيجة بنفس السرعة)
وسواء تبحث عن رقم الفاتورة أو اسم العميل بالعربي أو الانكليزي :

كود :
    Dim Con As New OleDb.OleDbConnection


    Dim Adapter1 As OleDb.OleDbDataAdapter
    Dim DtAct1 As New DataTable
    Dim Dx As New DataGridView     '  جدول افتراضي

    Sub FillDGV()

        Con.ConnectionString = ("Provider=Microsoft.Ace.Oledb.12.0; Data Source =" & Application.StartupPath &
                "\Activities.accdb;Jet OLEDB:Database Password=")
        Con.Open()

        Adapter1 = New OleDb.OleDbDataAdapter("Select Inv_No, CustomerNameAr, CustomerNameEn, Date From Invoices", Con)
        Adapter1.Fill(DtAct1)

        Dx.DataSource = DtAct1

        Con.Close()
    End Sub

    Sub SearchData()        '  البحث ضمن الداتاجريد
        Dim dv As DataView = DtAct1.DefaultView

        If Len(TextBox1.Text) <= 2 Then
            dv.RowFilter = "ActivityNo Like '%12A12%'"   ' قيمة غير موجودة
            DataGridView1.DataSource = dv
            Exit Sub
            ' اذا كانت الادخال أقل من ثلاث أحرف فلا يتم البحث ويفرغ الداتاجريد من البيانات
        End If

        If RadioButton1.Checked = True Then
            ' Invoice No
            dv.RowFilter = "BusinessCategory Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton2.Checked = True Then
            ' Custmer Name (Arabic Name)
            dv.RowFilter = "BusinessSubCategory Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton3.Checked = True Then
            '  Custmer Name (English Name)
            dv.RowFilter = "Activity Like '%" & TextBox1.Text & "%'"
        ElseIf RadioButton4.Checked = True Then
            ' ALL
            dv.RowFilter = "Inv_No+CustomerNameAr+CustomerNameEn+Date Like '%" & TextBox1.Text & "%'"
        End If

        DataGridView1.DataSource = dv

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FillDGV()
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        SearchData()
    End Sub

الأخ Taha Okla بارك الله فيك وجعله في ميزان حسناتك، الكود يعمل على أكمل وجه
الرد }}}
تم الشكر بواسطة: رضوان الجماعي , رضوان الجماعي
#5
السلام عليكم
الغاية من جعل الكود لا يبحث ولا يعطي نتيجة في حال كان عدد أحرف البحث أقل من ثلاث أحرف 
أن تجعل البرنامج خفيف الاستخدام وسريع الاستجابة لك في النتائج
فعندما يصبح المدخلات في قاعدة البينانات بالالاف ستلاحظ بطئ في الاستجابة في بعض الأجهزة
وأي نتيجة سيعطيها البرنامج ستكون فعلاً غير النتيجة التي تريد منه :  فما معنى أن تبحث عن اسم معين ويعطيك أكثر من ألف نتيجة
فالغاية من البحث الدقة وسرعة الاستجابة والوصول للفاتورة أو السجل الهدف.
فكلما زادت عدد أحرف المدخلات في مربع البحث كلما أعطى دقة أكبر في النتيجة.
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة:
#6
(08-03-22, 11:04 PM)Taha Okla كتب : السلام عليكم
الغاية من جعل الكود لا يبحث ولا يعطي نتيجة في حال كان عدد أحرف البحث أقل من ثلاث أحرف 
أن تجعل البرنامج خفيف الاستخدام وسريع الاستجابة لك في النتائج
فعندما يصبح المدخلات في قاعدة البينانات بالالاف ستلاحظ بطئ في الاستجابة في بعض الأجهزة
وأي نتيجة سيعطيها البرنامج ستكون فعلاً غير النتيجة التي تريد منه :  فما معنى أن تبحث عن اسم معين ويعطيك أكثر من ألف نتيجة
فالغاية من البحث الدقة وسرعة الاستجابة والوصول للفاتورة أو السجل الهدف.
فكلما زادت عدد أحرف المدخلات في مربع البحث كلما أعطى دقة أكبر في النتيجة.

هل يوجد كود لتجاهل الهمزات والتاء المربوطة والهاء داخل مربع البحث
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] إضافة أو حذف حقل فى قاعدة بيانات باستخدام كود VB.net AmeenRashed 21 1,226 30-12-23, 03:47 PM
آخر رد: Taha Okla
Rainbow [سؤال] إضافة شريط ضبط الكتابة في أداة RichTextBox أبو خالد الشكري 0 230 29-10-23, 08:19 AM
آخر رد: أبو خالد الشكري
Exclamation [SQL] مشكلة إضافة قاعدة بيانات SQL أبو خالد الشكري 6 614 22-08-23, 08:25 PM
آخر رد: أبو خالد الشكري
  دالة ادخال ارقام فقط في مربع النص atefkhalf2004 7 820 20-08-23, 09:04 AM
آخر رد: atefkhalf2004
  طريقة حذف حرف زيادة من مربع النص علاء الكبابي 2 571 19-06-23, 05:08 PM
آخر رد: Taha Okla
  إضافة عمودين للداتاجريد قبل نشر ايام الشهر محمد خيري 0 261 15-12-22, 11:28 PM
آخر رد: محمد خيري
  [سؤال] اضافة مربع نص داخل الجريد dr.programming 3 649 06-09-22, 08:13 PM
آخر رد: سعود
  طلب كود إضافة وأزالة البرنامج من قائمة بدء التشغيل سيد درويش 5 877 26-08-22, 12:03 PM
آخر رد: asmarsou
  اظهار مربع الاشارة علي الزر mohamedallams 4 949 10-08-22, 12:18 PM
آخر رد: mohamedallams
  البحث في كمبوبوكس بمعلومية مربع نص atefkhalf2004 7 999 01-08-22, 06:47 PM
آخر رد: alfaiz678

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


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