تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية اضافة اكتر من عمليه في وقت واحد او إلغاءها في حالة حدوث خطأ
#1
السلام عليكم
كل عام وانتم بخير
عندي مشكله وأرجو ان اجد الحل

عندي كودين لاضافة البيانات 
مثلا كود لاضافة موظف
وكود اخر لاضافة مرتب الموظف في جدول اخر

المطلوب اضافة الكودين معا وفي حالة حدوث خطأ يتم الغاء العمليه ولا يتم اضافة الكودين
PHP كود :
Dim cmd As New SqlCommand
    Dim Trans 
As SqlTransaction


    Public Sub Insert_Sallaries
(ByVal EmpName As StringByVal Job As StringByVal NetSallary As Double)
 
             Dim cmd As New SqlCommand("Insert into Sallaries_Table (EmpName,Job,NetSallary)
                                   values (@EmpName,@Job,@NetSallary)"
connSQL)
 
       cmd.Parameters.Add("EmpName"SqlDbType.NVarChar).Value EmpName
        cmd
.Parameters.Add("Job"SqlDbType.NVarChar).Value Job
        cmd
.Parameters.Add("NetSallary"SqlDbType.Decimal).Value NetSallary
        cmd
.ExecuteNonQuery()
 
   End Sub


    Public Sub Insert_Employee
(ByVal Employee_Name As StringByVal Employee_Job As String)
 
              Dim cmd As New SqlCommand("Insert into Employee_Table (Employee_Name,Employee_Job)
                                   values (@Employee_Name,@Employee_Job)"
connSQL)
 
       cmd.Parameters.Add("Employee_Name"SqlDbType.NVarChar).Value Employee_Name
        cmd
.Parameters.Add("Employee_Job"SqlDbType.NVarChar).Value Employee_Job
        cmd
.ExecuteNonQuery()
 
   End Sub


    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        connSQL
.Open()
 
       Trans connSQL.BeginTransaction
        cmd
.Connection connSQL
        cmd
.Transaction Trans

        Insert_Employee
(TextBox1.TextTextBox2.Text)
 
       Insert_Sallaries(TextBox1.TextTextBox2.TextTextBox3.Text)

 
       Trans.Commit()
 
       connSQL.Close()
 
   End Sub 

