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

أريد كود التاكد من وجود ((جدول وحقلين))

بدأه محمد! في 10 يوليو 2010 · 7 رد · 1,414 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

/index.php?showtopic=202722

وهذا جميل ولكن أريد كود التاكد من وجود حقلين مثلاً (AA,BB)داخل الجدول المسمى TAB_A

فإن لم يوجد الجدول أو أحد الحقلين أو كلاهما فليعطيني رسالة خطأ فقط

فهل بالإمكان هذا

وإن كان بالإمكان التشييك عليها بحيث يتاكد من نوع الحقلين (رقم) وخاصيتهما (مزدوج)

وهي ليست مهمة هذه الجزئية ولكن إن حصلت فزيادة أفضل ......

#2

للرفع

#3

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

أخوك أحمد

TableExplorer.rar

#4

هذه أخي الكريم طريقة سريعة تعتمد على أرقام الخطأ التي يعيدها أكسس عند عدم وجود كائن في مجموعته (عدم وجود جدول في مجموعة TableDefs، وعدم وجود حقل في مجموعة Fields للجدول):

On Error Resume Next

    Dim dbs As Database
    Dim tbl As TableDef
    Dim fld As Field

    Set dbs = CurrentDb
    Set tbl = dbs.TableDefs("TAB_A")

    If Err.Number = 3265 Then
        MsgBox "الجدول غير موجود", vbExclamation + vbMsgBoxRight, "جدول مفقود"
        Err.Clear
    Else
        Set fld = tbl.Fields("AA")
        If Err.Number = 3265 Then
            MsgBox "الحقل الأول غير موجود", vbExclamation, "حقل مفقود"
            Err.Clear
        End If

        Set fld = tbl.Fields("BB")
        If Err.Number = 3265 Then
            MsgBox "الحقل الثاني غير موجود", vbExclamation, "حقل مفقود"
            Err.Clear
        End If
    End If

    Set tbl = Nothing
    Set fld = Nothing

On Error Resume Next

هنا توجه المترجم إلى المتابعة في حالة وجود أي خطأ في الكود؛ نحن ننوي أن نسمح بالخطأ (وهو هنا عدم وجود كائن نحاول الوصول إليه) عمداً، من أجل أن نفحص بعدها رقم الخطأ الذي كان من المفترض أن يعيده إلينا المترجم (من تجربة الكود، عرفنا أن رقم الخطأ 3265 هو الذ يمن المفترض أن يظهر مع هذا الخطأ). نستطيع معرفة رقم آخر خطأ من الخاصية Number للكائن Err. ولا ننسى أن نصفر الأخطاء بعد كل فحص.

والله أعلم.

1
#5

بارك الله فيك أخي الفاضل أحمد

الحقيقة أن ملفك الأول عبارة عن كنز جميل اعتقد أنه الاغلب سيستفيد منه

بالنسبة للإجابة الثانية

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

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

فلو أردنا إنشاء جدول (TAB_A) به الحقل (AA) رقم مزدوج لكتبناه بالطريقة التالية

DoCmd.RunSQL "CREATE TABLE TAB_A ([AA] Double);"

وأكرر بأنك إجابتك كانت كافية شافية

ثم أكرر الشكر لك

#6

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

ويحدث الخطأ عند Type

Set fType = fld.Type("Double")

      If Err.Number = 3265 Then
         MsgBox "الحقل ليس رقماً مزدوجـــــــاً"
 Err.Clear

فهل طريقتي خاطئة ؟

#7

لا يا أخي الكريم، لا تستطيع استخدام هذه الطريقة في التأكد من نوع الحقل. الخاصية Type تختلف تماماً عن الخاصيتين TableDefs وFields، ولذلك لكل منهما أسلوب مختلف في التعامل. قد يطول الأمر إلى الكلام في مفهوم الكائنات ومجموعات الكائنات إن أردت أو أشرح لك كل شيء (وهذا موضوع دروس)، لكن يكفي هنا أن أقول: إن الخاصية Type للكائن Field (حقل)، لها قيمة مفردة، وهي نوع بيانات هذا الحقل.

إذا أردت التأكد من نوع بيانات حقل، فقارن قيمة هذه الخاصية مع أحد القيم المعروفة لأنواع كائنات الحقول في أكسس (مثلاً: dbDouble للنوع مزدوج)، وذلك بشكل يشبه التالي:

If fld.Type = dbDouble Then ...

فإذا أردنا أن ندمج هذا الفحص في الكود السابق، فيمكن أن ننتج شيئاً مثل التالي:

    On Error Resume Next

    Dim dbs As Database
    Dim tbl As TableDef
    Dim fld As Field

    Set dbs = CurrentDb
    Set tbl = dbs.TableDefs("TAB_A")

    If Err.Number = 3265 Then
        MsgBox "الجدول غير موجود", vbExclamation + vbMsgBoxRight, "جدول مفقود"
        Err.Clear
    Else
        Set fld = tbl.Fields("AA")
        If Err.Number = 3265 Then
            MsgBox "الحقل الأول غير موجود", vbExclamation, "حقل مفقود"
            Err.Clear
        ElseIf Err.Number = 0 Then
            If fld.Type <> dbDouble Then
                MsgBox "كلا... الحقل الأول ليس من نوع مزدوج", vbExclamation, "هل الحقل من نوع مزدوج"
            End If
        End If

        Set fld = tbl.Fields("BB")
        If Err.Number = 3265 Then
            MsgBox "الحقل الثاني غير موجود", vbExclamation, "حقل مفقود"
            Err.Clear
        ElseIf Err.Number = 0 Then
            If fld.Type <> dbDouble Then
                MsgBox "كلا... الحقل الثاني ليس من نوع مزدوج", vbExclamation, "هل الحقل من نوع مزدوج"
            End If
        End If
    End If

    Set tbl = Nothing
    Set fld = Nothing

أرجو أن يكون في هذا فائدة لك أخي الكريم، وإن أحببت أن تقرأ أكثر عن مفاهيم الكائنات في الأكسس، ثم طرأ لك استفسار، فأرجو ألا تتردد في طرحه، فإن استطعت أجبتك، أو أجاب غيري بإذن الله...

أخوك أحمد

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 13 يوليو 2010 في 14:08

#8

هذا بالضبط ما كنت أبحث عنه

أسأل الله أن يجزيك الجنة وأن يكفر ذنوبك وأن يفرج همك ويسعدك في الدنيا والآخرة

هذا أقل شيء أستطيع أن أقوله

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