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

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

قام بنشر

السلام عليكم

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

و أيضا نستطيع استخراج أسماء الحقول و نوعها و طولها.

السؤال: ما هي طريقة إستخراج المفتاح الأساسي لجدول.

  • Like 1
قام بنشر (معدل)
For i = 0 To CurrentDb.TableDefs("table1").Indexes.Count - 1
If CurrentDb.TableDefs("table1").Indexes(i).Primary Then
MsgBox CurrentDb.TableDefs("table1").Indexes(i).Fields(0).Name
End If
next i

تحياتي استاذ صالح

تم تعديل بواسطه رمهان
  • Like 2
  • Thanks 1
قام بنشر
6 ساعات مضت, صالح حمادي said:

السلام عليكم

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

و أيضا نستطيع استخراج أسماء الحقول و نوعها و طولها.

السؤال: ما هي طريقة إستخراج المفتاح الأساسي لجدول.

يا سلام لو تتكرم علينا بمثال جميل زيك كده 

وياسلام تضيف كود استاذى الجليل ومعلمى القدير الاستاذ @رمهان

:yes:

قام بنشر
الان, رمهان said:

For i = 0 To CurrentDb.TableDefs("table1").Indexes.Count - 1 If CurrentDb.TableDefs("table1").Indexes(i).Primary Then MsgBox CurrentDb.TableDefs("table1").Indexes(i).Fields(0).Name End If next i

ممتاز أستاذ رمهان الكود يعمل بشكل جيد شكرا جزيلا

 

قام بنشر
الان, ابا جودى said:

يا سلام لو تتكرم علينا بمثال جميل زيك كده

هذا مثال لاستخراج اسم الجدول و حقوله ونوع كل حقل :

Dim dbs, tdf As TableDef, name_field As Field
Dim i As Integer
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
   If Left(tdf.Name, 4) <> "msys" Then
   'استخراج اسماء الحقول
      For Each name_field In tdf.Fields
          MsgBox tdf.Name & "=" & name_field.Name & " - " & name_field.Type & "...." & name_field.Size
      Next name_field     
   End If
Next tdf
Set dbs = Nothing

 

  • Thanks 1
قام بنشر

 

الان, صالح حمادي said:

هذا مثال لاستخراج اسم الجدول و حقوله ونوع كل حقل :


Dim dbs, tdf As TableDef, name_field As Field
Dim i As Integer
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
   If Left(tdf.Name, 4) <> "msys" Then
   'استخراج اسماء الحقول
      For Each name_field In tdf.Fields
          MsgBox tdf.Name & "=" & name_field.Name & " - " & name_field.Type & "...." & name_field.Size
      Next name_field     
   End If
Next tdf
Set dbs = Nothing

 

c - 12....0

اسف جدا ولكن ما هى مدلولات الارقام هذه
هل تدل على نوع الحقل ؟

 

tblName=c - 12....0

قام بنشر
21 دقائق مضت, صالح حمادي said:

ممتاز أستاذ رمهان الكود يعمل بشكل جيد شكرا جزيلا

 

العفو استاذنا

3 دقائق مضت, ابا جودى said:

 

c - 12....0

اسف جدا ولكن ما هى مدلولات الارقام هذه
هل تدل على نوع الحقل ؟

 

tblName=c - 12....0

من ويت جبت هذه الارقام اباجودي ؟؟؟ ليست بكود الاستاذ صالح

قام بنشر
الان, صالح حمادي said:

هذا مثال لاستخراج اسم الجدول و حقوله ونوع كل حقل :


Dim dbs, tdf As TableDef, name_field As Field
Dim i As Integer
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
   If Left(tdf.Name, 4) <> "msys" Then
   'استخراج اسماء الحقول
      For Each name_field In tdf.Fields
          MsgBox tdf.Name & "=" & name_field.Name & " - " & name_field.Type & "...." & name_field.Size
      Next name_field     
   End If
Next tdf
Set dbs = Nothing

 

وضعت الكود خلف زر امر :blink:

get data of tbl in db.accdb

قام بنشر

يبدو ان لديك اصدار جديد بالاكسس ابا جودي .. لم يفتح معي لدي 2013

قام بنشر

اهاه 

اللي هي النوع والحجم

type وهي تعود بارقام نوع البيانات وتقدر تبحث في مصادر الاكسس عن مدلول كل رقم مانوعه

وللحصول على اسم النوع وتريح نفسك 

MsgBox tdf.Name & "=" & name_field.Name & " - " & TypeName(name_field.Type) & "...." & name_field.Size

size حجم الحقل

بالتوفيق

 

  • Like 1
قام بنشر
11 ساعات مضت, صالح حمادي said:

السؤال: ما هي طريقة إستخراج المفتاح الأساسي لجدول.

السلام عليكم

مشاركة مع احبتي 

MsgBox CurrentDb.TableDefs("yourtable").Indexes("PrimaryKey").Fields(0).Name

 

  • Like 1
