تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في DataGridView
#1
لدي قاعدة بيانات تحتوي على حقلين :

الاول - الرقم

الثاني - الاسم


اريد ان ابحث داخل الداتا جريد يعني اريد ادخال الرقم في خلية الداتا جريد فيو ويعطيني ناتج البحث 
بالخلية الثانية 


ارجو ان تكون وضحت الفكرة
الرد }}}}
تم الشكر بواسطة: khodor1985
#2
سلام


هذا الكود يعطيك النتيجه اثناء الكتابه، يعني لحظيه

غير اسم الجدول واسماء الحقول ولا تنس تتاكد من ارقام الاعمده فهنا الكتابه في العمود رقم 0 يعنى الاول والنتيجه في العمود رقم 1 يعنى الثاني
كود :
Dim con As New OleDb.OleDbConnection("Provider=Microsoft........")

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
    AddHandler e.Control.TextChanged, AddressOf CellTextChanged
End Sub

Private Sub CellTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If Me.DataGridView1.CurrentCell.ColumnIndex = 0 Then
        Using cmd As New OleDb.OleDbCommand("SELECT [name] FROM [table1] WHERE [id] = ?", con)
            cmd.Parameters.AddWithValue("@id", Val(CType(sender, DataGridViewTextBoxEditingControl).Text))
            If con.State <> ConnectionState.Open Then con.Open()
            Me.DataGridView1.Item(1, Me.DataGridView1.CurrentCell.RowIndex).Value = cmd.ExecuteScalar
        End Using
    End If
End Sub


موفقين
متغيب
الرد }}}}
تم الشكر بواسطة: khodor1985 , VB.NET , أبو عمر , moh61
#3
السلام عليكم أخي العزيز ورحمة الله وبركاته،
تعقيبا على  مشاركة الأخ العزيز والحبيب الطالب وبعد إذنه طبعا أحب أيضا أن أقدم فكرة أخرى
- قم بإنشاء قاعدة بيانات أكسس بعنوان DGVSearch
   
- قم بإنشاء جدول بعنوان Person داخل قاعدة البيانات أكسس
   
- أضف الحقول التالية في تصميم الجدول
   

المشروع :
- قم بإضافة DataGridView من مربع الأدوات ToolBox:
   
- إضافة الحقول أو الأعمدة إلى DataGridVew
   
الحقل الأول : ID (الرقم)
   
الحقل الثاني : Fname (الإسم)
   
-الشكل النهائي لـ DataGridView:
   

الأكواد :
- في الحدث CellEndEdit للـ DataGridView :
   
- ضع الكود التالي :
PHP كود :
'تحديد مسار الإتصال
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\DGVSearch.accdb")
        '
استدعاء البيانات من الجدول من خلال الشرط أو المعيار ID
        Dim sqlstr 
As String "SELECT ID,Fname FROM Person WHERE ID=@ID"

 
       'مرحلة تنفيذ جملة الإستعلام ووضع قيمة الشرط في الحقل أو العامود الأول في الداتا غريد 
        Dim cmd As New OleDbCommand(sqlstr, con)
        cmd.Parameters.AddWithValue("@ID", Me.DataGridView1.CurrentRow.Cells(0).Value)

        '
فتح الإتصال مع قاعدة البيانات
        con
.Open()

 
       'قراءة المعطيات في قاعدة البيانات
        Dim dr As OleDbDataReader
        dr = cmd.ExecuteReader

        '
إذا لم يكن الرقم موجود في الجدول فسيظهر رسالة تفيد المستخدم بذلك
        If Not 
(dr.HasRowsThen
            MsgBox
("الإسم غير موجود في قاعدة البيانات"MsgBoxStyle.MsgBoxRight MsgBoxStyle.Critical"خطأ")
 
           Return
        End 
If

 
       'في حال وجد الرقم فسوف يستدعي القيم وضعها في الحقول المحددة أدناه
        While dr.Read
            Me.DataGridView1.CurrentRow.Cells(0).Value = dr.Item("ID")
            Me.DataGridView1.CurrentRow.Cells(1).Value = dr.Item("Fname")
        End While

        '
إغلاق القراءة من قاعدة البيانات
        dr
.Close()
 
       'إغلاق الإتصال
        con.Close() 
   
والحمد لله رب العالمين
أتمنى لك التوفيق

النتيجة :
عند وضع قيمة الرقم في حقل الرقم في DataGridview سوف يستدعي صاحب الرقم أو الإسم
   

   

والسلام عليكم ورحمة الله وبركاته
أرجو المسامحة إن قصرت
الرد }}}}
تم الشكر بواسطة: الطالب , abulayth , abulayth , أبو عمر , VB.NET , moh61
#4
هل يوجد توضيح اكثر على الكود الموجود عن طريق الطالب

حاولت افهم طريقة الكود لاكن ما قدرت
الرد }}}}
تم الشكر بواسطة:
#5
نفس الكود اللي وضعه الاخ الاستاذ الطالب
هو نفسه اللي في مثال الاخ الاستاذ خضر
الاخ خضر اختصر لك الكود في حدث واحد
والاخ الطلب جعل الكود في حدثين للخلية
واي الكودين طبقت فهي نفس النتيجة
====================

