تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ربط مهمة بأخرى
#1
السلام عليكم ورحمة الله

أريد معرفة كيف اربط عملية بأخرى
بمعنى
على سبيل المثال 
لا يعمل حفظ الا اذا قام بعمل حذف لملف
الرد }}}
تم الشكر بواسطة:
#2
حطها في جملة شرطية
IF statement

الرد }}}
تم الشكر بواسطة:
#3
اريد ان يقوم بالمهمة الاولى وهى حفظ ملف والمهمة الثانية هى حذف ملف
واذا لم تتم المهمة الاولى يترك تنفيذ المهمة الثانية
الرد }}}
تم الشكر بواسطة:
#4
(11-04-18, 08:55 AM)محمد ابوخليل كتب : اريد ان يقوم بالمهمة الاولى وهى حفظ ملف والمهمة الثانية هى حذف ملف
واذا لم تتم المهمة الاولى يترك تنفيذ المهمة الثانية

أخي محمد
ماذا تقصد بالحذف ؟
هل الحذف من قاعدة البيانات أم حذف ملف من القرص الصلب؟
الرد }}}
تم الشكر بواسطة:
#5
(11-04-18, 01:54 PM)عبدالله الدوسري كتب : أخي محمد
ماذا تقصد بالحذف ؟
هل الحذف من قاعدة البيانات أم حذف ملف من القرص الصلب؟

أستاذنا الفاضل/ عبدالله الدوسرى

اقصد الحذف من قاعدة البيانات...المشكلة عندى ان البرنامج يعمل على قاعدة بيانات sql على سيرفر واحيانا النت يكون بطىء ويقوم بالمهمة الثانية وهى الحذف من قاعدة البيانات بدون المهمة الاولى وهى حفظ ملف ....وقد سمعت من أحد الزملاء ان هناك طريقة لربط المهمتين مها بحيث اذ لم يتم المهمة الأولى بنجاح لا يدخل فى تنفيذ المهمة الثانية
الرد }}}
تم الشكر بواسطة:
#6
توجد طريقتين :



الطريقة الأولى : ( التحكم يكون من داخل البرنامج ) بواسطة التحقق من مخرجات جمل الإستعلام

المفروض أن تكون جملة الإستعلام ( جملة الحذف من قاعدة البيانات ) تقوم بإرجاع رقم
هذا الرقم هو عدد السجلات المحذوفة ( سواءاً قمت بحذف سجل واحد أو أكثر من سجل )
داخل الكود تستخدم هذا الرقم : إذا كان أكبر من صفر ( 0 ) تنفذ الأمر الثاني : إذا كان أصغر من أو يساوي صفر ( 0 ) إذن لم يحدث شيء على قاعدة البيانات إذن لا تنفذ الأمر الثاني











