(28-03-17, 07:56 PM)billyalhaj.2011 كتب : اخي حريف هذا مثال توضيحي بسيط ..
مرحبا أخي العزيز
احنا هنا أخوه نستفيد من بعض
العضو اللي يريد مساعدة لا بد يساعد الاعضاء في ارفاق مثال بسيط مع قاعدة البيانات وشرح المطلوب ليجد الحل بسرعه .
والأخ مساعدة معروف بمساعدة الاعضاء وانا من الشاهدين .
على العموم حصل خير .
مثالك اللي ارفقته قمت بحل المشكلة ولن استطيع ارفاق المثال لأني اعمل على اصدار 2017 فلن يعمل لديك .
ضع هذا الكود في اي مكان في الفورم وقم باختيار اي منتج من الكومبوبوكس الموجود في القريد والنقر على زر انتر
كود :
Private Sub dgv1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles dgv1.CellEndEdit
Try
cmd = New SqlCommand("SELECT unit FROM table_1 where Product = @pr", con)
cmd.Parameters.Add("@pr", SqlDbType.NVarChar).Value = dgv1.Rows(e.RowIndex).Cells(0).Value
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader
If dr.Read = True Then
dgv1.Rows(e.RowIndex).Cells(1).Value = dr!unit
Me.TextBox1.Text = dr.Item(0)
Else
Exit Sub
End If
dr.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Sub
ولكن لو تريد طريقة أكثر أحترافية :
احذف الكومبو من القريد
وادخل حقل الآيدي في القريد
والكتابة في خلية الآيدي والنقر على انتر سوف يجلب لك البيانات افضل من فتح الكومبو واختيار ....
لأن كومبو القريد غير سلس في التعامل
اعمل الفورم بالشكل هذا :
الخطوة الثانية امسح كامل الكود الموجود في الفورم والصق هذا :
كود :
Imports System.Data.SqlClient
Imports System.Data.SqlClient.SqlCommand
Imports System.Data.SqlClient.SqlDataReader
Public Class Form1
Dim con As New SqlConnection("server=(Local); database= testdgv; integrated security=true")
Dim da As SqlDataAdapter
Dim dt As New DataTable
Dim cmd As New SqlCommand
Dim cmdb As New SqlCommandBuilder
Dim d As Date = Date.Today
Dim dst As New DataSet
Dim dv As New DataView
Private Sub Dgv1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles dgv1.CellEndEdit
cmd = New SqlCommand("SELECT Product,unit FROM table_1 where id = @id", con)
cmd.Parameters.Add("@id", SqlDbType.NVarChar).Value = dgv1.Rows(e.RowIndex).Cells(0).Value
If con.State = ConnectionState.Closed Then con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader
If dr.Read = True Then
dgv1.Rows(e.RowIndex).Cells(1).Value = dr!Product 'dr!field name Is ok, correct
dgv1.Rows(e.RowIndex).Cells(2).Value = dr!unit
dgv1.AllowUserToAddRows = True
dgv1.CurrentCell = dgv1.Rows(e.RowIndex + 1).Cells(0) 'وضع المؤشر في الخلية الآولى في سطر جديد + 1
'Me.TextBox1.Text = dr.Item(1) ' item(0) Product \\ item(1) unit \\ "SELECT Product,unit FROM table_1 where id = @id"
Else
dgv1.AllowUserToAddRows = False
dgv1.CurrentCell = dgv1.Rows(e.RowIndex).Cells(0) 'وضع المؤشر في الخلية نفسها لعدم وجود المنتج
MsgBox("Product Not Found")
dgv1.Rows(e.RowIndex).Cells(0).Value = "" 'تفريغ الخلية
End If
dr.Close()
If con.State = ConnectionState.Open Then con.Close()
End Sub
End Class
اي شي غير واضح تفضل بالسؤال .