الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أمنع رسالة التكرار عند التعديل

بدأه رحيّم في 7 مايو 2012 · 7 رد · 551 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي فورم وبه زر حفظ التعديل ... قبل التعديل يجب أن يتأكد من عدم تكرر الإسم سابقاً !!!

أخذت نصائح وشروحات ( منع التكرار ) وطبقتها .. الحمد لله

ولكن المشكلة عندما أعدل في حقل آخر ( غير حقل الإسم ) في نفس السجل !!! مثل حقل البلد ... لو عدلت عليه عند ضغط زر الحفظ ... يظهر رسالة التكرار !!! مع أنني لم أعدل الإسم أصلاً ... أي لا يوجد تكرار بتاتاً !!!

أين الخطأ في الكود التالي ( زر الحفظ ) :

Dim SqlStr As String
        Dim DR As SqlDataReader
        Dim Cmd As SqlCommand
        SqlStr = "SELECT name FROM tb1 WHERE(name='" & TextBox1.Text & "')"
        Cmd = New SqlCommand(SqlStr, con)
        con.Open()
        DR = Cmd.ExecuteReader
        If DR.HasRows Then
            MsgBox("الإسم مكرر")
            con.Close()
        Else
            con.Close()
            BindingSource1.EndEdit()
            SQLDataAdapter1.Update(SQLDataSet1, "tb1")


            MsgBox("تمت عملية حفظ البيانات بنجاح", 64 + 524288, "نجاح الحفظ")
        End If
#2

الخطأ في جملة sql

select name from tb1

عدلها

select * from tb1

#3

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

لم تحل المشكلة

#4

ارفق المثال واعدل عليه أفضل .. تحياتي

#6

المشكلة أنك حددت أنه لو كان الاسم = textbox1.text فيجب أن يقوم بإخراج الرسالة ولم تحدد له أن ذلك في حالة التعديل في خانة الاسم فقط

فلذلك يقوم بعمل نفس الإجراء على جميع الخانات

ولتفادي هذه المشكلة

قم أولا بعمل متغير عام من النوع النصي وليكن x

dim x as string

وفي حدث Enter ل TextBox1 اكتب الكود التالي

x = TextBox1.text

ثم ضع الكود داخل جملة الشرط التالية

If TextBox1.text <> x Then

End If

ليصبح الكود كالتالي

If TextBox1.text <> x Then
Dim SqlStr As String
        Dim DR As SqlDataReader
        Dim Cmd As SqlCommand
        SqlStr = "SELECT name FROM tb1 WHERE(name='" & TextBox1.Text & "')"
        Cmd = New SqlCommand(SqlStr, con)
        con.Open()
        DR = Cmd.ExecuteReader
        If DR.HasRows Then
            MsgBox("الإسم مكرر")
            con.Close()
        Else
            con.Close()
            BindingSource1.EndEdit()
            SQLDataAdapter1.Update(SQLDataSet1, "tb1")


            MsgBox("تمت عملية حفظ البيانات بنجاح", 64 + 524288, "نجاح الحفظ")
        End If
End If
 con.Close()
            BindingSource1.EndEdit()
            SQLDataAdapter1.Update(SQLDataSet1, "tb1")


            MsgBox("تمت عملية حفظ البيانات بنجاح", 64 + 524288, "نجاح الحفظ")

تم تعديل هذه المشاركة بواسطة asn في 9 مايو 2012 في 03:43

#7

شكراً على المساعدة ... لم يتم عمل المطلوب حيث أن رسالة التكرار لا زالت تظهر ...

#8

اخرج من الاجراء

بعد عملية الفحص

Exit Sub

مواضيع مشابهة