تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
منع التكرار في اضافة بيانات لقاعدة بيانات أكسس vb.net
#1
السلام عليكم ورحمة الله وبركاته
لدي قاعدة بيانات تتكون من عدة جدوال من المفترض ان يقوم المستخدم في احد فورمات بالاضافة كل البيانات لاحد الجدوال وبعض البيانات لجدول آخر ... ولذا لا استطيع عمل ماستر كي لجدول الاخير ليمنع تكرار البيانات عند اضافة بقية البيانات له عن الطريق الفورم الخاص به
فهل من طريقة اخري تمنع اضافة البيانات مكررة ....(علي مستوي الصف )

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

لقد حاولت أرفاق المشروع بالكامل ولكن لم اتمكن بسبب حجم المرفقات المسموح به هناصغير جدا

وهذا الكود للفوم الآخير

كود :
Imports System.Data
Imports System.Data.OleDb
Public Class SpecialColor
    Public CON As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source =" & Application.StartupPath & "\db1.mdb")
    Public DS As New DataSet
    Dim dt As New DataTable
    Public SQLstr As String = "SELECT * FROM SpecialColor WHERE OrderNo LIKE '%" & PrintDetails.TextBox1.Text & "%'"



    Sub DataBaseUpdate()
        Try
            CON.Open()
            Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, CON)
            DataAdapter1.Fill(DS, "SpecialColor")
            CON.Close()
            DataAdapter1.Fill(dt)
            Me.DataGridView1.DataSource = dt

            AddDataContent()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.MsgBoxRight + MsgBoxStyle.Critical, " خطأ في الإتصال")
        End Try

    End Sub
    Public Sub updatTheDataBase()
        Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, CON)
        DS.Clear()
        DataAdapter1.Fill(DS, "SpecialColor")
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MyBase.Close()
        OrderForm.Show()
        PrintDetails.Show()
    End Sub
    Sub AddDataContent()

        On Error Resume Next
        TextBox3.DataBindings.Add("Text", DS, "SpecialColor.PrintOn")
        TextBox5.DataBindings.Add("Text", DS, "SpecialColor.OrderNo")
        TextBox2.DataBindings.Add("Text", DS, "SpecialColor.SpecialColor")
        TextBox4.DataBindings.Add("Text", DS, "SpecialColor.Color")
        TextBox1.DataBindings.Add("Text", DS, "SpecialColor.Ref")

    End Sub
    Sub InsertData()
        Try





            Dim SavInto1 As New OleDb.OleDbCommand
            SavInto1.Connection = CON
            SavInto1.CommandType = CommandType.Text
            SavInto1.CommandText = "Update SpecialColor set Color=@P1,Ref=@P2 where OrderNo=@P3 and PrintOn=@P4 and SpecialColor =@P5"

            With SavInto1.Parameters
                .AddWithValue("@P1", TextBox4.Text)
                .AddWithValue("@P2", TextBox1.Text)
                .AddWithValue("@P3", TextBox5.Text)
                .AddWithValue("@P4", TextBox3.Text)
                .AddWithValue("@P5", TextBox2.Text)
            End With

            CON.Open()
            SavInto1.ExecuteNonQuery()
            SavInto1.ExecuteNonQuery()
            MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", MsgBoxStyle.Information, "تمت العملية بنجاح")
            CON.Close()


        Catch ex As Exception When SQLstr.Count > 1
            MsgBox("This Record allreay updated", MsgBoxStyle.Critical, "Error")
            CON.Close()
        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical, "Error")
        End Try
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        InsertData()
        If Me.BindingContext(DS, "SpecialColor").Position = Me.BindingContext(DS, "SpecialColor").Count - 1 Then
            MyBase.Close()
        Else
            Me.BindingContext(DS, "SpecialColor").Position += 1
        End If
    End Sub

    Private Sub SpecialColor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Print Details Of Order Number " & PrintDetails.TextBox1.Text
        TextBox3.ReadOnly = True
        TextBox2.ReadOnly = True
        TextBox5.ReadOnly = True


        DataBaseUpdate()
        If Me.BindingContext(DS, "SpecialColor").Count >= 2 Then
            Button3.Enabled = True
            Button4.Enabled = True
        Else
            Button3.Enabled = False
            Button4.Enabled = False
        End If



    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Me.BindingContext(DS, "SpecialColor").Position -= 1
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        InsertData()
        MyBase.Close()

    End Sub

    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

    End Sub

    Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

    End Sub