الطريقة الثانية : ( التحكم يكون من داخل قاعدة البيانات ) بواسطة الـ ( Transaction 



تعريف الـ Transaction  :
ترجمتها بالعربي تعني ( معاملة ) 
المعاملات هي مفهوم أساسي لقواعد البيانات العلائقية. 
إذن  المعاملات مفهومها الأساسي هو جمع ( عمليات متعددة أو إجراءات متعددة ) تنفذ في قاعدة بيانات , هدفها هو جمع كل هذة الإجراءات معاً لتصبح وحدة عمل واحدة.
هذه الوحدة من العمل ( تحتوي على أجراءات كثيرة مثلاً ) يمكن أن تنجح أو تفشل ككل.
إذا نجحت : يتم الالتزام والتثبيت والإعتماد بجميع التغييرات داخل هذة المعاملة وجعلها دائمة.
إذا فشل ( أي جزء / والقصد أي إجراء ) داخل هذة المعاملة ( وقمت بإستدعاء أمر التراجع عن التغييرات ) فستكون جميع البيانات كما كانت قبل المعاملة. وكأن شيءً لم يكن. بمعنى المعاملة ملغية بالكامل بجميع إجراءاتها.


مثال على  الـ Transaction :
تريد تنفيذ عدة إجراءات على قاعدة البيانات , مثلاً : أريد حذف بيانات موظف من كامل قاعدة البيانات
هذا الموظف له سجل رئيسي في جدول , وبيانات الدخول والخروج في جدول مختلف , وأي وثائق أو صور في جدول آخر , والبيانات المالية في جدول آخر , وله بيانات أخرى في جدول الصلاحيات , 
بمعنى آخر له بيانات منتشرة في جداول كثيرة.
الآن عند تنفيذ أمر الحذف على هذا الموظف ( هذا يعتبر إجراء )
وكل عملية تتم على أي جدول يعتبر ( إجراء )
سينتج عن هذا الأمر إجراءات كثيرة , وتريد تنفيذها بشكل منطقي ومتسلسل , 

الأن :

بدون إستخدام  الـ Transaction   :
الإجراء الذي ينجح سيعتمد , والإجراء الذي يفشل لن يعتمد
سينتج عن هذة الحالة , خرق لمبداء تكامل البيانات ( في حال فشل أحد الإجراءات )
مثلاُ بيانات الموظف الأساسية تم حذفها من جدول الموظفين , ولكن لا تزال هناك بيانات تخص هذا الموظف في جداول أخرى.


مع إستخدام  الـ Transaction   :
يجب أن تنجح جميع الإجراءات حتى يتم إعتماد كامل التغييرات  ,  لكن بشرط ::::::: بإستدعاء أمر الإعتماد (      ()Transaction.Commit      )
أي إجراء يفشل يعني فشل العملية بالكامل ( بجميع إجراءاتها ) , لكن بشرط ::::::: بإستدعاء أمر التراجع  (      ()Transaction.Rollback      )
















1 -
بإمكانك إنشاء الـ Transaction داخل البرنامج ( بلغة الـ VB.NET )
كود :
       Dim transaction As SqlTransaction

       transaction = connection.BeginTransaction()
طريقة إستخدام  الـ Transaction
يجب على كل command أن يأخذ نفس الـ connection الذي تم إنشاء ا الـ Transaction منه
يجب على كل command أن يأخذ نفس الـ Transaction الذي تم إنشائة

بمعنى 
connection واحد
Transaction واحد

وكل أمر ( command )  يجب أن يعتمد هذين المتغيرن
Dim command As SqlCommand
command.Connection = connection
command.Transaction = transaction

نفذ كل الإجراءات داخل جملة Try
لاحظ الكود والجملتين ( Try / Catch )
كود :
Try
' Try هنا يعتبر داخل الجملة
Catch ex As Exception
' Catch هنا يعتبر داخل الجملة
End Try


بعد الإنتهاء من تنفيذ كل الأوامر 
قم بإستدعاء أمر الإعتماد
transaction.Commit()
في نهاية الجملة Try

داخل الجملة Catch 
نفذ أمر التراجع
transaction.Rollback()








2 -
أو كتابت  الـ Transaction داخل قاعدة البيانات بإستخدام الإجراءات المخزنة  ( بلغة الـ  SQL )
كود :
BEGIN TRANSACTION
-- TRANSACTION نحن الأن داخل نطاق الـ

    BEGIN TRY
        -- Try بداية الجملة

        -- تنفيذ الأمر الأول
        INSERT INTO [Test].[dbo].[T1] ([Title], [AVG]) VALUES ('Tidd130', 130), ('Tidd230', 230)

        -- تنفيذ الأمر الثاني
        UPDATE [Test].[dbo].[T1] SET [Title] = N'az2' ,[AVG] = 1
        WHERE [dbo].[T1].[Title] = N'az'

        -- إستدعاء أمر الإعتماد
        COMMIT TRANSACTION

    END TRY
    BEGIN CATCH
    -- CATCH داخل الجملة
        ROLLBACK TRANSACTION
    END CATCH  

GO









فيما يخص قواعد البيانات , وإذا كانت لديك إجراءات عدة وتريد تنفيذها , إذن ( الطريقة الثانية الـ Transaction )
الرد }}}
#7

أستاذنا الفاضل وجارى التجربة
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Photo [نقاش] استفسارات مهمة فى الشبكات mmaalmesry 0 746 14-01-21, 10:25 AM
آخر رد: mmaalmesry
  [سؤال] كيف أربط Combobox بأخرى والوسيط قاعدة البيانات ؟؟؟ princelovelorn 0 1,484 05-05-18, 07:48 PM
آخر رد: princelovelorn
  ما هذه الملفات وهل هي مهمة ali.alfoly 7 3,690 23-04-14, 09:47 PM
آخر رد: ali.alfoly

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


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