تقييم الموضوع :
  • 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 [email protected]"

 
       'مرحلة تنفيذ جملة الإستعلام ووضع قيمة الشرط في الحقل أو العامود الأول في الداتا غريد 
        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 
فين النقطة اللي اشكلت عليك في الكود؟
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
الرد
تم الشكر بواسطة:
#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
لانك ما استخدمته اساسا
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
الرد
تم الشكر بواسطة:
#8
طيب اخوب ابوعمر في هذا الكود وين اخليه يبحث

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] كيف اقوم بعمل فلتر DataGridView مرسل لها البيانات من فورم اخري dametucorazon 12 190 10-07-18, 06:03 PM
آخر رد: elgokr
  datagridview autofilter library abu ammar 3 70 09-07-18, 02:52 PM
آخر رد: elgokr
Sad [VB.NET] طلب مساعدة في برنامج للتحديث الروابط Salim sadek 4 91 06-07-18, 12:38 AM
آخر رد: elgokr
  [VB.NET] مساعدة محتاج خبراء ReportViewer dubai.eig 32 819 19-06-18, 09:47 AM
آخر رد: elgokr
Smile سؤال في ما يخص جمع كمية الاصناف على DataGridView kalammoufid 3 108 14-06-18, 07:54 PM
آخر رد: elgokr
  ممكن مساعدة في كود قريد فيو نور الهدى الهدى 3 89 13-06-18, 07:33 PM
آخر رد: elgokr
  مشكلة في الترقيم التلقائي DataGridView wweecw 5 194 13-06-18, 04:10 PM
آخر رد: larbihamri
  مساعدة في تشغيل برنامج على الشبكة ibrahimmakhool 3 173 13-06-18, 11:56 AM
آخر رد: elgokr
  احتاج مساعدة في كود التعديل maram2423 5 127 08-06-18, 03:53 PM
آخر رد: elgokr
  مساعدة بخصوص التاريخ تلقائيا ahmedfa71 3 96 07-06-18, 03:53 PM
آخر رد: elgokr

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


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