تقييم الموضوع :
  • 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
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
رحمك الله أبا الليث
الرد }}}}
تم الشكر بواسطة: أبوبكر سويدان


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مثال +سؤال اضافة حذف عرض السجلات ahmedalans 6 169 10-05-17, 06:06 PM
آخر رد: ahmedalans
  [سؤال] كيفية حفظ ملف pdf في قاعدة بيانات sql abid 5 4,600 10-05-17, 03:13 PM
آخر رد: safalo
  مل نسخة احتياطية لقاعدة بيانات sql server djelloul 2 56 10-05-17, 12:49 PM
آخر رد: djelloul
  المساعدة في عمل استعلام قاعدة بيانات sqlserver djelloul 0 68 17-04-17, 07:13 PM
آخر رد: djelloul
  [VB.NET] مشكله عند الحفظ على قاعدة بيانات باستخدام Data Source وقاعدة بيانات اكسس2007 coderarab 8 848 03-04-17, 02:48 AM
آخر رد: ابو إياد
  [سؤال] طلب صيغة عامة أو وظيفة لأضافة بيانات لقاعدة البيانات ؟ عبد الله 2 152 10-03-17, 09:36 AM
آخر رد: عبد الله
  كيفية الاتصال بقاعدة بيانات Access على الشبكة المحلية warda saeed 9 9,234 28-02-17, 10:21 AM
آخر رد: وائل القطاوي
  قاعدة بيانات xml djelloul 2 168 06-02-17, 11:06 PM
آخر رد: djelloul
  كيفية عمل أتاش لقاعدة بيانات djelloul 0 165 24-01-17, 04:35 PM
آخر رد: djelloul
Bug [Acces2010] طريقة استدعاء بيانات النزيل القديم برقم الهوية يسرى7 12 602 18-01-17, 09:42 PM
آخر رد: يسرى7

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


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