اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

الاستاذة الافاضل في منتدى اوفيسنا

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

فهارس كثيرة في الجدول.jpg

قام بنشر
46 دقائق مضت, ابو عبد الله العراقي said:

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

ما خط بالاحمر غير مفهوم

هل جربت انشاء حقل جديد في الجدول الرئيسي وتعطيه الاسم المناسب .. ثم تربطه بالجدول الجديد ؟

قام بنشر

نعم استاذ

 حاولت اضع حقل جديد في نفس الجدول الرئيسي وبمجرد ان اجعل هذا الحقل مفهرس ( سواء قابل للتكرار او غير قابل ) تظهر نفس الرسالة فشل

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

قام بنشر
2 ساعات مضت, ابو عبد الله العراقي said:

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

اعتقد الحد الاقصى 32

للعلم يوجد حقول فهرسها مخفي

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

اذا لا تجيد الانجليزية استعن بقوقل للترجمة

هنا

وهنا

قام بنشر (معدل)

شكراً جزيلاً استاذ على تواصلك معي في ايجاد حل لهذه  المشكلة 

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

 Currentdb.Tabledefs("YourTableNameGoesHere").Indexes.Count

لكن استاذ في اي وحدة نمطية اضع هذا الكود وكيف اشغله ؟؟

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

 

تم تعديل بواسطه ابو عبد الله العراقي
قام بنشر

اعتقد العدد للجدول الواحد

اعمل زر وفي حدث النقر ضع الكود ادناه .. ولا تنسى تضع اسم جدولك بدل الظاهر هنا

MsgBox CurrentDb.TableDefs("your table").Indexes.Count

 

قام بنشر

هذه وحدة نمطية تقوم بعمل جدول لاظهار الفهارس في جميع الجداول

مع شرح دلالة الحقول في الجدول

وارفقت لك مثالا بذلك .... ويمكنك نقلها الى برنامجك 

انتبه !! المثال لا يشتمل على جداول .. لرؤية النتيجة يجب جلب جداول اليه

'This code creates a table called tbl_IndexTable and populates it with records stating which fields in your database are indexed.
'The table has the following fields.
'tbl_IndexTable
'IndexId......... The primary key for the table
'FieldName........ The name of the field that is indexed
'IndexName....... The Name of the INDEX
'TableName ....... The name of the table
'IsPrimaryKey........ Is the field a primary key
'Clustered........ Is it s clustered or Non-Clustered index
'Required........ Is the field Required or Not Required
'Foreign........ Is it the field a foreign key field

Function ListIndexes()
' Procedure:  ListIndexes
' DateTime  : 1/04/2010 08:05
' Author    : Dane Miller
' Purpose   : Creates a table and Lists ALL Indexes for
'                every user created table in your database
' Arguments : N/A
' References: Microsoft ActiveX Data Objects x.x Library
'           : Microsoft DAO x.x Library
' Returns   : N/A
'---------------------------------------------------------------------------------------
 Dim db As DAO.Database
 Dim rst As DAO.Recordset
 Dim idx As DAO.Index
 Dim tbls As DAO.TableDefs
 Dim fld As DAO.Field
 Dim idx_Fields As String
 Dim tbl As DAO.TableDef
 Dim StrCreateTbl As String, StrInsertIndex As String
 On Error GoTo Errhandler
 Set db = CurrentDb()
 Set tbls = db.TableDefs()
 'create the table to hold the indexes.
StrCreateTbl = "CREATE TABLE Tbl_IndexTable (" & _
                "[IndexId] INTEGER not null identity(1,1)," & _
                "[FieldName] VARCHAR(100) , " & _
                "[IndexName] VARCHAR(100), [TableName] VARCHAR(100), " & _
                "[IsPrimaryKey] VARCHAR(5), " & _
                " [Clustered] VARCHAR(5)  , [Required] VARCHAR(5), " & _
                "[Foreign] VARCHAR(5))"
