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

نسخة كاملة : منع التكرار اسم الصنف في حالة الحفظ والتعديل كود واحد
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
شباب الله يكرمكم مساعده 
انا شغال في برنامج مبيعات 
وعملت زر واحد للتعديل والاضافه المشكله انه بيكرر الاضافه عاوز اخلي الاستعلام انه لو الاسم موجود ماتضفيه تاني 
 ده الكود 
كود :
       If Unit.Text = "" Then
           ErrorProvider1.SetError(Unit, "ادخل اسم الوحدة")
           Unit.Focus()
           Exit Sub
       Else
           Dim sql = "select * from Unit where ID=N'" & (ID.Text) & "'"

           Dim adp As New SqlClient.SqlDataAdapter(sql, SQLConn)
           Dim ds As New DataSet
           adp.Fill(ds)
           Dim dt = ds.Tables(0)
           If dt.Rows.Count > 0 Then
               Dim dr = dt.Rows(0)
               dr!Unit = Unit.Text
               Dim cmd As New SqlClient.SqlCommandBuilder(adp)
               adp.Update(dt)
               BtnNew_Click(sender, e)
               MsgBox("تم التعديل بنجاح", MsgBoxStyle.Information, "رسالة تأكيد")
               showGrid("select * from Unit order by Unit")

           Else

               Dim dr = dt.NewRow
               dr!Unit = Unit.Text
               dt.Rows.Add(dr)
               Dim cmd1 As New SqlClient.SqlCommandBuilder(adp)
               adp.Update(dt)
               BtnNew_Click(sender, e)
               MsgBox("تم الحفظ بنجاح", MsgBoxStyle.Information, "رسالة تأكيد")

               showGrid("select * from Unit order by Unit")

           End If
           End If
رأي:
انك تخلي TEXTSANF لما يتكتب فيه يتم الاستعلام منه عند الكتابة في الجدول ولو مثلا كتبنا كالأتي
TEXTSANF= شاي   وعملنا استعلام وبعد كتابة الاستعلام ظهر اسم الصنف في TEXTSERSH
نستخدم الكود الاتي.

if textsanf=textsearsh.text then

كود الاقتراح باضافة الصنف اذا كان نعم يتم الحفظ واذا كان لا يمنع حفظ هذا الصنف

else

كود الحفظ او التعديل


end if

هذا رأي والله أعلم ولعلك تجد ضالتك عند احد الاخوة.
السلام عليكم احي الكريم 
لفعل جملة تقوم بالحفظ او التعديل نحتاج الى التأكد من ان السجل موجود او لا 
وافضل تحقق يكون بحقل الاي دي كونه فريد لايتكرر
في البداية قم بإنشاء هذا الصب
كود :
Dim da As New OleDbDataAdapter
   Dim kk As Boolean ' نعريف متغير من نوع بولين خارج الصب
   ' ننشئ صب للتحقق من ان الملف الذي يحمل رقم الاي دي موجود او لا
   Sub chekItem()
       Dim dt As New DataTable
       da = New OleDbDataAdapter("select * From Items where id = " & Txt_id.Text & "", con)
       da.Fill(dt)
       If dt.Rows.Count = 0 Then
           kk = False
       ElseIf dt.Rows.Count > 0 Then
           kk = True
       End If
   End Sub

ثم في حدث زر الحفظ ضع هذا الكود وضع كود الحفظ في المكان المشار اليه وكذلك كود التعديل

كود :
' كود الحفظ والتعديل
   Private Sub Btn_Save_Update_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Save_Update.Click
       Try
           chekItem() ' مناداة صب التحقق
           If kk = False Then
               ' ضع كود الحفظ هنا
           Else
               If MessageBox.Show("هل تريد تعديل السجل؟", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
               End If
               ' ضع كود التعديل هنا
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
       ' اعادة تحميل الجدول
   End Sub
PHP كود :
 Private Function ID_Exists(ByVal num As Integer) As Boolean
    
If Conn.State Is ConnectionState.Closed Then
        Conn
.Open()
    End If

    Dim cmd As SqlCommand = New SqlCommand("Select count(*) from Unit where ID= @ID"Conn)
    cmd.Parameters.AddWithValue("@ID"num)
    Dim result cmd.ExecuteScalar()
    Conn.Close()
    Return Convert.ToBoolean(result)
End Function 


تستطيع فحص التكارا كالاتي:
PHP كود :
If ID_Exists(ID.Text.textIs True Then
 the ID already in database
Else
the ID not in database
End 
If 
الله يعطيك العافية
باعتقادي انه من الافضل هو عدم تكرار رقم الباركود
وبالتالي كل صنف له رقم باركود فريد فاسم الصنف من الممكن ان يتكرر
اذا كان هناك اختلاف بوحدة الصنف
فمثلا لو فرضنا ان لدينا صنف اسمه (شاي) والوحدة عبارة عن عبوة بوزن 250 غرام مثلا"
وكان هناك عبوة اخرى من نفس الصنف لكن الوحدة عبارة عن 500 غرام
هنا اسم الصنف سيتكرر لكن كيف يمكن ان نفرق بينهما يبقى رقم الباركود هو الذي
من خلاله نستطيع ان نفرق بين الصنفين
اولا انا بشكركم جدا علي التفاعل والمساعده 
بس اظن ان الفكره لم تصل كامله 
الفكر ببساطه 
انا عاوز اقول للزر 
لو الاسم اللي انا كتبته في textbox  
موجود في خانة الاسم رساله ان الاسم ده موجود من قبل 
لو مش موجود ضيفه 
وفي نفس الوقت الزر بيقوم بالتعديل في حالة 
كود :
dt.Rows.Count > 0 Then
السلام عليكم اخي الكريم
حقل الاسم يمكن ان يتكرر الاسم في السجلات اما حقل الاي دي او الباركود لايتكرر
وبما انك تريد حقل الاسم استبدل جملة الاستعلام 
الى التالي:
كود :
da = New OleDbDataAdapter("select * From Items where حقل الاسم = '" & Txt_Name.Text & "'", con)
سنبحث اولا وان وجد يكون الكود تعديل وان لم يوجد يكون الكود حفظ
(15-07-19, 11:13 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم اخي الكريم
حقل الاسم يمكن ان يتكرر الاسم في السجلات اما حقل الاي دي او الباركود لايتكرر
وبما انك تريد حقل الاسم استبدل جملة الاستعلام 
الى التالي:
كود :
da = New OleDbDataAdapter("select * From Items where حقل الاسم = '" & Txt_Name.Text & "'", con)
سنبحث اولا وان وجد يكون الكود تعديل وان لم يوجد يكون الكود حفظ

عليكم السلام اخي 
انت شخص عظيم 
ولكن في هذه الحاله يكرر الاسم انا اريد الا يكرر الاسم ويعلمنى ان الاسم منوجود من قبل
مارايك بالاطلاع على المثال السريع؟

[attachment=22073]


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

كود :
      For i = 0 To DataGridView1.Rows.Count - 1
          If DataGridView1.Rows(i).Cells(0).Value = Item_code.Text Then
MsgBox
الصفحات : 1 2