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

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

لدي جدول في قاعدة البيانات أريد أن كل مرة أجلب إليه ملف نصي لقاعدة بيانات 
أريد كل مرة أجلب فيه هذا الملف يجب أن يحذف كل ما هو موجود في الجدول قبل عملية الحفظ من جديد
أستعمل هذا الكود مرة يشتغل بكفاءة ومرة أجد أنه أضاف الملف على ما هو موجود في الجدول 
فما الخطأ 
كود :
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
اعتقد ان المشكلة هي  If row.Cells("Nom").Value IsNot Nothing Then
 وتعني في حال يوجد بيانات وقد قمت بحذف السجلات جميعها في بدايه الكود من خلال
Dim cmd As OleDbCommand = New OleDbCommand("Delete * from Emp", con)

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

الكود يستخدم بهذا الشكل
كود :
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

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

تظهر رسالة خطأ
conversion from string "ahmed amine" to type boolean is not valid
            If row.Cells("Nom").Value Then
تم اعتبار هذا الشرط انه قيمة منطقية اضف اليها قيمة او اجعلها تساوي nothing
هي فعلا فارغة أخي لأن الكود يقوم  بحذف كلي لكل ماهو موجود في الجدول الموجود في قاعدة البيانات

بارك الله فيك أخي أحمد على الرد السريع ورمضان كريم
(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
راجع الامر لديك وتاكد من البيانات ونوع كل عمود لديك

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

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

تحياتى لك
وتمنياتى لك التوفيق
السلام عليكم ورحمة الله وبركاته
تم الحل بفصل عملية الحذف والحفظ كل على حدى
كالتالي
كود :
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
بارك الله فيكم