منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
سؤال بخصوص تحديث بيانات DataGridView - نسخة قابلة للطباعة

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

الصفحات: 1 2


سؤال بخصوص تحديث بيانات DataGridView - abdullhadi999 - 05-01-19

[attachment=20556]السلام عليكم ورحمة الله وبركاته ...

اخواني الاعزاء لدي سؤال بخصوص الداتاجريد في الوضع المنفصل . 

قمت بعمل كائن COMMAND لتنفيذ اوامر الاضافة والحذف والتحديث والتعديل . وقمت باستخدام الخاصية ( FORM_LOAD ( SENDER , E) 
لتحديث التغييرات على الداتاجريد وقد نجح في أمر الاظافة فقط اما بقية الاوامر ايظا فقد نجح ايظاً ولكن يعطيني رسالة كالتالي : 


RE: سؤال بخصوص تحديث بيانات DataGridView - اسامه الهرماوي - 05-01-19

ممكن الكود المستخدم في هذه العملية..
لكي يتم اصلاحة..


RE: سؤال بخصوص تحديث بيانات DataGridView - abdullhadi999 - 05-01-19

شكرا جزيلا اخي اسامة هذه الاكواد التي لاتقبل التحديث 

تم الاعلان عنها في موديول عام وتم استدعائها من خلال الازرار في الفورم طبعا انا عملت الاظافة والتحديث والحذف لجدولين كما ستلاحظ ونجحت معي فقط عملية الاظافة 

في البداية هذه اوامر الحذف :
كود :
   Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As TextBox)

       Dim CmdDelete As New SqlCommand
       With CmdDelete
           .Connection = Con
           .CommandType = CommandType.Text
           .CommandText = "Delete  From custdy_movement   Where custdy_code = " & Val(Txtcustdy_codeW.Text) & ""
       End With
       Try
           If Con.State = 1 Then Con.Close()
           Con.Open()
           CmdDelete.ExecuteNonQuery()
           Con.Close()
           MsgBox("تم حذف السجل", MsgBoxStyle.Information, "حذف")
           CmdDelete = Nothing
       Catch ex As Exception
           Con.Close()
           MsgBox(Err.Description, MsgBoxStyle.Information)
       Finally
           If Con.State = ConnectionState.Open Then Con.Close()
       End Try
 End Sub

كود :
Public Sub DeleteRowFrom_category_movement(ByVal TxtIDW As TextBox)

كود :
        Dim CmdDelete As New SqlCommand

كود :
        With CmdDelete

كود :
            .Connection = Con

كود :
            .CommandType = CommandType.Text

كود :
            .CommandText = "Delete  From category_movement   Where ID = " & Val(TxtIDW.Text) & ""

كود :
        End With

كود :
        Try

كود :
            If Con.State = 1 Then Con.Close()

كود :
            Con.Open()

كود :
            CmdDelete.ExecuteNonQuery()

كود :
            Con.Close()

كود :
            MsgBox("تم حذف السجل", MsgBoxStyle.Information, "حذف")

كود :
            CmdDelete = Nothing

كود :
        Catch ex As Exception

كود :
            Con.Close()

كود :
            MsgBox(Err.Description, MsgBoxStyle.Information)

كود :
        Finally

كود :
            If Con.State = ConnectionState.Open Then Con.Close()

كود :
        End Try

كود :
    End Sub

