منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مشكلة في كود الحذف والحفظ في نفس الوقت - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=29602)



مشكلة في كود الحذف والحفظ في نفس الوقت - ahmedfa71 - 12-05-19

السلام عليكم ورحمة الله وبركاته ورمضان كريم 
وتقبل الله منا ومنكم صالح الأعمال

لدي جدول في قاعدة البيانات أريد أن كل مرة أجلب إليه ملف نصي لقاعدة بيانات 
أريد كل مرة أجلب فيه هذا الملف يجب أن يحذف كل ما هو موجود في الجدول قبل عملية الحفظ من جديد
أستعمل هذا الكود مرة يشتغل بكفاءة ومرة أجد أنه أضاف الملف على ما هو موجود في الجدول 
فما الخطأ 
كود :
Private Sub SaveText()
       Try
           Dim cmd As OleDbCommand = New OleDbCommand("Delete * from Emp", con)
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
       For Each row As DataGridViewRow In DGView1.Rows
           If row.Cells("Nom").Value IsNot Nothing Then
               Using cmd1 As New OleDbCommand("INSERT INTO Emp (nom,NCcp,Cle,MontApayer) VALUES(@Nom, @Compte,  @Cle, @Montant)", con)
                   cmd1.Parameters.AddWithValue("@Nom", row.Cells("Nom").Value)
                   cmd1.Parameters.AddWithValue("@Compte", row.Cells("NCcp").Value)
                   cmd1.Parameters.AddWithValue("@Cle", row.Cells("Cle").Value)
                   cmd1.Parameters.AddWithValue("@Montant", row.Cells("MontApayer").Value)
                   con.Open()
                   cmd1.ExecuteNonQuery()
                   cmd1.Dispose()
                   con.Close()
               End Using
           End If
       Next
       MessageBox.Show("تمت عملية الحفظ بنجاح")
   End Sub



RE: مشكلة في كود الحذف والحفظ في نفس الوقت - ahmadpal - 12-05-19

اعتقد ان المشكلة هي  If row.Cells("Nom").Value IsNot Nothing Then
 وتعني في حال يوجد بيانات وقد قمت بحذف السجلات جميعها في بدايه الكود من خلال
Dim cmd As OleDbCommand = New OleDbCommand("Delete * from Emp", con)

بمعنى انت تطلب منه اضافه سجل في حال يوجد بيانات وانت في بدايه الكود طلبت منه حذف جميع البيانات
والله اعلم او قد لا اكون قد فهمت الكود او السؤال بشكل صحيح


RE: مشكلة في كود الحذف والحفظ في نفس الوقت - elgokr - 12-05-19

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

الكود يستخدم بهذا الشكل
كود :
Private Sub SaveText()
    Try
        Dim cmd As OleDbCommand = New OleDbCommand("Delete * FROM Emp", con)
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
        For Each row As DataGridViewRow In DGView1.Rows
            If row.Cells("Nom").Value Then
                Using cmd1 As New OleDbCommand("INSERT INTO Emp (nom,NCcp,Cle,MontApayer) VALUES(@Nom, @Compte, @Cle, @Montant)", con)
                    cmd1.Parameters.AddWithValue("@Nom", row.Cells("Nom").Value)
                    cmd1.Parameters.AddWithValue("@Compte", row.Cells("NCcp").Value)
                    cmd1.Parameters.AddWithValue("@Cle", row.Cells("Cle").Value)
                    cmd1.Parameters.AddWithValue("@Montant", row.Cells("MontApayer").Value)
                    con.Open()
                    cmd1.ExecuteNonQuery()
                    cmd1.Dispose()
                    con.Close()
                End Using
            End If
        Next
        MessageBox.Show("تمت عملية الحفظ بنجاح")
End Sub

وبحدث التنفيذ بيكون بهذا الشكل
كود :
    Try
        SaveText()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

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



RE: مشكلة في كود الحذف والحفظ في نفس الوقت - ahmedfa71 - 13-05-19

