الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[سؤال]: تحديث كمية البضاعة الموجودة

بدأه Mohamed-Riadh في 13 ديسمبر 2009 · 5 رد · 1,279 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوتي الكرام

أرجوا أن يدلني أحد على كيفية تحديث كمية البضاعة الموجودة بعد عمل الفاتورة.

سوف أشرح الموضوع بأكثر تفصيل

لدي جدول ARTICLES الخاص بالبضائع

يوجد فيه حقل اسمه QTEDISP اي الكمية المتبقية

ولدي في فورم اضافة فاتورة DATAGRIDVIEW فيها الحقول الخاصة بالفاتورة من اسم الفاتورة والسعر والكمية

وأنا عامل LOOP حتى يتم عمل INSERT في جدول DETAILS_FACTURES لكل بيانات الفاتورة.

أريد عمل التالي:

عند الضغط على زر الحفظ فانه في كل خطوة من LOOP يتم انقاص كمية السلعة بناء على اسم السلعة الموجودين في DATAGRIDVIEW

(المشكل أني لا أتقن كيفية التعامل الجيد مع حقول الDATAGRIDVIEW )

أرجوا أن يكون المشكل قد توضح وأنا جاهز لمزيد من الشرح

وشكرا

#2

أولا يوجد بينكم من يدلني على الحل بارك الله فيكم ؟

#3
Mohamed-Riadh كتب:

أولا يوجد بينكم من يدلني على الحل بارك الله فيكم ؟

السلام عليكم ورحمة الله وبركاته

بص انا حتخيل انت تقصد ايه بالضبط وححاول افيدك

1- DataGridView ايه اللى مليها بيانات نفترض انها مليانة من DataSet تمام. طيب ال DataSet دى جواها حاجة ؟ اه طبعا جواها DataTable اذا انا عندى DataSet.DataTable تمام؟

طيب وانت بتلوب على DataGridView طبعا انت بتلوب عليها كلها من اول Raw الى اخر Raw حتعمل كوماند Update كل ما يلوب ينفذ الكوماند ده وطبعا ياريت يكون فيه Transaction طيب حوصل ازاى لاسم السلعة و الكمية المراد حذفها او اضافتها زى ما تحب؟

حعملك مثال توضيحى

for i as integer = 0 to DataSet.DataTable.Raws.Count - 1

1 - جيب اسم السلعة ولنفترض انها فى العمود الاول من الجدول الموجود فى الداتا سيت

اسم السلعة = DataSet.DataTable.Raw(i)(0)

كده جبت اسمها شيله فى متغير زى ما تحب

2 - جيب الكمية اللى عايز تنقصا او تضيفا على فرض ان الكمية موجودة فى العمود الثالث فى الجدول

الكمية = dataset.datatable.raw(i)(2)

كده انا جبت الكمية و اسم السلعة اعمل كوماند يسلكت الكمية الاصلية من الجدول ويعمل ابديت فى الكمية اذا كان بالطرح او الجمع

next

اولا انا اسف لانى مكنتش فاهم اوى الحالة وثانيا انا معنديش فيجوال بيسيك حاليا

فاتمنى انى على الاقل فتحتلك باب معرفة تدور فيه على اللى انت عايزه

اسف مرة تانية

#4
اقتباس
عند الضغط على زر الحفظ فانه في كل خطوة من LOOP يتم انقاص كمية السلعة بناء على اسم السلعة الموجودين في DATAGRIDVIEW

ينقصها منين بالضبط ؟

فيه شيء مش صحيح في هذا الكلام

المفروض ان فيه معادلة لخصم الكميات الوارده من الكميات المنصرفة بناء علي كود الصنف وليس اسم الصنف ويظهر هذا في تقرير ارصده المخازن

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 24 ديسمبر 2009 في 19:14

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

مشكور على الرد

في الحقيقة أنا لا أستخدم dataset

وهذا هو الكود المستخدم

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'تعيين طريقة الدفع
        If Me.RadioButton1.Checked = True Then Z = 1
        If Me.RadioButton2.Checked = True Then Z = 2
        If Me.RadioButton3.Checked = True Then Z = 3
        If Me.RadioButton4.Checked = True Then Z = 4

         'ادخال معلومات الفاتورة 
Try
            Dim ConStr As String = "Data Source=Riadh;Initial Catalog=StockGuard;Integrated Security=SSPI"
            Dim Conn As New SqlConnection(ConStr)
            Dim SavInto As New SqlCommand
            SavInto.Connection = Conn
            SavInto.CommandType = CommandType.Text
            SavInto.CommandText = "Insert Into Ventes(Code_cli,date_fact,remarque,Paiement)" & _
         "values('" & Me.TextBox4.Text & "','" & Me.DateTimePicker1.Text & "','" & Me.TextBox2.Text & "','" & Z & "')"
'inserer les details facture
            Dim DGVinto As New SqlCommand
            Dim i, Qte As Integer
            Dim Prix_Unit As Decimal
            Dim ref, designation As String
            Dim qtedispon As Integer
            Conn.Open()
            SavInto.ExecuteNonQuery()
            For i = 0 To DataGridView1.RowCount - 2

                ref = DataGridView1.Item(0, i).Value
                designation = DataGridView1.Item(1, i).Value
                Qte = DataGridView1.Item(2, i).Value
                Prix_Unit = DataGridView1.Item(3, i).Value
               'استرجاع الكمية الموجودة حاليا في جدول البضائع
                    Try
                    Dim QteDispo As New SqlCommand
                    Dim connex As New SqlConnection(ConStr)
                    QteDispo.Connection = Conn
                    QteDispo.CommandType = CommandType.Text
                    QteDispo.CommandText = "Select qtedisp From produits"
                    connex.Open()
                    qtedispon = QteDispo.ExecuteScalar()
                    Me.TextBox1.Text = X + 1
                    connex.Close()
                Catch ex As Exception
                    MsgBox(ex.Message, MsgBoxStyle.Critical)
                End Try
'ادخال تفاصيل الفاتورة 
                DGVinto.Connection = Conn
                DGVinto.CommandType = CommandType.Text
                DGVinto.CommandText = "Insert Into Detailes_Factures(ref,designation,qte,prix_unit,Num_fact) values('" & ref & "','" & designation & "','" & Qte & "','" & Prix_Unit & "','" & TextBox1.Text & "')"
                DGVinto.CommandText = "Update Produits Set Qtedisp=" & (qtedispon - Qte).ToString & " where designation='" & designation & "''"
            Next
            Conn.Close()
            X = Me.TextBox1.Text
            MsgBox("Nouvelle Facture Inserer Avec Succés", MsgBoxStyle.Information)
            Me.Button1.Enabled = True
            Me.Button4.Enabled = True
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


    End Sub

المشكل أن الكود ينفذ من دون خطأ ولكنه لايقوم بانقاص الكمية المطلوبة من البضائع

فماهو الحل بارك الله فيكم

#6

السلام عليكم ورحمة الله وبركاته

اخي الفاضل Mohamed-Riadh هنا أنت تصمم برنامج مخازن ولكل شيخ طريقة ولكن انا أفضل طريقة وجدتها في تصميم برنامج مخازن هي تصميم جدولين جدول للوارد وجدول للصادر وكل اداخال للمخزن يخزن كما هو في جدول الوارد وكل صرف يخزن كما هو في جدول الصادر ولمعرفة رصيد صنف ما يتم خصم الصادر من الوارد لتحصل على الرصيد اهتقد هذا أفضل كثيرا من أن تقوم بعملية الخصم والزيادة مع كل عملية أتمنى أن تكون وضحت الفكرة

مواضيع مشابهة