03-11-15, 11:19 PM
السلام عليكم ورحمة الله
أخي عادل
ألم تقرأ ردي
الفكرة الصحيحة أن لا يكون هناك رقم ، ولكن بعد أن تتم عملية اللحفظ ستعود ExecuteScalar بنتيجة Select @@IDENTITY بالرقم التلقائي الذي حفظ، عندها ضعه في مربع النص وأيضاً عدل إسم الملف واجعله بنفس.
الحل أمامك ولاكن تمسكك بفكرتك جعلك لا ترى الحلول الصحيحة.
أترك الفكرة التي لديك وانظر لهذا المثال:
قام المستخدم A بفتح النافذة وكذلك قام المستخدم B ولكن كل منهم لا يرى رقما (طبيعي لإنه لم يحفظ شيئاً)
عندما يحفظ المستخدم B قبل A يحفظ بياناته ويعود له بالرقم الجديد وليكن 29 ويقوم الكود هنا بتغيير إسم الملف ل 29 أو نسخه باسم يكون برقم 29،
وعندما يحفظ المستخدم A بعده مباشرة يحفظ بياناته سيعود له بالرقم الجديد وهو 30 ويقوم الكود هنا بتغيير إسم الملف ل 30 أو نسخه باسم يكون برقم 30،
بهذه الطريقة لن يحدث تكرار أبداً.
بالمناسبة ستسخدم هنا ExecuteScalar وليس ExecuteNonQuery لتقرأ الرقم المعاد للحفظ
مثال:
طبعاً على أساس أنك ما زلت تستخدم الأسلوب القديم في التعامل قاعدة البيانات
وهذا نفس المثال ولكن بالطريقة الحالية
أخي عادل
ألم تقرأ ردي
الفكرة الصحيحة أن لا يكون هناك رقم ، ولكن بعد أن تتم عملية اللحفظ ستعود ExecuteScalar بنتيجة Select @@IDENTITY بالرقم التلقائي الذي حفظ، عندها ضعه في مربع النص وأيضاً عدل إسم الملف واجعله بنفس.
الحل أمامك ولاكن تمسكك بفكرتك جعلك لا ترى الحلول الصحيحة.
أترك الفكرة التي لديك وانظر لهذا المثال:
قام المستخدم A بفتح النافذة وكذلك قام المستخدم B ولكن كل منهم لا يرى رقما (طبيعي لإنه لم يحفظ شيئاً)
عندما يحفظ المستخدم B قبل A يحفظ بياناته ويعود له بالرقم الجديد وليكن 29 ويقوم الكود هنا بتغيير إسم الملف ل 29 أو نسخه باسم يكون برقم 29،
وعندما يحفظ المستخدم A بعده مباشرة يحفظ بياناته سيعود له بالرقم الجديد وهو 30 ويقوم الكود هنا بتغيير إسم الملف ل 30 أو نسخه باسم يكون برقم 30،
بهذه الطريقة لن يحدث تكرار أبداً.
بالمناسبة ستسخدم هنا ExecuteScalar وليس ExecuteNonQuery لتقرأ الرقم المعاد للحفظ
مثال:
PHP كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim id As Integer
Using connection As New SqlClient.SqlConnection(My.Settings.db1ConnectionString)
Using command As New SqlClient.SqlCommand("Insert Into [Table1]([name]) Values (@name); Select @@IDENTITY;", connection)
command.Parameters.AddWithValue("@name", TextBox2.Text)
connection.Open()
id = command.ExecuteScalar' لاحظ تم استخدام ExecuteScalar
connection.Close()
End Using
End Using
TextBox1.Text = id
If id > 0 Then
' هنا تستطيل التعامل مع الملف بتغيير اسمه أو نسخه
FileSystem.Rename("D:\...\New Text Document.txt",
"D:\...\" & id & " .txt")
MessageBox.Show("تم حفظ البيانات برقم: " & id)
End If
End Sub
وهذا نفس المثال ولكن بالطريقة الحالية
PHP كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim itm As New Table1
itm.Name = TextBox2.Text
context.Table1s.InsertOnSubmit(itm)
context.SubmitChanges()
TextBox1.Text = itm.ID
MessageBox.Show("تم حفظ البيانات برقم: " & itm.ID)
FileSystem.Rename("D:\...\New Text Document.txt",
"D:\...\" & itm.ID & " .txt")
MessageBox.Show("تم حفظ البيانات برقم: " & itm.ID)
End Sub