السلام عليكم ورحمة الله وبركاته بارك الله في الإخوة على الردود
ورمضان كريم
عند تجربة الكود المعدل من طرف الأستاذ elgokr
وعند إستدعاء الدالة
كود :
Try
       SaveText()
   Catch ex As Exception
       MessageBox.Show(ex.Message)
   End Try

تظهر رسالة خطأ
conversion from string "ahmed amine" to type boolean is not valid


RE: مشكلة في كود الحذف والحفظ في نفس الوقت - ahmadpal - 13-05-19

            If row.Cells("Nom").Value Then
تم اعتبار هذا الشرط انه قيمة منطقية اضف اليها قيمة او اجعلها تساوي nothing


RE: مشكلة في كود الحذف والحفظ في نفس الوقت - ahmedfa71 - 13-05-19

هي فعلا فارغة أخي لأن الكود يقوم  بحذف كلي لكل ماهو موجود في الجدول الموجود في قاعدة البيانات

بارك الله فيك أخي أحمد على الرد السريع ورمضان كريم


RE: مشكلة في كود الحذف والحفظ في نفس الوقت - elgokr - 13-05-19

(13-05-19, 10:42 AM)ahmedfa71 كتب : السلام عليكم ورحمة الله وبركاته بارك الله في الإخوة على الردود
ورمضان كريم
عند تجربة الكود المعدل من طرف الأستاذ elgokr
وعند إستدعاء الدالة
كود :
Try
       SaveText()
   Catch ex As Exception
       MessageBox.Show(ex.Message)
   End Try

تظهر رسالة خطأ
conversion from string "ahmed amine" to type boolean is not valid


بخصوص هذه الرسالة

يوجد لديك قيمة مرسلة تحتوى على جملة 
كود :
ahmed amine

يتم ارسالها الى عمود بقاعدة البيانات من نوع
PHP كود :
boolean 

حيث يجب ان تكون القيمة 0/1 أو yes/no أو true/false
راجع الامر لديك وتاكد من البيانات ونوع كل عمود لديك

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



RE: مشكلة في كود الحذف والحفظ في نفس الوقت - ahmedfa71 - 13-05-19

شكرا لك أخي elgokr 
سوف أراجع كل ذلك 
رمضان كريم وتقبل الله منا ومنكم


RE: مشكلة في كود الحذف والحفظ في نفس الوقت - elgokr - 14-05-19

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

الله اكرم واعظم
تقبل الله منا الصيام فى شهر رمضان
وجعله بالخير والطيبة على قلوبنا دائماً وابداً

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



RE: مشكلة في كود الحذف والحفظ في نفس الوقت - ahmedfa71 - 14-05-19

السلام عليكم ورحمة الله وبركاته
تم الحل بفصل عملية الحذف والحفظ كل على حدى
كالتالي
كود :
Private Sub SaveText()
       For Each row As DataGridViewRow In DGView1.Rows
           If row.Cells("Nom").Value IsNot Nothing Then
               Using cmd1 As New OleDbCommand("INSERT INTO Emp (nom,NCcp,Cle,MontApayer) VALUES(@Nom, @Compte,  @Cle, @Montant)", con)
                   cmd1.Parameters.AddWithValue("@Nom", row.Cells("Nom").Value)
                   cmd1.Parameters.AddWithValue("@Compte", row.Cells("NCcp").Value)
                   cmd1.Parameters.AddWithValue("@Cle", row.Cells("Cle").Value)
                   cmd1.Parameters.AddWithValue("@Montant", row.Cells("MontApayer").Value)
                   con.Open()
                   cmd1.ExecuteNonQuery()
                   cmd1.Dispose()
                   con.Close()
               End Using
           End If
       Next
       MessageBox.Show("تمت عملية الحفظ بنجاح")
   End Sub
    
    Private Sub Supprimer()
       Dim cmd As OleDbCommand = New OleDbCommand("Delete * from Emp", con)
       con.Open()
       cmd.ExecuteNonQuery()
       dg()
       con.Close()
   End Sub
بارك الله فيكم