هذا امر استدعاء الحذف

    Private Sub BarButtondelete_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtondelete.ItemClick
        If MessageBox.Show("هل أنت متأكد من مواصلة عملية الحذف؟", "تنبيه", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.No Then
            Exit Sub
        Else
            Try
                DeleteRowFrom_custdy_movement(Txtcustdy_code)
                DeleteRowFrom_category_movement(TxtID)


            Catch ex As Exception
                Exit Sub
            End Try

        End If
        Tools_ReadOnly(True)
        Tools_Enabled(False)

        BarButtonsave.Enabled = False
        BarButtonCancel.Enabled = False
        BarButtonNew.Enabled = True
        BarButtonupdate.Enabled = True
        BarButtondelete.Enabled = True
        BarButtonEdit.Enabled = True
        BarButtonSaveEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
        Try
            Form2_Load(sender, e)

        Catch ex As Exception
            Exit Sub
        End Try
    End Sub

 
ونفس الحال بالنسبة للتعديل اخي اسامة . شكرا جزيلا

اسف اخ اسامة الكود الثاني اتى بهذا الشكل


RE: سؤال بخصوص تحديث بيانات DataGridView - عبد العزيز البسكري - 06-01-19

السّلام عليكم و رحمة الله و بركاته
كان من الأفضل وضع المشكلة بذاتها بفورم بسيط للتأكّد أكثر و مع ذلك و إضافة لما قد ينظر به أخي الغالي " أسامة " ..
أخي الكريم " عبد الله " ..
لماذا أكثرت من عبارة Try .. فواحدة قد تكفي .. لم أجرّب .. فقط نظريا .. حاول هكذا لو سمحت
كود :
Private Sub BarButtondelete_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtondelete.ItemClick
       If MessageBox.Show("هل أنت متأكد من مواصلة عملية الحذف؟", "تنبيه", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.No Then
           Exit Sub
       Else
           Try
  DeleteRowFrom_custdy_movement(Txtcustdy_code)
               DeleteRowFrom_category_movement(TxtID)
Form2_Load(sender, e)
    Tools_ReadOnly(True)
       Tools_Enabled(False)
BarButtonsave.Enabled = False
       BarButtonCancel.Enabled = False
       BarButtonNew.Enabled = True
       BarButtonupdate.Enabled = True
       BarButtondelete.Enabled = True
       BarButtonEdit.Enabled = True
       BarButtonSaveEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
         MsgBox("تم حذف السجل.", MsgBoxStyle.Information, "حذف")
Catch ex As Exception
          MsgBox(Err.Description, MsgBoxStyle.Information)
           Finally
           End Try
       End If
   End Sub

تحياتي



RE: سؤال بخصوص تحديث بيانات DataGridView - abdullhadi999 - 06-01-19

(06-01-19, 01:35 AM)عبد العزيز البسكري كتب :
السّلام عليكم و رحمة الله و بركاته
كان من الأفضل وضع المشكلة بذاتها بفورم بسيط للتأكّد أكثر و مع ذلك و إضافة لما قد ينظر به أخي الغالي " أسامة " ..
أخي الكريم " عبد الله " ..
لماذا أكثرت من عبارة Try .. فواحدة قد تكفي .. لم أجرّب .. فقط نظريا .. حاول هكذا لو سمحت
كود :
Private Sub BarButtondelete_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtondelete.ItemClick
       If MessageBox.Show("هل أنت متأكد من مواصلة عملية الحذف؟", "تنبيه", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.No Then
           Exit Sub
       Else
           Try
  DeleteRowFrom_custdy_movement(Txtcustdy_code)
               DeleteRowFrom_category_movement(TxtID)
Form2_Load(sender, e)
    Tools_ReadOnly(True)
       Tools_Enabled(False)
BarButtonsave.Enabled = False
       BarButtonCancel.Enabled = False
       BarButtonNew.Enabled = True
       BarButtonupdate.Enabled = True
       BarButtondelete.Enabled = True
       BarButtonEdit.Enabled = True
       BarButtonSaveEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
         MsgBox("تم حذف السجل.", MsgBoxStyle.Information, "حذف")
Catch ex As Exception
          MsgBox(Err.Description, MsgBoxStyle.Information)
           Finally
           End Try
       End If
   End Sub

تحياتي
السلام عليكم 

اخي عبدالعزيز شكرا جزيلا لك  . جربت الطريقة واعطاني هذه الرسالة . ولم يتم الحذف مباشرة من الداتاجريد الا بعد اغلاق البرنامج


RE: سؤال بخصوص تحديث بيانات DataGridView - elgokr - 06-01-19

يبدو انك تقوم بادخال قيمة نص
فى عمود من نوع رقم

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

تحياتى لك
وتمنياتى لك التوفيق



RE: سؤال بخصوص تحديث بيانات DataGridView - abdullhadi999 - 06-01-19

(06-01-19, 01:50 PM)elgokr كتب :
يبدو انك تقوم بادخال قيمة نص
فى عمود من نوع رقم

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

تحياتى لك
وتمنياتى لك التوفيق

العملية حذف . هل يتم من خلالها ادخال قيمة . جزاك الله خير


RE: سؤال بخصوص تحديث بيانات DataGridView - عبد العزيز البسكري - 06-01-19

السلام عليكم و رحمة الله و بركاته
ضع مثالا بسيطا أخي الغالي ليتم النظر فيه لو سمحت ..
القيمة المشار اليها من أخي elgokr موجودة بالكود الموجود لديك .. TxtID و Txtcustdy
تحياتي


RE: سؤال بخصوص تحديث بيانات DataGridView - elgokr - 06-01-19

بعد مراجعة الكود فى ردك الاول بالاعلى

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

فى البداية كود الاول الخاص بـ Sub يجب ان يكون بهذه الطريقة
كود :
   Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As Integer)
       Dim CmdDelete As New SqlCommand
       With CmdDelete
           .Connection = Con
           .CommandType = CommandType.Text
           .CommandText = "Delete  From custdy_movement   Where custdy_code = " & Txtcustdy_codeW
       End With
       If Con.State = 1 Then Con.Close()
       Con.Open()
       CmdDelete.ExecuteNonQuery()
       Con.Close()
       MsgBox("تم حذف السجل", MsgBoxStyle.Information, "حذف")
       CmdDelete = Nothing
   End Sub

طريقة الاستخدام فى اى حدث لديك فى الفورم

ستستخدم السطر بهذا الشكل مع تغيير اللازم طبقاً للمسميات لديك
كود :
       DeleteRowFrom_custdy_movement(Val(TextBox1.Text))

الان نقاط الشرح التى اريد شرحه والتنبيه عليه
عند صناعة كود Sub أو Function

لا تحتاج ان تضع بداخله كود Try 
ويكفى فقط استخدام Try فى الحدث اى عند تنفيذ الكود

فمثلاً بداخل الزر يكون الشكل على هذا النحو
كود :
       Try
           DeleteRowFrom_custdy_movement(Val(TextBox1.Text))
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try

ما اضافة الاكواد المحتاج اليها اذا كان اعلى Catch او اسفلها كما انت بحاجة الى ذلك
بمجرد تطبيق الشرح ستحل مشكلة الرسالة التى تظهر معك

لم اقوم بكتابة الكود كاملاً حتى يتثني لك استوعاب ما اقوم شرحة
ولكي لا تقع به مرة اخري

تذكر التعديل فى كود الـ Sub ليس فى ازالة الـ Try فقط بل فى تغير ايضاً
كود :
  Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As TextBox)

الى
كود :
   Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As Integer)