End Class
الرد }}}}
تم الشكر بواسطة:
#2
لقد وصلت لهذا الكود الذي يمنع حفظ البيانات المكررة ولكنه يمنع حفظ البيانات نهائيا حينما يكن هناك بيانات مكررة

هل من الممكن تنظروا لهذا الكود وتحاولوا اصلاحه

كود :
Sub InsertData()
        Try
            Dim SQLstr As String = "SELECT * FROM SpecialColor WHERE OrderNo LIKE '%" & PrintDetails.TextBox1.Text & "%'"
            Dim selectdb As String = "SELECT Ref FROM SpecialColor WHERE OrderNo = '" & TextBox5.Text & "' and PrintOn = '" & TextBox3.Text & "' and SpecialColor = '" & TextBox2.Text & "' Color = '" & TextBox4.Text & "' '"
            Dim DataAdapter1 As New OleDbDataAdapter(selectdb, CON)
            TextBox6.DataBindings.Clear()
            TextBox6.DataBindings.Add("Text", DS, "SpecialColor.Ref")
            If TextBox6.Text <> TextBox1.Text Then
                Dim SavInto1 As New OleDb.OleDbCommand
                SavInto1.Connection = CON
                SavInto1.CommandType = CommandType.Text
                SavInto1.CommandText = "Update SpecialColor set Color=@P1,Ref=@P2 where OrderNo=@P3 and PrintOn=@P4 and SpecialColor=@P5 "
                With SavInto1.Parameters
                    .AddWithValue("@P1", TextBox4.Text)
                    .AddWithValue("@P2", TextBox1.Text)
                    .AddWithValue("@P3", TextBox5.Text)
                    .AddWithValue("@P4", TextBox3.Text)
                    .AddWithValue("@P5", TextBox2.Text)
                End With
                CON.Open()
                SavInto1.ExecuteNonQuery()
                CON.Close()
                MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", MsgBoxStyle.Information, "تمت العملية بنجاح")
            ElseIf TextBox6.Text = TextBox1.Text Then
                MsgBox("This order allreay updated", MsgBoxStyle.Critical, "Error")
                TextBox1.Clear()
                TextBox4.Clear()
                CON.Close()
            End If
        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical, "Error")
        End Try
    End Sub
الرد }}}}
تم الشكر بواسطة:
#3
الطريقة اللي اعرفها لمنع التكرار هي بالاستعلام اولا عن المراد اضافته فان كان موجود يخرج من الروتين او يستمر.
مثلا اريد اضافة اسم "سعود" اتحقق اولا
كود :
dim cm as new oledbcommand("select count(tid) from tb where tname='سعود'",con)
con.open
if cm.executescalar >0 then

هنا الاسم موجود وتكتب كود الخروج من الروتين لو كانت تحتوي كود الاضافة
exit sub

end if
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة: أبوبكر سويدان


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ابي اربط برنامجي بسيرفر او قاعده بيانات مبارك 3 174 22-11-16, 02:57 PM
آخر رد: مبارك
  [سؤال] كيفية اضافة عناصر عمود فى جدول من قاعدة بيانات فى جدول اخر hidn 1 166 04-11-16, 09:25 AM
آخر رد: thevirus
  [سؤال] قراءة رابط من قاعدة بيانات في ادة التصفح شمس الدين 03 2 77 27-10-16, 10:43 PM
آخر رد: شمس الدين 03
  كيفية الاتصال بقاعدة بيانات Access على الشبكة المحلية warda saeed 7 7,213 27-10-16, 09:53 PM
آخر رد: thevirus
  ربط قاعدة بيانات اكسس بفجوال دوت نت 2015 كنونو 0 123 26-09-16, 01:35 PM
آخر رد: كنونو
Lightbulb [سؤال] كيف يتم رفع قاعدة بيانات mysql بطريقة برمجية sanosi 0 124 26-08-16, 05:00 PM
آخر رد: sanosi
  [سؤال] مساعدة في حفظ بيانات من جدولين mosasaad 5 267 22-08-16, 10:25 AM
آخر رد: سعود
  [VB.NET] مشكله عند الحفظ على قاعدة بيانات باستخدام Data Source وقاعدة بيانات اكسس2007 coderarab 7 363 24-07-16, 06:26 PM
آخر رد: سعود
  كيف يتم ربط قاعدة بيانات مع موقع ؟ ابراهيم حورس 1 219 10-07-16, 02:00 AM
آخر رد: boudyonline
  التنبيه عند اضافة عميل makky 2 181 18-06-16, 07:22 PM
آخر رد: boudyonline

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


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