اذهب الي المحتوي
أوفيسنا

هل يمكن عمل استثناء في هدا الكود؟


abofayez1
إذهب إلى أفضل إجابة Solved by Foksh,

الردود الموصى بها

   ''Tables
    For idx = db.TableDefs.Count - 1 To 0 Step -1
        strName = db.TableDefs(idx).Name
        If Left(strName, 4) <> "msys" Then
            db.TableDefs.Delete strName
        Else
            Debug.Print strName
        End If
    Next idx

أساتذتنا الكرام

السلام عليكم ....وبعد:

هذا الكود جزء من دالة تقوم بحذف كل محتويات قاعدة البيانات ... وهذا الجزءالخاص بالجداول... لنفترض أن لدي جدولين : مثلا احدهما باسم 111 والثاني باسم 222  هل يمكن نعمل لهما استناء بحيث لا يتم حذفهما وكيف نعدل على الكود إن كان ذلك ممكنا ؟

إن أردتم إرفاق الدالة كاملة سأرفقها وهي موجودة وأخذتها من المنتدى.

جزاكم الله خير  

رابط هذا التعليق
شارك

11 دقائق مضت, abofayez1 said:
   ''Tables
    For idx = db.TableDefs.Count - 1 To 0 Step -1
        strName = db.TableDefs(idx).Name
        If Left(strName, 4) <> "msys" Then
            db.TableDefs.Delete strName
        Else
            Debug.Print strName
        End If
    Next idx

أساتذتنا الكرام

السلام عليكم ....وبعد:

هذا الكود جزء من دالة تقوم بحذف كل محتويات قاعدة البيانات ... وهذا الجزءالخاص بالجداول... لنفترض أن لدي جدولين : مثلا احدهما باسم 111 والثاني باسم 222  هل يمكن نعمل لهما استناء بحيث لا يتم حذفهما وكيف نعدل على الكود إن كان ذلك ممكنا ؟

إن أردتم إرفاق الدالة كاملة سأرفقها وهي موجودة وأخذتها من المنتدى.

جزاكم الله خير  

فى السطر هذا 

11 دقائق مضت, abofayez1 said:
        If Left(strName, 4) <> "msys" Then

ضيف الشرط الاخر الذى تريده مثل and ثم الشرط الغير مستثني 

لاني مش فاهم ايه هو الاثتثناء الذى تريده 

فده ال اقدر اقدمه لك

رابط هذا التعليق
شارك

استخدم هذا الكود الذي يقوم بحذف بيانات جميع الجداول ما عدا الجداول التي تحددها :

ضع هذا الكود في وحدة نمطية :

Function DeleteDataFromTables(excludedTables() As Variant) As String
    Dim obj As AccessObject, dbs As Object

    Set dbs = Application.CurrentData

    For Each obj In dbs.AllTables
        If Left(obj.Name, 4) <> "MSys" And Not IsInArray(obj.Name, excludedTables) Then
            DoCmd.SetWarnings False
            DoCmd.RunSQL ("DELETE * FROM " & obj.Name)
            DoCmd.SetWarnings True
        End If
    Next obj

    DeleteDataFromTables = "تم حذف سجلات جميع الجداول"
End Function

Function IsInArray(value As Variant, arr As Variant) As Boolean
    Dim element As Variant
    On Error Resume Next
    IsInArray = False
    For Each element In arr
        If element = value Then
            IsInArray = True
            Exit Function
        End If
    Next element
End Function

ثم يمكنك استدعاء الكود واستخدامه بالطريقة التالية :

Sub ExampleUsage()
    Dim excludedTables() As Variant
    excludedTables = Array("Table1", "Table2", "Table3") ' قم بتعيين أسماء الجداول التي ترغب في استثنائها هنا

    Dim result As String
    result = DeleteDataFromTables(excludedTables)

    MsgBox result
End Sub

 

  • Like 3
رابط هذا التعليق
شارك

4 ساعات مضت, عمر ضاحى said:

فى السطر هذا 

ضيف الشرط الاخر الذى تريده مثل and ثم الشرط الغير مستثني 

لاني مش فاهم ايه هو الاثتثناء الذى تريده 

فده ال اقدر اقدمه لك

المطلوب أن يقوم الكود بحذف كل الجداول ما عدا الجدول المسمى 11 أو 22 لا يتم حذفها

هلا تكرمت بالتعديل على الكود لأن ما عندي خبرة كافية في التعديل

4 ساعات مضت, Moosak said:

استخدم هذا الكود الذي يقوم بحذف بيانات جميع الجداول ما عدا الجداول التي تحددها :

ضع هذا الكود في وحدة نمطية :

Function DeleteDataFromTables(excludedTables() As Variant) As String
    Dim obj As AccessObject, dbs As Object

    Set dbs = Application.CurrentData

    For Each obj In dbs.AllTables
        If Left(obj.Name, 4) <> "MSys" And Not IsInArray(obj.Name, excludedTables) Then
            DoCmd.SetWarnings False
            DoCmd.RunSQL ("DELETE * FROM " & obj.Name)
            DoCmd.SetWarnings True
        End If
    Next obj

    DeleteDataFromTables = "تم حذف سجلات جميع الجداول"
End Function

Function IsInArray(value As Variant, arr As Variant) As Boolean
    Dim element As Variant
    On Error Resume Next
    IsInArray = False
    For Each element In arr
        If element = value Then
            IsInArray = True
            Exit Function
        End If
    Next element
End Function

ثم يمكنك استدعاء الكود واستخدامه بالطريقة التالية :

Sub ExampleUsage()
    Dim excludedTables() As Variant
    excludedTables = Array("Table1", "Table2", "Table3") ' قم بتعيين أسماء الجداول التي ترغب في استثنائها هنا

    Dim result As String
    result = DeleteDataFromTables(excludedTables)

    MsgBox result
End Sub

 

 

 

أستاذننا الغالي الكود هذا يقوم بحذف السجلات وليس الجداول 

 

رابط هذا التعليق
شارك

  • أفضل إجابة
36 دقائق مضت, abofayez1 said:

 

أستاذننا الغالي الكود هذا يقوم بحذف السجلات وليس الجداول 

 

بعد إذن استاذنا ، هذه تجربة بسيطة

أخي @abofayez1

جرب هذا المرفق ، وضعت لك حلين ؛ انتقِ أحدهما :rol:

 

 

 

Delete Tbl.accdb

تم تعديل بواسطه Foksh
  • Like 1
رابط هذا التعليق
شارك

42 دقائق مضت, kkhalifa1960 said:

أقصدبعد تحديد عدة جداول .

1- حذف فقط مابداخل الجداول المحددة .

2- حذف الجداول المحددة.

تفضل استاذي <><><><>

في 5‏/12‏/2020 at 03:59, ابو جودي said:

السلام عليكم ورحمة الله وبركاته

هدية حصرية واما نقول حصري يبقا فى منتدى اوفيسنا وبس

كان فى مرة دكتور اسمه دكتور محمد حلبي :fff:

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

لا يرد عليه لحد ما فاض بيه وقال وهو 😡

 

ومن أجله ومن أجل عيونه أقدم تلك الهدية المتواضعة

للتجربة اضف جداول مرتبطة 

واضف جداول منضمه  ثم اختر منها ما تريد حذف البيانات منها ...  ارجوا الانتباه الجداول المرتبطه سيتم حذف البيانات منها

 

تحذيـــــــر

1- قبل الاستخدام يجب عمل نسخة احتياطيه من القاعدة

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

تدلل يا دكتور :yes:

Reset Select Table.mdb 436 kB · 111 downloads

 

رابط هذا التعليق
شارك

 

4 ساعات مضت, Foksh said:

بعد إذن استاذنا ، هذه تجربة بسيطة

أخي @abofayez1

جرب هذا المرفق ، وضعت لك حلين ؛ انتقِ أحدهما :rol:

 

 

 

Delete Tbl.accdb 904 kB · 7 downloads

نعم هذا هو المطلوب ... الخيار الثاني

بيض الله وجهك ورفع قدرك 

-----------------------------------------------------------

اليوم رديت عليك مباشرة ولكن الآن ما لقيت الرد .

وفقك الله ياعزيزي

  • Thanks 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information