الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد مثال عن كيفية ترحيل البيانات بواسطة اكسيس

مغلق
بدأه رامي في 22 يوليو 2004 · 38 رد · 7,390 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#26

الاخوة الاعزاء

أحمد الحربي وعبدالهادي الألمعي

اليكم الملف المرفق

حيث يتم فيه عملية الترحيل ومن ثم حف الملف الاصلي ولكن تبقى المشكلة والتي اريد لها الحل وهي حذف السجلات من الملف الاصلي التي لم يتم ترحيلها !!

اريد التعديل على الملف وشكرا جزيلا

الترحيل.rar

تم تعديل هذه المشاركة بواسطة رامي في 5 أغسطس 2004 في 15:33

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#27

تفضل

الترحيل.rar

المسلم من سلم الناس من لسانه ويده

#28

اخي العزيز muslim-es

للاسف الشديد كنا في مشكة اصبحت الان عندنا مشكلتين

المشكلة الجديدة الى ظهرت من خلال الملف الذي ارفقته بعد تعديلك عليه

هو ان الترحيل اصبح يتم لسجل واحد فقط في كل عملية ترحيل مع انه كان في البداية يرحل كامل ملف الادخال

المشكلة التانية كما هي ولم تتغير وهي مشكلة البيانات التي لم ترحل لانها مرحلة مسبقا ؟ المشكلة تحدث عند حذف بيانات جدول الادخال سوف تحذف هذه البيانات الغير مرحلة وهذا ما لا ارغب به ؟؟

اريد ان اصل الى طريقة نقدر نحتفظ بالبيانات التي لم ترحل لاي سبب كان ولاتحذف بعد عملية حذف جدول الادخال لانو ممكن جدا المستخدم يكون ادخل البيانات خطأ ولم ترحل وبالطبع عند عملية حذف جدول الادخال ستحذف هذه البيانات وهذا لا نريده ؟؟

ارجو ان ااكون قد وفقت في توضيح الفكرة

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#29

للرفع

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#30

أخي الكريم رامي ..

أعتذر إليك عن عدم استطاعتي عمل ما تريد

ولكن أخي رامي .. الطريقة التي تطلبها غير سليمة .. فأنت تقوم بالمجازفة بالسجلات والتي قد تكون مهمة .. من ناحية أخرى فطريقة الاستعلامات التي تريدها أستطيع أن أٌقول أنها (يدوية) وليست (أوتوماتيكية) وبالتالي ليست مأمونة النتائج

أما الطريقة التي أخبرتك بها بمثالها وهي طريقة ADO فهي أسلم وهي (أوتوماتيكية) .. فإذا لم تفهمها فسأعينك على فهمها وشرحها حرفاً حرفاً

وفقك الله

#31

اخي الحبيب احمد الحربي

ممكن تعطيني مثال بس يكون بسيط لموضوع الترحيل (نقل البيانات من الجدول الاصلي الى جدول الترحيل وحذف بيانات الجدول الاصلي بعد عملية النقل )باستخدام ADO

واكون ممنون الك كتيير

بس حاول يكون مثال بسيط ومفهوم وغير معقد

تم تعديل هذه المشاركة بواسطة رامي في 9 أغسطس 2004 في 10:49

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#32

الكود بالكامل :

Dim sqlInsert As String
Dim sqlDelete As String
Dim DbADO As New ADODB.Connection
Set DbADO = CurrentProject.Connection

sqlInsert = "insert into tbl2 select * from tbl1"
sqlDelete = "delete tbl1 from tbl1"
DoCmd.SetWarnings False
DbADO.BeginTrans
    DoCmd.RunSQL sqlInsert
     If DbADO.Errors.Count = 0 Then
        DbADO.CommitTrans
                      MsgBox "لا توجد أخطاء في ترحيل السجلات"
               
          DbADO.BeginTrans
            DoCmd.RunSQL sqlDelete
                If DbADO.Errors.Count = 0 Then
                   DbADO.CommitTrans
            MsgBox "لا توجد أخطاء في حذف السجلات"
                Else
                   DbADO.RollbackTrans
            MsgBox "توجد أخطاء في حذف السجلات "
                End If
   Else
      DbADO.RollbackTrans
            MsgBox " توجد أخطاء في ترحيل السجلات"
      Exit Sub
   End If

Me.comboTbl2.Requery
Me.comboTbl1.Requery

الان نأتي للتفصيل والشرح :

Dim sqlInsert As String

متغير عبارة sql لإضافة السجلات والعبارة هي :

sqlInsert = "insert into tbl2 select * from tbl1"

Dim sqlDelete As String

متغير عبارة sql لإضافة السجلات والعبارة هي :

sqlDelete = "delete tbl1 from tbl1"

Dim DbADO As New ADODB.Connection

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

Set DbADO = CurrentProject.Connection

هنا نهيئ متغير ADO لسلسلة الاتصال بالعبارة CurrentProject.Connection وهي تقوم بوصف المسار إلى القاعدة

DoCmd.SetWarnings False

هنا نلغي خاصية إظهار الرسائل عند الحذف أو الإضافة

-----------

الآن يبدأ الشغل مع ADO ففيها شيء اسمه المعاملات .. هذه المعاملات لها فوائد كثيرة من أهمها ما نحن بصدده الآن وهي تنفيذ العلميتين معاً أو إلغاؤهما معاً

DbADO.BeginTrans

هنا نبدأ بمعاملة جديدة

DoCmd.RunSQL sqlInsert

ونقوم بتنفيذ عبارة sql لإضافة السجلات .. انتبه هي في الحقيقة لا تنفذ وإنما تحتفظ بالأمر بانتظار إشارة من الطرفين أعني المعاملتين فإذا لم تجد أخطاءً نفذت العبارة

        If DbADO.Errors.Count = 0 Then

هنا نقوم باختبار التنفيذ المؤقت السابق لعبارة sql هل نجح أم لا من خلال خاصية Errors للأداة ADO .. وهذه ميزة أخرى لها .. فإذا احتوات الخاصية على أكبر من (صفر) فهذا يعني وجود خطأ .. وإلا فلا

فإن لم يجد خطأ قام بتسليم المعاملة واعتمادها بالعبارة التالية :

DbADO.CommitTrans

MsgBox "لا توجد أخطاء في ترحيل السجلات"

ثم نقوم بفتح معاملة جديدة للحذف لأنه لا توجد أخطاء

DbADO.BeginTrans

DoCmd.RunSQL sqlDelete

هنا كالسابق يتأكد من عدم وجود أخطاء

                If DbADO.Errors.Count = 0 Then
                   DbADO.CommitTrans
            MsgBox "لا توجد أخطاء في حذف السجلات"
                Else

إن وجد خطأ في الحذف تراجع عن الحذف بالعبارة التالية

                  DbADO.RollbackTrans
            MsgBox "توجد أخطاء في حذف السجلات "
                End If
   Else

إن وجد خطأ في الترحيل تراجع عن الترحيل بالعبارة التالية

     DbADO.RollbackTrans
            MsgBox " توجد أخطاء في ترحيل السجلات"

ثم نحن نقوم بإنهاء الإجراء لنطمئن أنه لا ينفذ العملية الداخلية من الحذف في حال فشل الترحيل مع أن معاملة الحذف لن تنفذ حتى تنفذ معاملة الترحيل

      Exit Sub
   End If

هنا نقوم بتحديث مربعي القائمة

Me.comboTbl2.Requery
Me.comboTbl1.Requery

ملاحظة : لقد كتبتها على عجل .. أرجو أن لا يكون بها خطأ

#33

اخيي العزيز احمد الحربي

اليك الملف المرفق بعد وضع بعد تطبيق الكود الذي وضعته انتا في المشاركة السابقة

المهم طبقت الكود

ولكن نفس المشكلة مازلت باقية

وهي مشكلة البيانات التي لم ترحل لانها مرحلة مسبقا ؟ المشكلة تحدث عند حذف بيانات جدول الادخال سوف تحذف هذه البيانات الغير مرحلة وهذا ما لا ارغب به ؟؟

اريد ان اصل الى طريقة نقدر نحتفظ بالبيانات التي لم ترحل لاي سبب كان ولاتحذف بعد عملية حذف جدول الادخال لانو ممكن جدا المستخدم يكون ادخل البيانات خطأ ولم ترحل وبالطبع عند عملية حذف جدول الادخال ستحذف هذه البيانات وهذا لا نريده ؟؟

مثال ذلك في البرنامج المرفق عندنا جدولين ملف الادخال وملف الترحيل

لو دخلنا البيانات التالية

1 محمد

2 علي

3رامي

وعملنا الترحيل

سوف تنتقل الي ملف الترحيل وتلغى من ملف الادخال

لحد هنا الموضوع اوكي

ولكن بعد هذه العملية

لو كان ملف الادخال يحتوي على مايلي

1سعيد

4مجدي

نلاحظ انه تم ترحيل رقم 4 مجدي

ولم يتم ترحيل رقم 1 سعيد لانو رقم 1 مرحل مسبقا

وهذا صحيح

المشكلة الان بعد عملية حذف جدول الادخال سوف تحذف البيانات ومن ضمنها رقم 1سعيد مع انه لم يرحل وهنا سؤالى كيف تحل هذه الاشكالية اعني كيف نحتفظ بالبيانات التي لم ترحل ..

ارجو ان يتم تعديل على الكود ما ينتاسب مع ذلك

وشاكر لك جهودك

وعذرا على الاطالة

الترحيل3.rar

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#34

للرفع

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#35

للرفع ارجو المساعدة

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#36

بانتظار الرد

ارجو الا يطوووووووووووول

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#37

أعذرني أخي الكريم رامي ..

فأنا الآن في سفر .. وحينما أرجع إلى داري سأوافيك بالحل إن شاء الله

فإلى ذلك الحين .. أستودعك الله

#38

الله يجيبك بالسلامة

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#39

وينك يا اخ عبدالهادي

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…