مبيعات الاصناف بناء على الحجم - h2551996 - 03-01-23
السلام عليكم
لدي برنامج مبيعاات فيجوال بيسك
عندي صنف ( عصير برتقال )
تصنيفه
( صغير - وسط - كبير - جالون - 1.5 جالون )
ونوع العرض بيكون داخل FlowLayoutPanel عند الضغط على الصنف ينتقل الى datagridview
( اسم المنتج - السعر - الكمية )
اريد ان اضيف اكثر من سعر تحت نفس المسمى
( صغير - وسط - كبير - جالون - 1.5 جالون )
ماهي افضل طريقة لعرض المنتج بأكثر من سعر
ويكون التصنيف حسب طلب العميل
وليس تصنيف اجباري
RE: مبيعات الاصناف بناء على الحجم - aljzazy - 03-01-23
بامكانك عمل جدول للاحجام مثل الوحدات تماما
عند ادخال المنتج تختار حجمه وكل حجم له سعر
وهنا يمكن ان يتكرر اسم المنتج لكن يكون له رقم وباركود مختلف
وهند العرض في البانل تعرض كل منتج بتعدد احجامه
لنفرض مثلا لدينا منتج اسمه بيتزا
البيتزا لها 3 احجام (صغير , وسط , كبير )
وكل حجم له سعر ويتم ادخال كل منتج بشكل منفرد بالجدول
يمكنك استدعاء المنتجات وسيتم عرضها حسب المدخل
RE: مبيعات الاصناف بناء على الحجم - h2551996 - 03-01-23
(03-01-23, 05:26 PM)aljzazy كتب : بامكانك عمل جدول للاحجام مثل الوحدات تماما
عند ادخال المنتج تختار حجمه وكل حجم له سعر
وهنا يمكن ان يتكرر اسم المنتج لكن يكون له رقم وباركود مختلف
وهند العرض في البانل تعرض كل منتج بتعدد احجامه
لنفرض مثلا لدينا منتج اسمه بيتزا
البيتزا لها 3 احجام (صغير , وسط , كبير )
وكل حجم له سعر ويتم ادخال كل منتج بشكل منفرد بالجدول
يمكنك استدعاء المنتجات وسيتم عرضها حسب المدخل
الطريقة موجودة اخي وهي من تصميمك
لكن انا اريد في حالة اكثر من سعر بيع لنفس الصنف
عند الضغط على الصنف تظهر قائمة اخرى
بالاحجام وسعرها
RE: مبيعات الاصناف بناء على الحجم - Taha Okla - 03-01-23
وعليكم السلام ورحمة الله وبركاته
اصنع جدول جديد للأصناف الفرعية (SubItems)
عند اضافة مادة جديدة تضع في مربع الاضافة - خيار : هل يوجد لها أصناف فرعية أم لا ..
إذا كان نعم تضيف الأصناف ضمن التبويب الفرعي في الجدول الجديد مع السعر والحجم وخلافه، وتأخذ الصفات الرئيسية من المسمى الأم,
عند عرض المنتجات وتختار منتج لاضافته للمبيعات : يذهب للبحث في جدول(SubItems) إن وجد نتائج عرضها قبل الاضافة، وإلا فيقوم بإضافة
المادة - لنافذة المبيعات .. أو .. أي نافذة لها - من جدول وصف المواد الرئيسي.
RE: مبيعات الاصناف بناء على الحجم - h2551996 - 03-01-23
(03-01-23, 09:21 PM)Taha Okla كتب : وعليكم السلام ورحمة الله وبركاته
اصنع جدول جديد للأصناف الفرعية (SubItems)
عند اضافة مادة جديدة تضع في مربع الاضافة - خيار : هل يوجد لها أصناف فرعية أم لا ..
إذا كان نعم تضيف الأصناف ضمن التبويب الفرعي في الجدول الجديد مع السعر والحجم وخلافه، وتأخذ الصفات الرئيسية من المسمى الأم,
عند عرض المنتجات وتختار منتج لاضافته للمبيعات : يذهب للبحث في جدول(SubItems) إن وجد نتائج عرضها قبل الاضافة، وإلا فيقوم بإضافة
المادة - لنافذة المبيعات .. أو .. أي نافذة لها - من جدول وصف المواد الرئيسي.
هذا كود عند الضغط على اسم الصنف يظهر الصنف وسعره داخل الجرد فيو
ممكن تعدل عليه بحيث
اذا موجود اكثر من سعر يظهر نافذة اخرى او باي طريقة كانت الاسعار والاحجام المختلفة
كود :
Public Sub Select_click(sender As Object, e As EventArgs)
Try
_ID = sender.Tag.ToString()
con = New SqlConnection(cs)
If con.State = 1 Then con.Close()
con.Open()
Dim cmd As New SqlCommand(" select * from Product_Tbl Where Product_ID Like '" & _ID & "%'", con)
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()
Catch ex As Exception
End Try
End Sub
لاني عجزت اضيف الكود بناء على امر اخر
RE: مبيعات الاصناف بناء على الحجم - Taha Okla - 04-01-23
لو كان الجدول (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
أما طريقة عرض النافذة الجديدة ، فلن تعجز عنها، كذلك إضافة حدث النقر أو اختيار أي عنصر من الداتا جريد لإضافته للقائمة في التي تريد (بنفس كودك)
وفقك الله ..
RE: مبيعات الاصناف بناء على الحجم - h2551996 - 04-01-23
(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: مبيعات الاصناف بناء على الحجم - ابو محمد محمد محمد - 30-07-23
كود :
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)
rdr = cmd.ExecuteReader
rdr.Read()
If rdr.HasRows Then
FormX.Show()
End If
rdr.Close()
con.Close()
End Function
RE: مبيعات الاصناف بناء على الحجم - h2551996 - 31-07-23
بردو نفس المشكلة ( بيفتح الفورم ) سواء في سعر ثاني او لا
|