منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ماهى عملية الضرب داخل sql
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
PHP كود :
"Update report_Store Set Qty = Qty + " Dgv_prd2.Rows(i).Cells(4).Value " , totalPrice =Qty * SellPrice  Where Prd_ID = @Prd_ID" 

كل العمليات الحسابية  + - / تنجح معى الا *  عملية الضرب 
ف انا اريد ضرب عمودين فى سيكوال 
اول شئ بقولة الكمية هاتها من الداتا جريد فيو
ثم اضرب الكمية فى سعر البيع 
ولكن النتيجة تعطينى صفر فى كل مرة  رغم ان كلا من السعر او الكمية اكبر من 10 
يعنى مفيش حاجه منهم صفر
كود :
Dim Qty As String = Dgv_prd2.Rows(i).Cells(4).Value

"Update report_Store Set Qty = Qty + " & Qty & " , totalPrice = (Qty + " & Qty & ") * SellPrice Where Prd_ID = @Prd_ID"
الله اعلم أن الكمية السابقة في قاعدة البيانات صفر، 
يجب عليك تعديل الكمية في قاعدة البيانات أولا قبل أن تقوم بعملية ضرب الكمية في السعر
لا يمكن عمل هذا الإجراء في سطر واحد بالطريقة التي ذكرتها أنت.
أو أن تقوم بإعطاء الكمية مباشرة من الـ DataGridView كما وضعت لك المثال.
(03-12-22, 03:53 PM)عبدالله الدوسري كتب : [ -> ]
كود :
Dim Qty As String = Dgv_prd2.Rows(i).Cells(4).Value

"Update report_Store Set Qty = Qty + " & Qty & " , totalPrice = (Qty + " & Qty & ") * SellPrice Where Prd_ID = @Prd_ID"
الله اعلم أن الكمية السابقة في قاعدة البيانات صفر، 
يجب عليك تعديل الكمية في قاعدة البيانات أولا قبل أن تقوم بعملية ضرب الكمية في السعر
لا يمكن عمل هذا الإجراء في سطر واحد بالطريقة التي ذكرتها أنت.
أو أن تقوم بإعطاء الكمية مباشرة من الـ DataGridView كما وضعت لك المثال.

شكرا لك اخى واستاذى 
تم الحل بفضل الله ثم بفضل خبرتك ومساعدتك لى
اشكرررك جدا
(04-12-22, 07:10 AM)حماده ممدوح البحيرى كتب : [ -> ]
(03-12-22, 03:53 PM)عبدالله الدوسري كتب : [ -> ]
كود :
Dim Qty As String = Dgv_prd2.Rows(i).Cells(4).Value

"Update report_Store Set Qty = Qty + " & Qty & " , totalPrice = (Qty + " & Qty & ") * SellPrice Where Prd_ID = @Prd_ID"
الله اعلم أن الكمية السابقة في قاعدة البيانات صفر، 
يجب عليك تعديل الكمية في قاعدة البيانات أولا قبل أن تقوم بعملية ضرب الكمية في السعر
لا يمكن عمل هذا الإجراء في سطر واحد بالطريقة التي ذكرتها أنت.
أو أن تقوم بإعطاء الكمية مباشرة من الـ DataGridView كما وضعت لك المثال.

شكرا لك اخى واستاذى 
تم الحل بفضل الله ثم بفضل خبرتك ومساعدتك لى
اشكرررك جدا
و لكن اشرح لنا كيف تم الحل حتى نستفيد منك و لك الشكر 
Big Grin
(17-12-22, 02:08 PM)kebboud كتب : [ -> ]
(04-12-22, 07:10 AM)حماده ممدوح البحيرى كتب : [ -> ]
(03-12-22, 03:53 PM)عبدالله الدوسري كتب : [ -> ]
كود :
Dim Qty As String = Dgv_prd2.Rows(i).Cells(4).Value

"Update report_Store Set Qty = Qty + " & Qty & " , totalPrice = (Qty + " & Qty & ") * SellPrice Where Prd_ID = @Prd_ID"
الله اعلم أن الكمية السابقة في قاعدة البيانات صفر، 
يجب عليك تعديل الكمية في قاعدة البيانات أولا قبل أن تقوم بعملية ضرب الكمية في السعر
لا يمكن عمل هذا الإجراء في سطر واحد بالطريقة التي ذكرتها أنت.
أو أن تقوم بإعطاء الكمية مباشرة من الـ DataGridView كما وضعت لك المثال.

شكرا لك اخى واستاذى 
تم الحل بفضل الله ثم بفضل خبرتك ومساعدتك لى
اشكرررك جدا
و لكن اشرح لنا كيف تم الحل حتى نستفيد منك و لك الشكر 
Big Grin






