تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] منع الارقام من التكرار
#1
السلام عليكم 


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

للمعلومات قاعدة البيانات DB1 والجدول اسمة information والحقل اسمة NomBook  وهو من نوع رقم وكذلك يوجد علية مفتاح اساسي 
وفي textbox1.text  في الفجول بيسك 
حاول بطريقة كما ترون في الصورة لكن ما نفعت يطلعلي هذا error 

الرد
تم الشكر بواسطة:
#2
VB6 : 
PHP كود :
If rs.State adStateOpen Then rs.Close
rs
.Open "SELECT * FROM [information ] WHERE [NomBook  ]=" Trim$(Text1.Text) & _
""dbadOpenStaticadLockOptimistic
If rs.RecordCount <> 0 Then
MsgBox 
"record exists"vbCritical vbOKOnly vbMsgBoxRight"Error"
Exit Sub
Else
' Put your add record here
End If 

VB.net :
PHP كود :
If TextBox1.Text "" Then
    MsgBox
("Please fill-up all fields!"MsgBoxStyle.Exclamation"Add New Customer!")
Else
 
   Dim theQuery As String "SELECT * FROM information  WHERE NomBook =@NomBook"
 
   Dim cmd1 As SqlCommand = New SqlCommand(theQuerycon)
 
   cmd1.Parameters.AddWithValue("@NomBook"TextBox1.Text)
 
   
    Using reader 
As SqlDataReader cmd1.ExecuteReader()
 
       If reader.HasRows Then
            
' record already exists
            MsgBox("record exists!", MsgBoxStyle.Exclamation, "Add New User!")
        Else
            ' 
record does not exist,
 
           ' add code here

        End If
    End Using

    con.Close() 
الرد
تم الشكر بواسطة: rnmr , rnmr
#3
(15-10-18, 11:06 PM)سعداء كتب : VB6 : 
PHP كود :
If rs.State adStateOpen Then rs.Close
rs
.Open "SELECT * FROM [information ] WHERE [NomBook  ]=" Trim$(Text1.Text) & _
""dbadOpenStaticadLockOptimistic
If rs.RecordCount <> 0 Then
MsgBox 
"record exists"vbCritical vbOKOnly vbMsgBoxRight"Error"
Exit Sub
Else
' Put your add record here
End If 

VB.net :
PHP كود :
If TextBox1.Text "" Then
    MsgBox
("Please fill-up all fields!"MsgBoxStyle.Exclamation"Add New Customer!")
Else
 
   Dim theQuery As String "SELECT * FROM information  WHERE NomBook =@NomBook"
 
   Dim cmd1 As SqlCommand = New SqlCommand(theQuerycon)
 
   cmd1.Parameters.AddWithValue("@NomBook"TextBox1.Text)
 
   
    Using reader 
As SqlDataReader cmd1.ExecuteReader()
 
       If reader.HasRows Then
            
' record already exists
            MsgBox("record exists!", MsgBoxStyle.Exclamation, "Add New User!")
        Else
            ' 
record does not exist,
 
           ' add code here

        End If
    End Using

    con.Close() 

استاذي العزيز اول شي مشكور على الرد  الجميل والسريع ومقصرت 
لكن في مشكلة بالاتصال مقبلة مع العلم اني معرف الاتصال con ع العموم اني حملتلك الملف وانته شوفه 


https://up.top4top.net/downloadf-101813dgf1-rar.html
الرد
تم الشكر بواسطة:
#4
هل يوجد حل شباب لان الكود مو شغال
الرد
تم الشكر بواسطة:
#5
جرب هذا

كود :
Imports System.Data.OleDb

Public Class Form1

   Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DB1.accdb")
   Dim DA As New OleDbDataAdapter("SELECT * FROM [information]", con)
   Dim DT As New DataTable


   Sub sava()

       ' تحديث قاعدة البيانات
       Dim SA As New OleDbCommandBuilder(DA)
       SA.QuotePrefix = ("[")
       SA.QuoteSuffix = ("]")
       DA.Update(DT)
       DT.AcceptChanges()

       ' إعادة تعبئة الداتاجريدفيو
       DT.Clear()
       DA.Fill(DT)
       DG1.DataSource = DT

       ' إظهار السطر المضاف أخيراً
       DG1.ClearSelection()
       DG1.FirstDisplayedScrollingRowIndex = DG1.Rows.Count - 1
       DG1.Rows(DG1.Rows.Count - 1).Cells(0).Selected = True
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       ' إعادة تعبئة الداتاجريدفيو
       DA.Fill(DT)
       DG1.DataSource = DT
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       ' التأكد من إدخال بيانات رقم الكتاب
       If Not IsNumeric(TextBox1.Text) Then
           MessageBox.Show("ادخل رقم الكتاب من فضلك")
           TextBox1.Focus()
           Return
       End If

       ' التأكد من إدخال بيانات الموضوع
       If TextBox2.Text.Trim = "" Then
           MessageBox.Show("ادخل الموضوع من فضلك")
           TextBox2.Focus()
           Return
       End If

       ' التأكد من إدخال بيانات الجهة الصادر منها
       If TextBox3.Text.Trim = "" Then
           MessageBox.Show("ادخل الجهة الصادر منها من فضلك")
           TextBox3.Focus()
           Return
       End If

       ' التأكد من إدخال بيانات اضبارة الحفظ
       If TextBox4.Text.Trim = "" Then
           MessageBox.Show("ادخل اضبارة الحفظ من فضلك")
           TextBox4.Focus()
           Return
       End If

       Try

           ' فتح الإتصال إذا لم يكن مفتوحات=
           If con.State <> ConnectionState.Open Then con.Open()

           ' التأكد من وجود رقم الكتاب مسبقا
           Dim cmd As New OleDbCommand("SELECT COUNT([NumBook]) FROM [information]  WHERE [NumBook]=? ", con)
           cmd.Parameters.AddWithValue("@", Val(TextBox1.Text))
           If cmd.ExecuteScalar > 0 Then
               ' رقم الكتاب موجود مسبقا
               MsgBox("record exists!", MsgBoxStyle.Exclamation, "Add New User!")
               Return
           End If

           ' إضافة البيانات الجديدة
           Dim row As DataRow = DT.NewRow
           row.Item(1) = DateTimePicker1.Value.ToString("dd/MM/yyyy")
           row.Item(2) = TextBox1.Text
           row.Item(3) = DateTimePicker2.Value.ToString("dd/MM/yyyy")
           row.Item(4) = TextBox2.Text
           row.Item(5) = TextBox3.Text
           row.Item(6) = TextBox4.Text
           row.Item(7) = TextBox5.Text
           DT.Rows.Add(row)

           ' حفظ الكتاب الجديد
           sava()
           MessageBox.Show("تم الحفظ بنجاح")

           ' إفراغ الأدوات لإضافة جديدة
           For Each c As Control In Controls
               If TypeOf c Is TextBox Then c.Text = ""
           Next

           ' نقل التحكم إلى رقم الكتاب
           TextBox1.Focus()

       Catch ex As Exception
           ' عرض رسالة الخطأ
           MessageBox.Show(ex.Message)
       Finally
           ' إغلاق الإتصال
           con.Close()
       End Try

   End Sub

End Class
الرد
تم الشكر بواسطة: n.kadum
#6
(16-10-18, 10:19 AM)rnmr كتب : جرب هذا

كود :
Imports System.Data.OleDb

Public Class Form1

   Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DB1.accdb")
   Dim DA As New OleDbDataAdapter("SELECT * FROM [information]", con)
   Dim DT As New DataTable


   Sub sava()

       ' تحديث قاعدة البيانات
       Dim SA As New OleDbCommandBuilder(DA)
       SA.QuotePrefix = ("[")
       SA.QuoteSuffix = ("]")
       DA.Update(DT)
       DT.AcceptChanges()

       ' إعادة تعبئة الداتاجريدفيو
       DT.Clear()
       DA.Fill(DT)
       DG1.DataSource = DT

       ' إظهار السطر المضاف أخيراً
       DG1.ClearSelection()
       DG1.FirstDisplayedScrollingRowIndex = DG1.Rows.Count - 1
       DG1.Rows(DG1.Rows.Count - 1).Cells(0).Selected = True
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       ' إعادة تعبئة الداتاجريدفيو
       DA.Fill(DT)
       DG1.DataSource = DT
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       ' التأكد من إدخال بيانات رقم الكتاب
       If Not IsNumeric(TextBox1.Text) Then
           MessageBox.Show("ادخل رقم الكتاب من فضلك")
           TextBox1.Focus()
           Return
       End If

       ' التأكد من إدخال بيانات الموضوع
       If TextBox2.Text.Trim = "" Then
           MessageBox.Show("ادخل الموضوع من فضلك")
           TextBox2.Focus()
           Return
       End If

       ' التأكد من إدخال بيانات الجهة الصادر منها
       If TextBox3.Text.Trim = "" Then
           MessageBox.Show("ادخل الجهة الصادر منها من فضلك")
           TextBox3.Focus()
           Return
       End If

       ' التأكد من إدخال بيانات اضبارة الحفظ
       If TextBox4.Text.Trim = "" Then
           MessageBox.Show("ادخل اضبارة الحفظ من فضلك")
           TextBox4.Focus()
           Return
       End If

       Try

           ' فتح الإتصال إذا لم يكن مفتوحات=
           If con.State <> ConnectionState.Open Then con.Open()

           ' التأكد من وجود رقم الكتاب مسبقا
           Dim cmd As New OleDbCommand("SELECT COUNT([NumBook]) FROM [information]  WHERE [NumBook]=? ", con)
           cmd.Parameters.AddWithValue("@", Val(TextBox1.Text))
           If cmd.ExecuteScalar > 0 Then
               ' رقم الكتاب موجود مسبقا
               MsgBox("record exists!", MsgBoxStyle.Exclamation, "Add New User!")
               Return
           End If

           ' إضافة البيانات الجديدة
           Dim row As DataRow = DT.NewRow
           row.Item(1) = DateTimePicker1.Value.ToString("dd/MM/yyyy")
           row.Item(2) = TextBox1.Text
           row.Item(3) = DateTimePicker2.Value.ToString("dd/MM/yyyy")
           row.Item(4) = TextBox2.Text
           row.Item(5) = TextBox3.Text
           row.Item(6) = TextBox4.Text
           row.Item(7) = TextBox5.Text
           DT.Rows.Add(row)

           ' حفظ الكتاب الجديد
           sava()
           MessageBox.Show("تم الحفظ بنجاح")

           ' إفراغ الأدوات لإضافة جديدة
           For Each c As Control In Controls
               If TypeOf c Is TextBox Then c.Text = ""
           Next

           ' نقل التحكم إلى رقم الكتاب
           TextBox1.Focus()

       Catch ex As Exception
           ' عرض رسالة الخطأ
           MessageBox.Show(ex.Message)
       Finally
           ' إغلاق الإتصال
           con.Close()
       End Try

   End Sub

End Class

تسلم اخي العزيز الكود شغال والحمد لله كان عندي اشوية اخطاء ممنتبه عليهن والحمد لله انت صححتلي الموضوع مرة اخرى مشكور
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  خطأ في تفقيط الارقام في الكريستال ريبورت 10 ضروري الحل abu jana 0 661 30-03-13, 10:23 PM
آخر رد: abu jana
  كيفية منع التكرار فى قاعدة البيانات فى حالة التحديث ؟ gedo 10 5,630 19-03-13, 02:06 AM
آخر رد: gedo

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


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