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

insert into if not exists

مغلقمُجاب
بدأه abatenovtch في 21 أبريل 2014 · 9 رد · 818 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم
انا هدخل فى الموضوع على طول
انا دلوقتى عندى Data Base وفيها 2 column
وعندى form فيه text box و عندى data grid
المهم دلوقتى انا عامل فى data grid جملة select distinct
علشان مايعرضش القيم المكررة
يعنى الاسم ظاهر فى data grid  مرة واحدة بس
لكن فى data base موجود اكتر من مرة
والمطلوب دلوقتى استخدام الشرط اللى انا كاتبه فى العنوان ( insert into if not exist )
ومرفق مثال 

لانى بصراحة مش عارف انفذه
وشكراً

test.rar

#2

ماشاء الله مافيش اى رد


#3

السلام عليكم

ضع هذا الكود قبل كود الاضافة

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

 وقل ربي زدني علما


 


 


 


 

#4
Syayaf كتب:

 

السلام عليكم

ضع هذا الكود قبل كود الاضافة

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

 

يابشا ربنا يخليك الف شكر على ردك

لكن للاسف انا مش عايز رسالة تظهر للمستخدم

انا عايز البرنامج اتوماتيك يعمل Insert فقط لو مش موجود

ياريت لو ممكن

وشكراً

#5

اليك اخى هذا الكود ضعه فى زر الاضافة


        Dim cmd As New OleDb.OleDbCommand
        Dim row_count As Integer

        If Not cnn.State = ConnectionState.Open Then
            'open connection if it is not yet open
            cnn.Open()
        End If

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            row_count = 1
        Else
            row_count = 0
        End If
        dr.Close()

        If row_count > 0 Then
            MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            
        Else
          
            cmd.CommandText = "INSERT INTO tbl_benf_nms (benf_nms) Values ( '" & Me.txtnm.Text & "' )"
     
        cmd.ExecuteNonQuery()
End If

        'refresh data in list
        RefreshData()

        'close connection
        cnn.Close()

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#6
Abo_Yossof كتب:

 

اليك اخى هذا الكود ضعه فى زر الاضافة

        Dim cmd As New OleDb.OleDbCommand
        Dim row_count As Integer

        If Not cnn.State = ConnectionState.Open Then
            'open connection if it is not yet open
            cnn.Open()
        End If

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            row_count = 1
        Else
            row_count = 0
        End If
        dr.Close()

        If row_count > 0 Then
            MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            
        Else
          
            cmd.CommandText = "INSERT INTO tbl_benf_nms (benf_nms) Values ( '" & Me.txtnm.Text & "' )"
     
        cmd.ExecuteNonQuery()
End If

        'refresh data in list
        RefreshData()

        'close connection
        cnn.Close()

الف شكر لك اخى الكريم على ردك

بس انا كاتب من الرد الاول لى انا مش عايز رسائل خطأ

انا عايز اتوماتيك

لكن الكود بتاعك للاسف برضه من غير رسائل الخطأ يضيف الى قاعدة البيانات

وشكراً

#7

انا مش فهم انت ايه قصدك برسائل الخطأ

 

لكن ان كنت تقصد رسالة التنبيه التى تظهر عند التكرار

فالامر بسيط و لو حاولت ان تقرأ الكود لعرفت ذلك

 

فقط احذف هذا السطر

MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)

ليكون الكود بهذا الشكل

Dim cmd As New OleDb.OleDbCommand
        Dim row_count As Integer

        If Not cnn.State = ConnectionState.Open Then
            'open connection if it is not yet open
            cnn.Open()
        End If

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            row_count = 1
        Else
            row_count = 0
        End If
        dr.Close()

        If row_count = 0 Then
          
            cmd.CommandText = "INSERT INTO tbl_benf_nms (benf_nms) Values ( '" & Me.txtnm.Text & "' )"
    
        cmd.ExecuteNonQuery()
End If

        'refresh data in list
        RefreshData()

        'close connection
        cnn.Close()

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#8 أفضل إجابة

بعد التعديل سيصبح الكود بهذه الطريقة

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

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            Return
        Else
            dr.Close()
            Dim row_count As Integer
            If row_count = 0 Then
                cmd.CommandText = "INSERT INTO tbl_benf_nms (benf_nms)SELECT [@CustID] AS Expr1 ;"
                cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
                cmd.ExecuteNonQuery()
            End If

            'refresh data in list
            RefreshData()

            'close connection
            cnn.Close()
        End If
1

 وقل ربي زدني علما


 


 


 


 

#9
Abo_Yossof كتب:

 

انا مش فهم انت ايه قصدك برسائل الخطأ

 

لكن ان كنت تقصد رسالة التنبيه التى تظهر عند التكرار

فالامر بسيط و لو حاولت ان تقرأ الكود لعرفت ذلك

 

فقط احذف هذا السطر

MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)

ليكون الكود بهذا الشكل

Dim cmd As New OleDb.OleDbCommand
        Dim row_count As Integer

        If Not cnn.State = ConnectionState.Open Then
            'open connection if it is not yet open
            cnn.Open()
        End If

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            row_count = 1
        Else
            row_count = 0
        End If
        dr.Close()

        If row_count = 0 Then
          
            cmd.CommandText = "INSERT INTO tbl_benf_nms (benf_nms) Values ( '" & Me.txtnm.Text & "' )"
    
        cmd.ExecuteNonQuery()
End If

        'refresh data in list
        RefreshData()

        'close connection
        cnn.Close()

انا فعلاً اسف انا وضحت غلطت

انا قصدى برسائل الخطأ رسائل التنبيه

لكن برضه انا فهمت الكورد وحذفته وكتبت فى الرد انه بعد الحذف

الكود بيكرر فى الداتا بيز

والف شكر لك واسف على سوء التوضيح

#10
Syayaf كتب:

 

بعد التعديل سيصبح الكود بهذه الطريقة

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

        cmd.Connection = cnn
        cmd.CommandText = "Select *from tbl_benf_nms where benf_nms=@CustID"
        cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        If dr.HasRows = True Then
            Return
        Else
            dr.Close()
            Dim row_count As Integer
            If row_count = 0 Then
                cmd.CommandText = "INSERT INTO tbl_benf_nms (benf_nms)SELECT [@CustID] AS Expr1 ;"
                cmd.Parameters.Add(New OleDbParameter("@CustID", Me.txtnm.Text))
                cmd.ExecuteNonQuery()
            End If

            'refresh data in list
            RefreshData()

            'close connection
            cnn.Close()
        End If

الله ينور عليك الف شكر لك ياباشا

الكود كده اشتغل 100 ميه

بس انا بشكر كل اللى شارك فعلا فى الموضوع لكن بعد اذن حضرتكم كلكم

انا برضه عامل الموضوع باسم

insert into if not exists

فهل فى حد عنده فكرة او نموذج لهذا الكود

وشكراً لكم كلكم

هذا الموضوع مغلق.

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