قام بنشر
في ٢٥‏/٤‏/٢٠١٩ at 12:21, ابوخليل said:

السلام عليكم

مشاركة مع احبتي 


MsgBox CurrentDb.TableDefs("yourtable").Indexes("PrimaryKey").Fields(0).Name

 

لانه يفترض ان المفتاح موجود ومش كدا بس برضه يشترط ان اسمه primarykey  وهذا يحدث نادرا فليس دائما يوجد مفتاح اساسي وباسم primarykey

تحياتي

  • Like 1
قام بنشر

جرب ياغالي على جدول مافيه مفتاح اساسي

واحكم انت

تحياتي

قام بنشر

 ما فهمت !! ليش اجرب على جدول بدون مفتاح 

والطلب هو استخراج او ارجاع اسم مفتاح رئيسي موجود داخل جدول 

واذا الجدول ما فيه مفتاح من وين يبي يجيبه ؟

اكيد سيرجع خطأ ، ونحن يمكننا التعامل معه من اقصر الطرق 

 On Error GoTo PrimErr:
 MsgBox CurrentDb.TableDefs("tbl1").Indexes("PrimaryKey").Fields(0).Name
PriErr:
    Exit Sub
PrimErr:
    MsgBox "لا يوجد مفتاح أساسي للجدول"
    Resume PriErr

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

هذا الذي عندي .. بارك الله فيك

 

 

  • Like 1
قام بنشر

ما اجمل من حوار عمالقة الاكسس

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

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

قام بنشر
الان, ابوخليل said:

مشاركة مع احبتي 


MsgBox CurrentDb.TableDefs("yourtable").Indexes("PrimaryKey").Fields(0).Name

جزاك الله خيرا أستاذنا الغالي

36 دقائق مضت, رمهان said:

type وهي تعود بارقام نوع البيانات وتقدر تبحث في مصادر الاكسس عن مدلول كل رقم مانوعه

وللحصول على اسم النوع وتريح نفسك 


MsgBox tdf.Name & "=" & name_field.Name & " - " & TypeName(name_field.Type) & "...." & name_field.Size

size حجم الحقل

نعم type تعود برقم يدل على نوع معين و شكرا أستاذ رمهان على إضافة الدالة TypeName

  • Like 1
قام بنشر
17 ساعات مضت, رمهان said:

لانه يفترض ان المفتاح موجود ومش كدا بس برضه يشترط ان اسمه primarykey  وهذا يحدث نادرا فليس دائما يوجد مفتاح اساسي وباسم primarykey

تحياتي

@ابوخليل

اهملت النقطة الثانية 

جرب على جدول ليس اسم المفتاح الاساسي primarykey

قام بنشر

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

وطبيعي لن يعمل او بالاصح لن يجده لو ان احدا اجتهد ودخل الى الفهارس وغير الاسم 

وما دمت اخوي الغالي بهذه الدقة في اختياراتك وطرحك للحلول ، فالكود الذي تفضلت به أنا وانت كلها قاصرة

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

وقد وجدت حلا  شاملا  يستخرج جميع مفاتيح الجدول ان وجدت 

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim ix As DAO.Index
Dim fld As DAO.Field
Dim strFields As String
Set db = CurrentDb
Set tdf = db.TableDefs("tbl1")
For Each ix In tdf.Indexes
If ix.Primary Then
For Each fld In ix.Fields
strFields = strFields & "," & fld.Name
Next fld
Exit For
End If
Next ix
If Len(strFields) > 0 Then strFields = Mid$(strFields, 2)
MsgBox strFields

 

  • Like 2
قام بنشر
الان, صلاح بلعلا said:

هل يمكن التواصل معكم لبعض الاستفسارات

أخي صلاح مرحبا بك في المنتدى

إن كان لديك أي سؤال فقم بفتح موضوع جديد و سوف تجد من يجيبك إن شاء الله

 

قام بنشر
في ٢٦‏/٤‏/٢٠١٩ at 09:52, ابوخليل said:

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


Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim ix As DAO.Index
Dim fld As DAO.Field
Dim strFields As String
Set db = CurrentDb
Set tdf = db.TableDefs("tbl1")
For Each ix In tdf.Indexes
If ix.Primary Then
For Each fld In ix.Fields
strFields = strFields & "," & fld.Name
Next fld
Exit For
End If
Next ix
If Len(strFields) > 0 Then strFields = Mid$(strFields, 2)
MsgBox strFields

@ابوخليل

ممكن تشرح وجود اكثر من مفتاح ؟

لانه حسب علمي لايمكن ان يكون هناك اكثر من مفتاح واحد في الجدول؟

مشكور

 

قام بنشر
الان, رمهان said:

لانه حسب علمي لايمكن ان يكون هناك اكثر من مفتاح واحد في الجدول؟

يمكن إضافة أكثر من مفتاح واحد في الجدول لاحظ هذه الصورة:

4.jpg.cf05ef4e2a219c49b2de86722261ed5a.jpg

  • 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