منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] تعديل عدة سجلات - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] تعديل عدة سجلات (/showthread.php?tid=19015)



تعديل عدة سجلات - ابو يوسف النواوي 2 - 29-01-17

السلام عليكم
عندي جدول الاصناف بقاعدة بيانات sql server بها سعر الشراء وسعر البيع
وهناك عدة اصناف لهم نفس السعر
هل هناك طريقة اعدل بها الاسعار لاكثر من صنف دفعة واحدة
وشكرا مقدما


RE: تعديل عدة سجلات - ابو ليلى - 29-01-17

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

PHP كود :
Dim _Update As String "Update TableName Set Price=@Price Where Kind = @Kind"
 
       Using Cmd As New OleDb.OleDbCommand With {.CommandText _Update, .Connection Conn}
 
           Dim array() As String = {"قهوة""سكر""عصير"}

 
           For Each elem As String In array
 
               Cmd.Parameters.Clear()
 
               Cmd.Parameters.AddWithValue("@Price"500)
 
               Cmd.Parameters.AddWithValue("@kind"elem)
 
               Cmd.ExecuteNonQuery()
 
           Next

        End Using 



RE: تعديل عدة سجلات - ابو يوسف النواوي 2 - 29-01-17

(29-01-17, 08:46 PM)ابو ليلى كتب : انا عامل تيكست بوكس بكتب فيه السعر الجديد
و عامل داتا جريد فيو يعرض فيها اسم الصنف والسعر وعامل عمود نوع تشيك بوكس علشان اعمل سيليكت علي الاصناف اللي عاوز اعدل سعرها القديم بالسعر اللي موجود بالتيكست بوكس
هل كدة مظبوط ؟
ولا في طريقه تانية
لو مظبوط ممكن اعرف الكود يبقي ازاي ؟



RE: تعديل عدة سجلات - مساعدة - 29-01-17

السلام عليكم

تعديل في جزء من كود الأستاذ ابو ليلى حسب ما ذكرت آخراً

على اعتبار انه يوجد عمود باسم id وهو رقم الصنف في الجدول
وأن عمود التشيك بوكس هو الأول (0) وأن رقم الصنف id هو الثاني (1)
كود :
Dim ids As New List(Of Integer)
For Each r As DataGridViewRow In Me.DataGridView1.Rows
    If r.Cells(0).Value Then ids.Add(CInt(r.Cells(1).Value))
Next

Dim _Update As String = "Update [TableName] Set [Price]=@Price Where [ID] IN(" & String.Join(",", ids) & ") "

مع حذف سطر
كود :
Cmd.Parameters.AddWithValue("@kind", elem)



RE: تعديل عدة سجلات - ابو يوسف النواوي 2 - 29-01-17

(29-01-17, 09:37 PM)مساعدة كتب : السلام عليكم

تعديل في جزء من كود الأستاذ ابو ليلى حسب ما ذكرت آخراً

على اعتبار انه يوجد عمود باسم id وهو رقم الصنف في الجدول
وأن عمود التشيك بوكس هو الأول (0) وأن رقم الصنف id هو الثاني (1)
كود :
Dim ids As New List(Of Integer)
For Each r As DataGridViewRow In Me.DataGridView1.Rows
   If r.Cells(0).Value Then ids.Add(CInt(r.Cells(1).Value))
Next

Dim _Update As String = "Update [TableName] Set [Price]=@Price Where [ID] IN(" & String.Join(",", ids) & ") "

مع حذف سطر
كود :
Cmd.Parameters.AddWithValue("@kind", elem)

تمام هجرب واوافيكم بالاخبار جزاكم الله خيرا

(29-01-17, 08:46 PM)ابو ليلى كتب : يا ابو يوسف
حدد اصنافك التي تريد تعديل اسعارها في مصفوفة
ثم اجعل شرط التحديث وفق عناصر المصفوفة
مثال

PHP كود :
Dim _Update As String "Update TableName Set Price=@Price Where Kind = @Kind"
 
       Using Cmd As New OleDb.OleDbCommand With {.CommandText _Update, .Connection Conn}
 
           Dim array() As String = {"قهوة""سكر""عصير"}

 
           For Each elem As String In array
 
               Cmd.Parameters.Clear()
 
               Cmd.Parameters.AddWithValue("@Price"500)
 
               Cmd.Parameters.AddWithValue("@kind"elem)
 
               Cmd.ExecuteNonQuery()
 
           Next

        End Using 

جزاك الله خيرا


RE: تعديل عدة سجلات - ابو ليلى - 29-01-17

نشكر الاخ مساعدة على مساهمته

