20-06-16, 04:23 PM
يا نسيم،
اعتمادا على المرفق (newfolder.rar) وقاعدة البيانات المرفقة (New folder (4).rar)
الخطأ اللي عندك أنك وضعت قيمة name_id داخل علامات ' ' والتي مخصصة للنصوص
عموما وضعت لك طريقة أرجو أن تفيد في طريقة ترتيب الكود مستقبلا
لاحظ أنه تم استخدام Parameters لأنها الطريقة الصحيحة لإدراح البيانات
لاحظت أن name_id ليس ترقيم تلقائي، هل أنت قاصد هذا الوضع؟
مع أن المفروض وجود حقل ترقيم تلقائي لزوم التحديث أو الحذف.
السطر
If con.State = ConnectionState.Open Then con.Close
يقوم بغلق الاتصال إذا كان مفتوح، السؤال لماذا تغلقه طالما أنه مفتوح، وضعت لك أسلوب أفضل وهو
If con.State <> ConnectionState.Open Then con.Open
اعتمادا على المرفق (newfolder.rar) وقاعدة البيانات المرفقة (New folder (4).rar)
الخطأ اللي عندك أنك وضعت قيمة name_id داخل علامات ' ' والتي مخصصة للنصوص
عموما وضعت لك طريقة أرجو أن تفيد في طريقة ترتيب الكود مستقبلا
لاحظ أنه تم استخدام Parameters لأنها الطريقة الصحيحة لإدراح البيانات
PHP كود :
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' التأكد من محتوى مربع النص المخصص للرقم '
If Not IsNumeric(Me.TextBox1.Text) Then
MsgBox("تأكد من الرقم")
Return
End If
' التأكد من وجود الاسم في قاعدة البيانات '
If isExist(Me.TextBox2.Text) Then
Dim mssg As String = String.Format("يوجد بيانات باسم السيد {0}{1}{2}{3}{4} هل تريد ادخال بيانات اخرى لنفس الشخص ؟", vbCrLf, Me.TextBox2.Text.Trim, vbCrLf, Space(4), Space(4))
Dim style As MsgBoxStyle = MsgBoxStyle.DefaultButton2 Or MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxRtlReading Or MsgBoxStyle.MsgBoxRight
If MsgBox(mssg, style, "برنامج") = MsgBoxResult.Yes Then
' إضافة الاسم إلى قاعدة البيانات مع التأكد من نجاح الإضافة '
If insertName(Val(Me.TextBox1.Text), Me.TextBox2.Text) Then
MessageBox.Show("تم الحفظ بنجاح", "برنامج ", MessageBoxButtons.OK)
End If
End If
Else
' إضافة الاسم إلى قاعدة البيانات مع التأكد من نجاح الإضافة '
If insertName(Val(Me.TextBox1.Text), Me.TextBox2.Text) Then
MessageBox.Show("تم الحفظ بنجاح", "برنامج ", MessageBoxButtons.OK)
End If
End If
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
End Sub
' التأكد من وجود الاسم في قاعدة البيانات بارجاع النتيجة '
Private Function isExist(mName As String) As Boolean
Dim selectCommand As New SqlCommand("SELECT COUNT(*) FROM [table1] WHERE [name]=@p1", con)
selectCommand.Parameters.AddWithValue("@p1", mName.Trim)
If con.State <> ConnectionState.Open Then con.Open()
Dim selRet As Integer = selectCommand.ExecuteScalar
con.Close()
If selRet > 0 Then
Return True
Else
Return False
End If
End Function
' إضافة الاسم إلى قاعدة البيانات مع إرجاع نجاح الإضافة من فشلها '
Private Function insertName(mID As Integer, mName As String) As Boolean
Dim insertCommand As New SqlCommand("INSERT INTO [table1] ([name_id], [name]) values (@p1, @p2)", con)
insertCommand.Parameters.AddWithValue("@p1", mID)
insertCommand.Parameters.AddWithValue("@p2", mName.Trim)
If con.State <> ConnectionState.Open Then con.Open()
Dim insRet As Integer = insertCommand.ExecuteNonQuery
con.Close()
If insRet > 0 Then
Return True
Else
Return False
End If
End Function
End Class
لاحظت أن name_id ليس ترقيم تلقائي، هل أنت قاصد هذا الوضع؟
مع أن المفروض وجود حقل ترقيم تلقائي لزوم التحديث أو الحذف.
السطر
If con.State = ConnectionState.Open Then con.Close
يقوم بغلق الاتصال إذا كان مفتوح، السؤال لماذا تغلقه طالما أنه مفتوح، وضعت لك أسلوب أفضل وهو
If con.State <> ConnectionState.Open Then con.Open


