تقييم الموضوع :
  • 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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 223 25-02-24, 11:26 PM
آخر رد: heem1986
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 158 21-02-24, 01:37 AM
آخر رد: heem1986
  كيفية انشاء سكريبت لقاعدة بيانات من خلال الكود heem1986 1 194 20-02-24, 12:00 AM
آخر رد: Kamil
  كيفية تنفيذ أمر عرض بيانات من فورم ثان مصمم هاوي 7 329 19-02-24, 12:28 AM
آخر رد: مصمم هاوي
  كيفية حفظ وتحزيم المشروع وتشغيله كبرنامج علىجميع الاجهزة الرائد 3 1,123 18-02-24, 10:37 PM
آخر رد: الحزين اليماني
  تنفيذ كود عند حدوث تغيرات فى أحد جداول قاعد بيانات sql heem1986 2 247 16-02-24, 06:37 AM
آخر رد: عبدالله الدوسري
  [سؤال] كيفية انشاء فورم داخل مشروعى عاصم النجار 2 305 05-01-24, 12:36 AM
آخر رد: HALIM ELEULMA
  [سؤال] كيفية ربط ماكينة الدفع ببرنامج الكاشير ؟ osamaelmaghraby 3 323 26-12-23, 11:53 PM
آخر رد: osamaelmaghraby
  كيفية رسم بيان دالة رياضية؟ الخير19 6 415 23-12-23, 03:36 PM
آخر رد: الخير19
  اضافة ادوات لفيجوال بيسك خالد20 10 1,977 18-12-23, 07:51 PM
آخر رد: ابراهيم عبدالباقى

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


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