PHP كود :
جمةل اتصالك بقاعدة البيانات 
Dim con 
As New OleDb.OleDbConnection("Provider=Microsoft........")
اجراء في حدث التحرير  مرتبط بحدث تحرير خلية في الجريد فيو
Private Sub DataGridView1_EditingControlShowing(ByVal sender As ObjectByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgsHandles DataGridView1.EditingControlShowing
    AddHandler e
.Control.TextChangedAddressOf CellTextChanged
End Sub
الاجاراء الاتي في حدث تغيير النص في الخلية وكما رأيت استخدمناه في الاعلى في الجملة
[size=small][font=MonacoConsolasCouriermonospacee.Control.TextChanged[/font][/size]


Private 
Sub CellTextChanged(ByVal sender As System.ObjectByVal e As System.EventArgs)
الاناذا الخلية اللي انت واقف عليها  في خلية في اول عمود اذن نفذ الاجراء الاتي
    If Me
.DataGridView1.CurrentCell.ColumnIndex 0 Then
الاجراء انك تتصل بالجدول مستخدما الجملة 
        Using cmd 
As New OleDb.OleDbCommand("SELECT [name] FROM [table1] WHERE [id] = ?"con)
 
           cmd.Parameters.AddWithValue("@id"Val(CType(senderDataGridViewTextBoxEditingControl).Text))
اذا الاتصال باقاعدة غير متاح اذا افتح الاتصال بالقاعدة مرر  جملة الاستعلام للجدول
            If con
.State <> ConnectionState.Open Then con.Open()
الاجراء الاخير يقوم بتعبئة الخلية المقابلة للخلية الاولى في العمود الثاني بعد احضار قيمة جملة الاستعلام السابقة
            Me
.DataGridView1.Item(1Me.DataGridView1.CurrentCell.RowIndex).Value cmd.ExecuteScalar
        End Using

    End 
If
End Sub 
فين النقطة اللي اشكلت عليك في الكود؟
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
تم الشكر بواسطة:
#6
اخوي ابوعمر انا ارفقت صورة فيها طريقة الكود الي انا استخدمه ارجو منك الاطلاع 

وكيف اعدل عليه

هذا الكود
مع العلم ان حقل الرقم هوا = Doc
وحقل الأسم = Name

Private Sub CellTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

If Me.DataGridView1.CurrentCell.ColumnIndex = 0 Then

DA = New SqlClient.SqlDataAdapter("SELECT [Name] FROM [Doctor] WHERE [Doc] = ?", DB)
DA.Fill(DT)
cmd.Parameters.AddWithValue("@id", Val(CType(sender, DataGridViewTextBoxEditingControl).Text))


Me.DataGridView1.Item(1, Me.DataGridView1.CurrentCell.RowIndex).Value = cmd.ExecuteScalar
End Using

End If
End Sub


الملفات المرفقة صورة/صور
   
الرد }}}}
تم الشكر بواسطة:
#7
اذا الخطأ اللي في الصورة تقصد
استبدل
cmd
ب
da
وجرب

اه
واحذف
end using
لانك ما استخدمته اساسا
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
تم الشكر بواسطة:
#8
طيب اخوب ابوعمر في هذا الكود وين اخليه يبحث

DA = New SqlClient.SqlDataAdapter("SELECT [Name] FROM [Doctor] WHERE [Doc] =?????????????????", DB)
الرد }}}}
تم الشكر بواسطة:
#9
لو ترفع مثال الله يحفظك
تريح نفسك وتريحني معك
وابشر معك لين تقول انتهيت ان شاء الله
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
تم الشكر بواسطة:
#10
الله يوفقك
طيب طيب برفق المثال
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Star [VB.NET] السلام عليكم اخوتي ف المنتدى احتاج الي مساعدة انا اصمم منظومة لشؤون العاملين بعد اض fatma anari 2 79 أمس, 11:04 AM
آخر رد: أبوبكر سويدان
  طلب مساعدة ناتج طرح عددين قيمة سالبه khalaroy 2 46 01-12-16, 03:09 AM
آخر رد: khalaroy
  [سؤال] مساعدة في الفيجوال بيسك عبدالرحمن المكاوي 1 59 28-11-16, 02:11 PM
آخر رد: عبدالرحمن المكاوي
  مساعدة في عمل برنامج rabeh.ram 4 171 27-11-16, 12:29 AM
آخر رد: rabeh.ram
  مساعدة في انشاء ثيم عبدالرحمن المكاوي 11 286 25-11-16, 11:57 AM
آخر رد: العزابي
  مساعدة في عرض البيانات في التقرير haiderkh 1 71 21-11-16, 11:24 PM
آخر رد: السرور
  التعديل علي datagridview باستخدام sql command dark1459 6 132 21-11-16, 11:55 AM
آخر رد: dark1459
  [VB.NET] DataGridView بطيء جدا ساعدوني لاجد حل dubai.eig 4 135 20-11-16, 09:22 PM
آخر رد: ابو ليلى
  اضافة عمود من نوع image ل bound datagridview noway 1 69 17-11-16, 12:08 PM
آخر رد: Genius Live
  مساعدة بخصوص Listbox CLARO 3 79 16-11-16, 06:15 PM
آخر رد: silverlight

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


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