تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مبيعات الاصناف بناء على الحجم
#7
(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
بحيث انه لو  ProductSale1 في قاعدة البيانات اكبر من 0 
يفتح فورم formx
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: مبيعات الاصناف بناء على الحجم - بواسطة h2551996 - 04-01-23, 10:06 PM


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


يقوم بقرائة الموضوع: