منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : هل يوجد كود لعدم تكرار نفس البيانات ببعض الحقول
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
إنتظرني حتى أعود من العمل على الساعة 4 العصر سأعمل لك مشروع مصغر
أخ طه مارأيك في هذا الكود

كود :
Imports System.Data.OleDb

Public Class Form1
   Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\students.accdb"
   Dim con As New OleDbConnection(str)
   Dim ds As New DataSet
   Private Sub dgds(ByVal d As DataSet)
       If dgv1.InvokeRequired Then
           dgv1.Invoke(New Action(Of DataSet)(AddressOf dgds), d)
       Else
           dgv1.DataSource = d

       End If
   End Sub
   Private Sub dgv(ByVal d As String)
       If dgv1.InvokeRequired Then
           dgv1.Invoke(New Action(Of String)(AddressOf dgv), d)
       Else
           dgv1.DataMember = d

       End If
   End Sub

   Private Sub gd()
       dgds(Nothing)
       dgv(Nothing)
       ds.Clear()
       Dim da As New OleDbDataAdapter("select Car_info from Car_Number", con)
       da.Fill(ds, "Car_Number")
       dgds(ds)
       dgv("Car_Number")

   End Sub
   Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       begin()
   End Sub

   Private Sub begin()
       Dim ath As New Threading.Thread(AddressOf gd)
       If ath.IsAlive = False Then
           ath.Start()
       End If
   End Sub

   Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
       If isfound(TextBox1.Text) Then
           MsgBox("لقد قمت بإدخال رقم مركبة موجود بالفعل", MsgBoxStyle.Critical, "")
           Exit Sub
       End If

       If addnew(TextBox1.Text) Then
           MsgBox("تم الحفظ", MsgBoxStyle.Information, "")
       Else
           MsgBox("لم يتم الحفظ لوجود خطا", MsgBoxStyle.Critical, "")

       End If


   End Sub


   Private Function isfound(ByVal txt As String) As Boolean
       Dim cm As New OleDbCommand("select count(tid) from s1 where id_number=@id_number", con)

       cm.Parameters.AddWithValue("@id_number", txt)
       If con.State = ConnectionState.Closed Then
           con.Open()
       End If
       If cm.ExecuteScalar > 0 Then
           Return True
       Else
           Return False
       End If

   End Function


   Private Function addnew(ByVal txt As String) As Boolean
       

       Dim cm As New OleDbCommand("insert into s1(id_number) values(@id_number)", con)
       cm.Parameters.AddWithValue("@id_number", txt)
       If con.State = ConnectionState.Closed Then
           con.Open()
       End If
       Try
           cm.ExecuteNonQuery()
           begin()
           Return True
       Catch ex As Exception
           Return False
       End Try

   End Function





End Class

هل يمكن أن يعمل على مشروعي

الكود كبير ولا أعرف كيف أتعامل معه
هذا نفس المشروع إلي سويته مصغر
عيد مشروعك مع قاعدة بيانات Access 2013 ثم ارفعه مره ثانية
سم طال عمرك المشروع مع قاعدة بيانات Access 2013
أمر الحفظ :

كود :
   Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
       Dim r1, r2 As Integer
       r1 = ExScalar("Select Count(Car_Number) From Car_info Where Car_Number='" & Car_Number.Text.Trim() & "'")
       r2 = ExScalar("Select Count(Car_Qaedah_Number) From Car_info Where Car_Qaedah_Number='" & Car_Qaedah_Number.Text.Trim() & "'")

       If r1 > 0 Then
           MsgBox("لوحة هذه المركبة مسجلة مسبقاً - يرجى التأكد قبل الحفظ", vbOKOnly + vbExclamation, "Warrning")
           Car_Number.Focus()
           Exit Sub
       ElseIf r2 > 0 Then
           Dim msgR2 As DialogResult
           msgR2 = MsgBox("شاصيه هذه المركبة مسجل مسبقاً" + vbNewLine + "اختر : " + vbNewLine + " 'نعم/Yes' " + vbNewLine + "اذا كنت تريد تجاهل الامر والاستمرار بالحفظ" + vbNewLine + " ", vbYesNo + vbExclamation, "Warrning")
           If msgR2 <> DialogResult.Yes Then
               Car_Qaedah_Number.Focus()
               Exit Sub
           End If
       End If

       Insert_Car_info(Car_ID.Text, Car_Number.Text, Car_Module.Text, Car_Tybe.Text, Car_Qesem.Text, Car_Molahthat.Text, Car_Qaedah_Number.Text, Car_Halah.Text)
       SelectAll_Car_info(dgv_Car_info)
       DataGridViewHeaderText(dgv_Car_info)
       ClearControls()
       Car_ID.Text = Max_Car_info() + 1
   End Sub


الكود في الـ Module يصبح :

كود :
Imports System.Data.OleDb

Module Module1

   Public strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=alyat2.accdb;Jet OLEDB:Database Password="
   Public con As New OleDbConnection(strConn)

   Public Function ExScalar(cmdText As String, ParamArray pParam As OleDbParameter()) As Object
       Using pConn As New OleDbConnection(strConn) '  جملة الاتصال بقاعدة البيانات
           pConn.Open()

           Dim cmd As OleDbCommand = New OleDbCommand(cmdText, pConn)
           For Each p In pParam
               cmd.Parameters.Add(p)
           Next

           Dim ob As Object
           ob = cmd.ExecuteScalar()

           Return ob
       End Using
   End Function

End Module
الله يعطيك العافية يالغالي

إشتغل على المشروع إلي أرسلته لك لكن عندما نقلت الأكواد للمشروع الرئيسي طلع لي خطأ عند الضغط على زر الحفظ في الموديول

مع العلم الداتا بيس الخاصة بمشروعي بها كلمة مرور ووضعته بعد كلمة Password في الكود
خلي كود في الـ Module :

كود :
Imports System.Data.OleDb

Module Module1

   Public strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=alyat2.accdb;Jet OLEDB:Database Password="
   Public con As New OleDbConnection(strConn)

   Public Function ExScalar(cmdText As String) As Integer
       Using pConn As New OleDbConnection(strConn) '  جملة الاتصال بقاعدة البيانات
           pConn.Open()

           Dim cmd As OleDbCommand = New OleDbCommand(cmdText, pConn)

           Return cmd.ExecuteScalar()
       End Using
   End Function

End Module
أو خلي الـ Module  كما قلنا سابقا في المشاركة 16# -- وعدل  فقط زر الحفظ ليصبح  :
كود :
   Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
       Dim r1, r2 As Integer

       Dim P1 As OleDbParameter = New OleDbParameter("@Car_Number", Car_Number.Text)
       r1 = ExScalar("Select Count(Car_Number) From Car_info Where Car_Number=@Car_Number ", P1)


       Dim P2 As OleDbParameter = New OleDbParameter("@Car_Qaedah_Number", Car_Qaedah_Number.Text)
       r2 = ExScalar("Select Count(Car_Qaedah_Number) From Car_info Where Car_Qaedah_Number=@Car_Qaedah_Number ", P2)

       If r1 > 0 Then
           MsgBox("لوحة هذه المركبة مسجلة مسبقاً - يرجى التأكد قبل الحفظ", vbOKOnly + vbExclamation, "Warrning")
           Car_Number.Focus()
           Exit Sub
       ElseIf r2 > 0 Then
           Dim msgR2 As DialogResult
           msgR2 = MsgBox("شاصيه هذه المركبة مسجل مسبقاً" + vbNewLine + "اختر : " + vbNewLine + " 'نعم/Yes' " + vbNewLine + "اذا كنت تريد تجاهل الامر والاستمرار بالحفظ" + vbNewLine + " ", vbYesNo + vbExclamation, "Warrning")
           If msgR2 <> DialogResult.Yes Then
               Car_Qaedah_Number.Focus()
               Exit Sub
           End If
       End If

       Insert_Car_info(Car_ID.Text, Car_Number.Text, Car_Module.Text, Car_Tybe.Text, Car_Qesem.Text, Car_Molahthat.Text, Car_Qaedah_Number.Text, Car_Halah.Text)
       SelectAll_Car_info(dgv_Car_info)
       DataGridViewHeaderText(dgv_Car_info)
       ClearControls()
       Car_ID.Text = Max_Car_info() + 1
   End Sub
الله يرزقك الجنة أنت ومن تحب عز الله ماقصرت الله يحفظك دنيا وآخره

باقي شغلتين وأسلم المشروع غداً الإثنين بإذن الله إذا تساعدني فيهم الله يجزاك خير

الأول كتبته بهذا الموضوع

http://vb4arb.com/vb/showthread.php?tid=50295

والآخر أريد المستخدم بعد الدخول للبرنامج يستطيع تغيير كلمة المرور بالضغط على زر بالشاشة الرئيسية كما بالصورة المرفقة وتعديل كلمة المرور بالفورم المرفق أيضاً
الصفحات : 1 2