تقييم الموضوع :
  • 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
الرد }}}
تم الشكر بواسطة: أبوبكر سويدان , waelalmsry75 , asemshahen5 , elgokr
#4
(06-10-13, 02:03 PM)سعود كتب : الطريقة اللي اعرفها لمنع التكرار هي بالاستعلام اولا عن المراد اضافته فان كان موجود يخرج من الروتين او يستمر.
مثلا اريد اضافة اسم "سعود" اتحقق اولا
كود :
dim cm as new oledbcommand("select count(tid) from tb where tname='سعود'",con)
con.open
if cm.executescalar >0 then

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

end if
الله يجزيك خير
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5 , elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  استعلام من عدة جداول لقاعدة بيانات اكسس Adel27213 1 722 07-11-23, 08:27 AM
آخر رد: justforit
  *[- تم الحل -]* ما هو كود اضافة ميزة المفتاح الاساسي لعمود ترقيم تلقائي موجود سعود 2 499 27-05-23, 01:44 AM
آخر رد: سعود
  [SQL] استفسار عن طريقة تحزم قواعد بيانات MSSQL مع البرنامج VB.NET2019 salemq 2 537 18-05-23, 03:02 AM
آخر رد: سعود
  ما معني بيانات تقع بين الرمز[] في حقل في داتا بيس bassant 3 678 03-04-23, 11:53 PM
آخر رد: sanyor77
  [نقاش] مشاركة قاعدة بيانات SQL على شبكه داخليه morkoskhalaf 3 3,024 06-01-23, 03:20 AM
آخر رد: عبدالكريم برشدان
  قاعدة بيانات xml djelloul 3 2,804 07-11-22, 10:27 PM
آخر رد: Am7
  [عنوان معدل]حفظ بيانات listbox fhad24 36 12,259 08-10-22, 06:55 PM
آخر رد: رضوان الجماعي
  مشكلة ظهور بياانات حقلين في قاعدة بيانات على شكل علامة استفهام bassant 5 1,635 17-10-21, 02:07 PM
آخر رد: abubasilIraq
  كيف افتح قاعة بيانات اكسس بسام محمدغانم 1 1,408 04-10-21, 02:52 AM
آخر رد: اسلام الكبابى
  تحويل multiline text الى single line في عمود في قاعدة بيانات sql server bassant 0 960 07-09-21, 04:36 PM
آخر رد: bassant

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


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