ده الكود المستخدم ارجو من الاخوه التعديل عليه ولكم جزيل الشكر.
الرد
تم الشكر بواسطة: ابراهيم ايبو
#2
السلام عليكم ورحمة الله وبركاته
أخي الكريم إمام
انشأت لك مثال في قسم الاسئلة حول عملية الـ Transaction مع الاكسس
وستجد الشرح للاكواد
http://vb4arb.com/vb/showthread.php?tid=41236
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: ابو روضة , asmarsou , asmarsou
#3
(23-04-22, 02:06 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
أخي الكريم إمام
انشأت لك مثال في قسم الاسئلة حول عملية الـ Transaction مع الاكسس
وستجد الشرح للاكواد
http://vb4arb.com/vb/showthread.php?tid=41236

الف شكر اخي ابراهيم
انا عاجز عن شكرك
بارك الله فيك وجعله الله في ميزان حسناتكم
الكود اشتغل تمام
ولكن اخي هل ينفع اعمل جملة ال Transaction علي كل كود اضافه لوحده 
انا جربتها ومنفعتش
ياريت لو تساعدني
وده الكود اللي انا جربت عليه 
PHP كود :
Public Sub insert_Employee_Table(Employee_Name As StringEmployee_Job As StringNetSallary As Double)
 
       Con.Open()
 
       Using Trans As OleDbTransaction Con.BeginTransaction
            Try
                Cmd 
= New OleDbCommand("insert into Employee_Table(Employee_Name,Employee_Job) Values(@Employee_Name,@Employee_Job)"Con)
 
               Cmd.Parameters.Add(New OleDbParameter("@Employee_Name"OleDbType.VarWChar)).Value Employee_Name
                Cmd
.Parameters.Add(New OleDbParameter("@Employee_Job"OleDbType.VarWChar)).Value Employee_Job
                Cmd
.Transaction Trans
                Cmd
.ExecuteNonQuery()
 
               Cmd.Parameters.Clear()
 
               Trans.Commit()
 
           Catch ex As Exception
                Trans
.Rollback()
 
               MessageBox.Show(ex.Message)
 
           End Try
 
       End Using
    End Sub

    Public Sub insert_Sallaries_Table
(Employee_Name As StringEmployee_Job As StringNetSallary As Double)
 
       Con.Open()
 
       Using Trans As OleDbTransaction Con.BeginTransaction
            Try
                Cmd 
= New OleDbCommand("insert into Sallaries_Table(EmpName,Job,NetSallary) Values(@EmpName,@Job,@NetSallary)"Con)
 
               Cmd.Parameters.Add(New OleDbParameter("@EmpName"OleDbType.VarWChar)).Value Txt_Employee_Name.Text
                Cmd
.Parameters.Add(New OleDbParameter("@Job"OleDbType.VarWChar)).Value Txt_Employee_Job.Text
                Cmd
.Parameters.Add(New OleDbParameter("@NetSallary"OleDbType.Numeric)).Value Convert.ToDouble(Txt_NetSallary.Text)
 
               Cmd.Transaction Trans
                Cmd
.ExecuteNonQuery()
 
               Trans.Commit()
 
           Catch ex As Exception
                Trans
.Rollback()
 
               MessageBox.Show(ex.Message)
 
           End Try
 
       End Using
    End Sub 
الرد
تم الشكر بواسطة: ابراهيم ايبو
#4
السلام عليكم ورحمة الله وبركاته
اخي الكريم امام
الغاية من جملة كود الـ  Transaction هو ربط تنفيذ اكثر من جملة حفظ او تعديل او حذف كلها اي ان يتحقق تنفيذ كل الاكواد بدون خطأ عندها يتم تنفيذ المطلوب على مستوى قاعدة البيانات وعند حذوث اي خطأ لاي سبب كان في احد الاكواد لن يتم تنقيذ اي كود على مستوى قاعدة البيانات حتى ولو كان الكود الاخر صحيحا
فهنا اما تنفيذ الكل او الغاء تنفيذ الكل 
اما تطبيقه على كود واحد لامعنى له اذ لديك جملة try catch فهي تفيد في تنفيذ  كود واحد ويمكن اظهار رسالة بالخطأ الممكن حصوله والخروج من الصب بدون تنفيذ اي كود او حدوث خطأ
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: Emam emam , Emam emam
#5
وعليكم السلام ورحمة الله

دائما اذا اردت المساعدة السريعة والقصيرة لا تقل ابدا لم ينجح معي وانما ضع نص رسالة الخطاء
فليس كل من يمر هنا بجوار جهازه او له وقت كافي لتجربة كل اكواد الاعضاء المستفسرين
وبوضعك نص رسالة الخطاء يمكن معرفة سبب المشكلة وتوجيهك للعمل الصحيح

وايضا الكود الذي تستخدمه هو عملية واحدة فكل زر في عملية اضافة ويجب ان تجمع العمليتين في نفس حدث الزر ولا يكونا منفصلين
الرد
تم الشكر بواسطة: Emam emam
#6
(26-04-22, 12:04 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم امام
الغاية من جملة كود الـ  Transaction هو ربط تنفيذ اكثر من جملة حفظ او تعديل او حذف كلها اي ان يتحقق تنفيذ كل الاكواد بدون خطأ عندها يتم تنفيذ المطلوب على مستوى قاعدة البيانات وعند حذوث اي خطأ لاي سبب كان في احد الاكواد لن يتم تنقيذ اي كود على مستوى قاعدة البيانات حتى ولو كان الكود الاخر صحيحا
فهنا اما تنفيذ الكل او الغاء تنفيذ الكل 
اما تطبيقه على كود واحد لامعنى له اذ لديك جملة try catch فهي تفيد في تنفيذ  كود واحد ويمكن اظهار رسالة بالخطأ الممكن حصوله والخروج من الصب بدون تنفيذ اي كود او حدوث خطأ

بارك الله فيك اخي ابراهيم علي اهتمامك
واعتذر ان كنت لم اوضح المطلوب بشكل واضح
ولكن ما اقصده هو :
ان كود الاضافه هيكون في جملة public sub والتي تحتوي علي جملة insert وهتكون في module
ثم اقوم باستدعاء ال sub عند الضغط علي زر الاضافه واقوم باسناد القيم من ال textboxs 
وفي المثال اللي حضرتك عملته ال transaction معمول مع كودين اضافه
طب لو انا عندي مثلا 10 اكواد اضافه ومعاهم كودين حذف فكيف اقوم بتطبيق ال transaction عليهم
علشان كده انا طلبت ال transaction علي كل كود منفصل حتي استطيع ان اضيف عدد الاكواد اللي انا عاوزه
وممكن لو تكرمت انك تقوم بتطبيق ال transaction علي الكود الاخير اللي انا كتبته سابقا
اعتذر علي الاطاله وبارك الله فيكم

(26-04-22, 01:40 AM)ابو محمد محمد محمد كتب : وعليكم السلام ورحمة الله

دائما اذا اردت المساعدة السريعة والقصيرة لا تقل ابدا لم ينجح معي وانما ضع نص رسالة الخطاء
فليس كل من يمر هنا بجوار جهازه او له وقت كافي لتجربة كل اكواد الاعضاء المستفسرين
وبوضعك نص رسالة الخطاء يمكن معرفة سبب المشكلة وتوجيهك للعمل الصحيح

وايضا الكود الذي تستخدمه هو عملية واحدة فكل زر في عملية اضافة ويجب ان تجمع العمليتين في نفس حدث الزر ولا يكونا منفصلين

شكرا اخي علي اهتمامك
ولكن لم يحدث خطا في الكود
ولكن الكود لم ينجح لان عملية الاضافه لم تتم 
بمعني انه لو فيه خطا في كود بيقوم باضافة الكود التاني والمفروض انه في حالة حدوث خطا لن تتم اضافة اي منهما
الرد
تم الشكر بواسطة:
#7
ما اردت قوله الانتباه الى انك تستخدم عمليتين في زرين مختلفين
يعني لو نقرت الزر الاول وتمت العملية ونقرت الزر الثاني ولم تتم فالعملية الاولى لن ترجع

وايضا لا يمكنني الان تجربة الكود ولكن اعتقد يجب ان تجرب التالي
واستبدل الجملة

كود :
Cmd.Transaction = Trans

 بالجملة

كود :
Cmd.InsertText.Transaction = Trans

ابحث عن شئ كهذا
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف يمكن اضافة 100 سجل بسيريال مسلسل الى قاعدة بيانات dr.programming 3 284 11-05-22, 03:08 PM
آخر رد: dr.programming
  كيفية استخدام autocomplete for textbox الماجيك مسعد 2 197 08-05-22, 09:31 PM
آخر رد: الماجيك مسعد
  [نقاش] كيفية تدوير الارصدة لفتح سنة مالية جديدة محمود بكرى 9 4,452 01-05-22, 12:17 AM
آخر رد: asemshahen5
  كيفية وضع الاعلانات فى المشروع saidhamed 1 195 26-04-22, 10:15 AM
آخر رد: عدنان الشمري
Wink كيفية كتابة كود YAMENLY 5 659 26-04-22, 03:38 AM
آخر رد: YAMENLY
  كيف يمكن اضافة عناصر للكومبوبوكس اثناء تشغيل البرنامج عن طريق المستخدم haithammoftah 1 657 09-04-22, 02:15 AM
آخر رد: asmarsou
  [سؤال] كيفية استدعاء مشغل Vlc Hatem_Zahran 1 362 03-04-22, 12:33 AM
آخر رد: Taha Okla
  ممكن طريقة اضافة باسورد عند انشاء برنامج للقنوات لكي عندما احد يريد ان يدخل الى البرن omar dz 6 901 20-03-22, 07:37 PM
آخر رد: omar dz
  كيفية جعله يضغط على Enter بعد كتابة النص في ExecuteScript؟ mohmeed 0 313 20-03-22, 09:31 AM
آخر رد: mohmeed
  هل يمكن اضافة بيانات اخري عند الطباعه مع داتا جريد فيو مثل الاسم التاريخ رقم الفاتور ahmedhhh2 3 511 13-03-22, 06:03 PM
آخر رد: ahmedhhh2

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم