لو كان الجدول (
Product_Tbl) يعرض كل الأصناف الفرعية للمادة نفسها بحسب (الحجم أو اللون أو السعر أو .. إلخ)..
فإن الكود المذكور حتى السطر التالي :
كود :
Dim cmd As New SqlCommand(" select * from Product_Tbl Where Product_ID Like '" & _ID & "%'", con)
حتى هذا السطر صحيح،
لكن نضيف بعده تعريف لـ (DataTable) ونخزن فيها النتيجة (هو أكيد فيه نتيجة لأننا نبحث عن سجل تم اختياره من قائمة موجودة) بالكود التالي :
نعرف ثم نعبئ النتيجة بالجدول الافتراضي :
كود :
Dim dt As New DataTable
dt.Load(cmd.ExecuteReader)
بعدها نحاول أن نعرف كم عدد السجلات المشابهة :
1- اذا كانت سجل واحد ، نطبق الكود الذي ذكرته أنت.
2- إذا كان أكثر من سجل، نعرض نافذة جديدة في (DataGridView1) يعرض كل النتائج .
واختيار أي مادة منها يتم تعبئته كما فعلت أنت بكودك ولكن من خلال النافذة الجديدة والنقر أو الاختيار من(DataGridView1)
وذلك من خلال الكود التالي :
كود :
If dt.Rows.Count = 1 Then
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
dr.Read()
If dr.HasRows Then
_Name = dr("ProductName").ToString
_BuyPrice = dr("ProductBuy").ToString
_SalePrice = dr("ProductSale").ToString
_Barcode = dr("ProductCode").ToString
End If
dr.Close()
con.Close()
For i As Integer = 0 To Dgv.Rows.Count - 1
If Dgv.Rows(i).Cells(0).Value = _ID Then
Dgv.Rows(i).Cells(4).Value = Dgv.Rows(i).Cells(4).Value + 1
Dgv.Rows(i).Cells(5).Value = Dgv.Rows(i).Cells(5).Value + _SalePrice
InvoiceTotal()
Exit Sub
End If
Next
Dim x As Integer
Dgv.Rows.Add()
x = Dgv.Rows.Count - 1
Dgv(0, x).Value = _ID
Dgv(1, x).Value = _Barcode
Dgv(2, x).Value = _Name
Dgv(3, x).Value = _SalePrice
Dgv(4, x).Value = 1
Dgv(5, x).Value = Dgv(3, x).Value * 1
Dgv(6, x).Value = _SalePrice - _BuyPrice
InvoiceTotal()
ElseIf dt.Rows.Count > 1 Then
' هنا تضع كود فتح النافذة الجديدة التي عليها الداتاجريد وتعرض فيها كل المواد
End If
أما الكود الذي تضعه في حال أكثر من سجل :
هو عرض النافذة الجديدة وتعبئة البيانات في الداتا جريد من خلال الكود التالي بعد فتح النافذة الجديدة(
FormX) :
كود :
FormX.DataGridView1.DataSource = dt
أما طريقة عرض النافذة الجديدة ، فلن تعجز عنها، كذلك إضافة حدث النقر أو اختيار أي عنصر من الداتا جريد لإضافته للقائمة في التي تريد (بنفس كودك)
وفقك الله ..