04-01-23, 10:06 PM
(04-01-23, 04:29 AM)Taha Okla كتب : لو كان الجدول (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
أما طريقة عرض النافذة الجديدة ، فلن تعجز عنها، كذلك إضافة حدث النقر أو اختيار أي عنصر من الداتا جريد لإضافته للقائمة في التي تريد (بنفس كودك)
وفقك الله ..
مشكور جدا على اهتمامك
لكن ممكن لو سمحت تعدل لي هذا الكود
كود :
Public Function GetPriceMore1() As Boolean
con = New SqlConnection(cs)
If con.State = 1 Then con.Close()
con.Open()
cmd = New SqlCommand("Select * from Product_Tbl Where ProductSale1 > 0", con)
cmd.Parameters.AddWithValue("@ProductSale1", Frm_Add_Product.TxtProductSale1.Text)
rdr = cmd.ExecuteReader
rdr.Read()
If rdr.HasRows Then
FormX.Show()
End If
rdr.Close()
con.Close()
End Functionيفتح فورم formx
