السلام عليكم ورحمة الله
عندي مشكلة وهي في حدث معين أقم بعمل 2 insert للبيانات قد يدخل الأول بدون مشاكل ولكن قد تحدث في الثاني مشكلة، فيتم إدخال البيانات الأولة والثانية لا، وانا اريدها ان يدخلوا معا أول لا فكين امنع الأول من الدخول في حالة حدوث مشكلة في الثاني
وعليكم السلام ورحمة الله وبركاته
أنا عن نفسي لم أفهم شيئا من الذي قلته !
الأفضل الكتابة بشكل أوضح ؛ حتى يمكننا أن نفهم المشكلة .
(26-10-24, 06:55 PM)motasem كتب : [ -> ]السلام عليكم ورحمة الله
عندي مشكلة وهي في حدث معين أقم بعمل 2 insert للبيانات قد يدخل الأول بدون مشاكل ولكن قد تحدث في الثاني مشكلة، فيتم إدخال البيانات الأولة والثانية لا، وانا اريدها ان يدخلوا معا أول لا فكين امنع الأول من الدخول في حالة حدوث مشكلة في الثاني
ضع الكود او مثال بسيط لفهم اصل المشكلة وحلها
احيانا يكون الكود سليم ولكن المشكل في تنسيق بيانات الدخول والحفظ مع الحقول المقابلة لها(نص . رقم . تاريخ ...الخ)
السلام عليكم
بشكل عام، لحل هذه المشكلة يمكنك استخدام Transactions في SQL Server.
Transactions تسمح لك بتجميع عدة عمليات معاً كوحدة واحدة، بحيث يتم تنفيذ جميع العمليات بنجاح أو يتم التراجع عنها جميعاً في حالة فشل أي عملية.
إليك مثال لكيفية استخدام Transactions في Visual Basic مع SQL Server:
كود :
Using connection As New SqlConnection("Your connection string")
connection.Open()
Using transaction As SqlTransaction = connection.BeginTransaction()
Try
' إنشاء أمر SQL لإدخال البيانات الأولى
Using command1 As New SqlCommand("INSERT INTO Table1 (Column1, Column2) VALUES (@Value1, @Value2)", connection, transaction)
command1.Parameters.AddWithValue("@Value1", value1)
command1.Parameters.AddWithValue("@Value2", value2)
command1.ExecuteNonQuery()
End Using
' إنشاء أمر SQL لإدخال البيانات الثانية
Using command2 As New SqlCommand("INSERT INTO Table2 (Column1, Column2) VALUES (@Value3, @Value4)", connection, transaction)
command2.Parameters.AddWithValue("@Value3", value3)
command2.Parameters.AddWithValue("@Value4", value4)
command2.ExecuteNonQuery()
End Using
' تنفيذ المعاملة
transaction.Commit()
MessageBox.Show("تم إدخال البيانات بنجاح.")
Catch ex As Exception
' التراجع عن المعاملة في حالة حدوث خطأ
transaction.Rollback()
MessageBox.Show("حدث خطأ أثناء إدخال البيانات: " & ex.Message)
End Try
End Using
End Using