CurrentProject.Connection.Execute StrCreateTbl
 Set rst = db.OpenRecordset("tbl_IndexTable")
     For Each tbl In tbls  ' loop though all the indexes
        
          ' do not consider system tables
          If Left(tbl.Name, 4) <> "MSys" And Left(tbl.Name, 1) <> "~" Then
            ' Enumerate Indexes collection table.
             For Each idx In tbl.Indexes
                     With rst
                        .AddNew
                        ' Remove the Plus (+) sign from fields
                        idx_Fields = Replace(idx.Fields, "+", " ")
                        ' remove the semi colon from fields and replace with a comma
                        idx_Fields = Replace(idx_Fields, ";", ",")
    
                        .Fields("TableName") = tbl.Name
                        .Fields("FieldName") = idx_Fields
                        .Fields("IndexName") = idx.Name
                        .Fields("IsPrimaryKey") = IIf(idx.Primary = True, "Yes", "No")
                        .Fields("Clustered") = IIf(idx.Clustered = True, "Yes", "No")
                        .Fields("Foreign") = IIf(idx.Foreign = True, "Yes", "No")
                        .Fields("Required") = IIf(idx.Required = True, "Yes", "No")
    
                        .Update
                    End With
             Next idx
         End If
     Next tbl
     
    If MsgBox("Index Table Created. Do you want to open it now?", vbYesNo) = vbYes Then
        'open the table to show all the results.
        DoCmd.OpenTable "tbl_IndexTable", acViewNormal, acReadOnly
    End If
        
exithandler:
    Exit Function
    
Errhandler:
      If Err.Number = -2147217900 Then     'if the table already exist  Then   delete records
        CurrentProject.Connection.Execute " DELETE * FROM TBL_IndexTable"
        Resume Next
      Else:
        MsgBox Err.Number & " " & Err.Description
        Resume exithandler
     End If
'clean up
rst.Close
Set rst = Nothing
db.Close
Set db = Nothing
 End Function

المصدر

Database99.accdb

33 دقائق مضت, ابو عبد الله العراقي said:

ماذا اعمل استاذ ؟؟؟؟

😟

 

Indexes count.jpg

اعتقد عليك انقاص الفهرس الذي لا تحتاجه فعلا

من خصائص الحقل  مفهرس  =لا

قام بنشر

شكراً جزيلاً استاذ على تعبك معاي وعلى الجهد الذي تقوم به 

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

لكن المشكلة مازالت وايضا لايمكنني حذف اي فهرس من الجدول للحاجة إليها ؟ لذلك انا بأنتظار نصائحكم في هذا الموضوع 

وايضا عندي استفسار هل عدد الفهارس في الجدول له علاقة كون الاوفيس مفعل  او غير مفعل 

 

قام بنشر (معدل)
في 6‏/3‏/2024 at 18:12, ابو عبد الله العراقي said:

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

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

بالرغم أن العلاقات مفيده إلا أنها لو لم تستخدم صح تربك النظام .......

في معظم اعمالي استجلب معلومات الجدول الرئيسي بهذه الطريقة كما علمونا الاساتذة بدون ذكر اسماء الذين منهم استاذنا @ابو خليل .:fff:

                                                                                    image.gif.c951ff12b3244a80983bbc5fbeda9cb1.gif

DD504.rar

تم تعديل بواسطه kkhalifa1960
  • Like 1
  • Thanks 1
قام بنشر (معدل)

kkhalifa1960 الاخ الفاضل 

  شكراً جزيلاً على المشاركة في هذا الموضوع لكن حسب مافهمت 

     لذلك هذا الحقل يقبل التكرار وهو امر غير مطلوب tbl_Items هو حقل غير مفهرس في جدول الـــــItemName من الفيديو التوضيحي وقاعدة البيانات المرفقة أنه حقل الـــــــ

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

 بصراحة هذا الموضوع ان الجدول يقبل فقط 32 حقل مفهرس تفأجئت به

😟

كيف السبيل ؟ 

 

تم تعديل بواسطه ابو عبد الله العراقي
قام بنشر

الخلاصة ارسل المرفق .اذا اردت الحل أما غير ذلك فهي اجتهادات غير مجديه لك لأنك مصمم على شيء في رأسك فقط . لك تحياتي . والسلام ختام . ورمضان كريم وكل عام وأنتم بخير:fff:

قام بنشر

السلام عليكم 

رمضان مبارك على الجميع

  kkhalifa1960تفضل اخي الكريم

هذا مثال عدم القدرة على عمل علاقة راس باطراف بخصائص التكامل المرجعي في جدول الكتب مع جدول المبيعات بسبب كثرة الفهرسة في جدول الكتب ؟؟؟

ارجو الافادة من هذا الموضوع ؟ 

فشل.jpg

BooksD.rar

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