لاحظ الفرق بينهم

تحياتى لك
وتمنياتى لك التوفيق



RE: سؤال بخصوص تحديث بيانات DataGridView - abdullhadi999 - 07-01-19

(06-01-19, 07:36 PM)elgokr كتب :
بعد مراجعة الكود فى ردك الاول بالاعلى

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

فى البداية كود الاول الخاص بـ Sub يجب ان يكون بهذه الطريقة
كود :
   Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As Integer)
       Dim CmdDelete As New SqlCommand
       With CmdDelete
           .Connection = Con
           .CommandType = CommandType.Text
           .CommandText = "Delete  From custdy_movement   Where custdy_code = " & Txtcustdy_codeW
       End With
       If Con.State = 1 Then Con.Close()
       Con.Open()
       CmdDelete.ExecuteNonQuery()
       Con.Close()
       MsgBox("تم حذف السجل", MsgBoxStyle.Information, "حذف")
       CmdDelete = Nothing
   End Sub

طريقة الاستخدام فى اى حدث لديك فى الفورم

ستستخدم السطر بهذا الشكل مع تغيير اللازم طبقاً للمسميات لديك
كود :
       DeleteRowFrom_custdy_movement(Val(TextBox1.Text))

الان نقاط الشرح التى اريد شرحه والتنبيه عليه
عند صناعة كود Sub أو Function

لا تحتاج ان تضع بداخله كود Try 
ويكفى فقط استخدام Try فى الحدث اى عند تنفيذ الكود

فمثلاً بداخل الزر يكون الشكل على هذا النحو
كود :
       Try
           DeleteRowFrom_custdy_movement(Val(TextBox1.Text))
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try

ما اضافة الاكواد المحتاج اليها اذا كان اعلى Catch او اسفلها كما انت بحاجة الى ذلك
بمجرد تطبيق الشرح ستحل مشكلة الرسالة التى تظهر معك

لم اقوم بكتابة الكود كاملاً حتى يتثني لك استوعاب ما اقوم شرحة
ولكي لا تقع به مرة اخري

تذكر التعديل فى كود الـ Sub ليس فى ازالة الـ Try فقط بل فى تغير ايضاً
كود :
  Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As TextBox)

الى
كود :
   Public Sub DeleteRowFrom_custdy_movement(ByVal Txtcustdy_codeW As Integer)

لاحظ الفرق بينهم

تحياتى لك
وتمنياتى لك التوفيق

الله يكتب اجرك ويرزقك من حيث لاتحتسب . 

عملت معي الطريقة ولاكن ظهرت معي هذه الرسالة ؟ طبعا الرسالة تظهر في حالة وجود اكثر من سجل والحذف منها اما في حالة كان الحذف للسجل الاخير فلا تظهر .