اهلا بيك اخى الكريم 
بص انا هحط لك الكود كله بحيث تفهم منه ويمكنك اخذ منه ما يناسبك
دا المفروض بعد م بندوس طباعه فاتورة الكاشير بنفعل الصب دا
كود :
 Public Sub InsertStore()
       '****************************دا عشان مخزن الماركت وبالاخص تقرير المباع يوميا
       '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


       For i As Integer = 0 To Dgv_prd2.Rows.Count - 1
           Dim _Qty As String = Dgv_prd2.Rows(i).Cells(4).Value
           Dim _price As String = Dgv_prd2.Rows(i).Cells(5).Value
           Dim cmd1 As New SqlCommand("select * from report_Store where Prd_ID =@Prd_ID ", Con)
           cmd1.Parameters.Clear()
           cmd1.Parameters.AddWithValue("@Prd_ID", SqlDbType.Int).Value = Dgv_prd2.Rows(i).Cells(1).Value
           Dim dt As New DataTable
           Dim adp As New SqlDataAdapter(cmd1)
           adp.Fill(dt)
           If dt.Rows.Count > 0 Then
               Dim Cmd2 As New SqlCommand
               With Cmd2
                   .Connection = Con
                   .CommandType = CommandType.Text
                   .CommandText = "Update report_Store Set Qty = Qty + " & _Qty & " , BuyPrice = (Qty + " & _Qty & ") * SellPrice Where Prd_ID = @Prd_ID"
                   .Parameters.Clear()
                   .Parameters.AddWithValue("@Prd_ID", SqlDbType.Int).Value = Dgv_prd2.Rows(i).Cells(1).Value
               End With
               If Con.State = 1 Then Con.Close()
               Con.Open()
               Cmd2.ExecuteNonQuery()
               Con.Close()
               Cmd2 = Nothing
           Else
               Dim Cmd3 As New SqlCommand
               With Cmd3
                   .Connection = Con
                   .CommandType = CommandType.Text
                   .CommandText = "Insert Into report_Store ( Prd_ID,Qty,BuyPrice,SellPrice)values(@Prd_ID,@Qty,@BuyPrice,@SellPrice)"
                   .Parameters.Clear()
                   .Parameters.AddWithValue("@Prd_ID", SqlDbType.Int).Value = Dgv_prd2.Rows(i).Cells(1).Value
                   .Parameters.AddWithValue("@Qty", SqlDbType.VarChar).Value = _Qty
                   .Parameters.AddWithValue("@BuyPrice", SqlDbType.Decimal).Value = _price * _Qty
                   .Parameters.AddWithValue("@SellPrice", SqlDbType.Decimal).Value = Dgv_prd2.Rows(i).Cells(5).Value
               End With
               If Con.State = 1 Then Con.Close()
               Con.Open()
               Cmd3.ExecuteNonQuery()
               Con.Close()
               Cmd3 = Nothing
           End If
       Next

   End Sub
(17-12-22, 02:08 PM)kebboud كتب : [ -> ]
(04-12-22, 07:10 AM)حماده ممدوح البحيرى كتب : [ -> ]
(03-12-22, 03:53 PM)عبدالله الدوسري كتب : [ -> ]
كود :
Dim Qty As String = Dgv_prd2.Rows(i).Cells(4).Value

"Update report_Store Set Qty = Qty + " & Qty & " , totalPrice = (Qty + " & Qty & ") * SellPrice Where Prd_ID = @Prd_ID"
الله اعلم أن الكمية السابقة في قاعدة البيانات صفر، 
يجب عليك تعديل الكمية في قاعدة البيانات أولا قبل أن تقوم بعملية ضرب الكمية في السعر
لا يمكن عمل هذا الإجراء في سطر واحد بالطريقة التي ذكرتها أنت.
أو أن تقوم بإعطاء الكمية مباشرة من الـ DataGridView كما وضعت لك المثال.

شكرا لك اخى واستاذى 
تم الحل بفضل الله ثم بفضل خبرتك ومساعدتك لى
اشكرررك جدا
و لكن اشرح لنا كيف تم الحل حتى نستفيد منك و لك الشكر 
Big Grin

كـ تبسيط للأمر :
-في البداية هو كان يكتب ضمن الاجراء هكذا :
كود :
"Update report_Store Set Qty = Qty + " & Qty & " , totalPrice = (Qty) * SellPrice Where Prd_ID = @Prd_ID"

يعني يجمع الكميتين (الكمية التي في النافذة مع الكمية التي في القاعدة) : 
لو فرضنا أن لكل متغير رقم  للتمييز بينها مثلاً :
(Qty1) الكمية القديمة في قاعدة البيانات،،
(Qty2) الكمية في قاعدة البيانات،، 
(Qty0) الكمية الجديدة بعد الجمع في قاعدة البيانات

فيظن أنها أصبحت بهذا الشكل :
كود :
"Update report_Store Set Qty0 = Qty1 + " & Qty2 & " , totalPrice = (Qty0) * SellPrice Where Prd_ID = @Prd_ID"

لكن في الحقيقة أنه في الجزء التالي (totalPrice = (Qty0) * SellPrice)
لازالت (Qty0 Qty1 وليس المجموع (Qty0 = Qty1+Qty2 لأن الأمر لم يتم تنفيذه بعد لأن التنفيذ سيكون مباشر على كل الحقول بنفس الوقت(كأنه بنفس الوقت).
لذلك كان عليه التصحيح وليكتب (totalPrice = (Qty1+Qty2) * SellPrice)
   
والتي كتبها هكذا -- لو وضعناها مع الأرقام : ( totalPrice = (Qty1 + " & Qty2 & ") * SellPrice)
والتي هي بالأصل : ( totalPrice = (Qty + " & Qty & ") * SellPrice)

يعني : نجمع الكميتين ثم نضرب بـ سعر الوحدة أو تكلفتها .. أو أي رقم .. 
ولاحظ أنه وضع الجمع بين قوسين وذلك ليتم الجمع أولاً ثم يضرب بالسعر.