بما انه عندك حقل من نوع CheckBox فنحن سنمر على خلايا DataGridView و نقوم بعمل فحص لهذا الحقل
و اذا كان الحقل معلم ساقوم بنسخ قيمة حقل الصنف الى مصفوفه , المصفوفة ستحتوي على الاصناف المراد تحديثها

و بعدها ساستفيد من الحقول داخل المصفوفة و اقوم بالتحديث وفق الطريقة السابقة 

PHP كود :
Dim Array As New List(Of String)
 
       For Each Row As DataGridViewRow In DataGridView1.Rows
            If CType
(Row.Cells("IsUpdate"), DataGridViewCheckBoxCell).Value True Then
                Array
.Add(Row.Cells("Kind").Value)
 
           End If
 
       Next

  UpdateMultiKind
(Array) 

الحقل IsUpdate يمثل اسم CheckBox
الحقل Kind يمثل حقل الصنف

انا فصلت كود التحديث في اجراء منفصل كما يلي


PHP كود :
   Private Sub UpdateMultiKind(ByVal Array As List(Of String))
 
       If Array.Count 0 Then
            Dim _Update 
As String "Update TableName Set Price=@Price Where Kind = @Kind"
 
           Using Cmd As New OleDb.OleDbCommand With {.CommandText _Update, .Connection Conn}
 
               For Each elem As String In Array
 
                   Cmd.Parameters.Clear()
 
                   Cmd.Parameters.AddWithValue("@Price"TextBox1.Text)
 
                   Cmd.Parameters.AddWithValue("@kind"elem)
 
                   Cmd.ExecuteNonQuery()
 
               Next

            End Using

        End 
If

 
   End Sub 




RE: تعديل عدة سجلات - ابو يوسف النواوي 2 - 30-01-17

(29-01-17, 10:08 PM)ابو ليلى كتب : نشكر الاخ مساعدة على مساهمته

بما انه عندك حقل من نوع CheckBox فنحن سنمر على خلايا DataGridView و نقوم بعمل فحص لهذا الحقل
و اذا كان الحقل معلم ساقوم بنسخ قيمة حقل الصنف الى مصفوفه , المصفوفة ستحتوي على الاصناف المراد تحديثها

و بعدها ساستفيد من الحقول داخل المصفوفة و اقوم بالتحديث وفق الطريقة السابقة 

PHP كود :
Dim Array As New List(Of String)
 
       For Each Row As DataGridViewRow In DataGridView1.Rows
            If CType
(Row.Cells("IsUpdate"), DataGridViewCheckBoxCell).Value True Then
                Array
.Add(Row.Cells("Kind").Value)
 
           End If
 
       Next

  UpdateMultiKind
(Array) 

الحقل IsUpdate يمثل اسم CheckBox
الحقل Kind يمثل حقل الصنف

انا فصلت كود التحديث في اجراء منفصل كما يلي


PHP كود :
   Private Sub UpdateMultiKind(ByVal Array As List(Of String))
 
       If Array.Count 0 Then
            Dim _Update 
As String "Update TableName Set Price=@Price Where Kind = @Kind"
 
           Using Cmd As New OleDb.OleDbCommand With {.CommandText _Update, .Connection Conn}
 
               For Each elem As String In Array
 
                   Cmd.Parameters.Clear()
 
                   Cmd.Parameters.AddWithValue("@Price"TextBox1.Text)
 
                   Cmd.Parameters.AddWithValue("@kind"elem)
 
                   Cmd.ExecuteNonQuery()
 
               Next

            End Using

        End 
If

 
   End Sub 


تسلم الكود اشتغل تمام بارك الله فيك


RE: تعديل عدة سجلات - ابو ليلى - 30-01-17

(30-01-17, 12:48 AM)khodor1985 كتب : السلام عليكم إخواني الأعزاء ورحمة الله وبركاته
لنفترض أن عملية التعديل (دفعة واحدة) على مجموعة من الأصناف سوف تنفذ من خلال أكثر من مستخدم، برأيكم أي تعديل سوف يسجل أو يؤثر على قاعدة البيانات؟

وعليكم السلام و رحمة الله و بركاته
اهلا بك اخي خضر 
معك حق في هذا التعليق , نحن اجبنا على قدر السؤال فقط
الواصل اخيراً سيرح التعديل (هذه هي القاعدة)
و بالنسبة لبيئة تعدد المستخدمين يجب على الاخ ان ينتبه الى (انتهاك تزامن البيانات ) (ConCurrency Exptions)
و يحسب حسابه بالحلول المناسبة 

التعديل على الاسعار و ليس على الاصناف