تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة في كود الحذف والحفظ في نفس الوقت
#1
السلام عليكم ورحمة الله وبركاته ورمضان كريم 
وتقبل الله منا ومنكم صالح الأعمال

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

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

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


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

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

بارك الله فيك أخي أحمد على الرد السريع ورمضان كريم
الرد }}}
تم الشكر بواسطة: حريف برمجة , ahmadpal
#7
(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
راجع الامر لديك وتاكد من البيانات ونوع كل عمود لديك

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: حريف برمجة , ahmadpal
#8
شكرا لك أخي elgokr 
سوف أراجع كل ذلك 
رمضان كريم وتقبل الله منا ومنكم
الرد }}}
تم الشكر بواسطة: حريف برمجة , حريف برمجة , elgokr , ahmadpal
#9
الشكر لله والحمد لله
والحمد لله على كل حالل

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: ahmadpal
#10
السلام عليكم ورحمة الله وبركاته
تم الحل بفصل عملية الحذف والحفظ كل على حدى
كالتالي
كود :
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
بارك الله فيكم
الرد }}}
تم الشكر بواسطة: elgokr , elgokr , ahmadpal , ahmadpal



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم