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

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

قام بنشر

السلام عليكم

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

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

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

  • 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
قام بنشر
  في 24‏/4‏/2019 at 22:18, صالح حمادي said:

السلام عليكم

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

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

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

Expand  

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

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

:yes:

قام بنشر
  في 24‏/4‏/2019 at 22:50, رمهان 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

Expand  

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

 

قام بنشر
  في 25‏/4‏/2019 at 05:41, ابا جودى said:

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

Expand  

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

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
قام بنشر

 

  في 25‏/4‏/2019 at 06:33, صالح حمادي 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

 

Expand  

c - 12....0

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

 

tblName=c - 12....0

قام بنشر
  في 25‏/4‏/2019 at 06:27, صالح حمادي said:

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

 

Expand  

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

  في 25‏/4‏/2019 at 06:45, ابا جودى said:

 

c - 12....0

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

 

tblName=c - 12....0

Expand  

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

قام بنشر
  في 25‏/4‏/2019 at 06:33, صالح حمادي 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

 

Expand  

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

get data of tbl in db.accdbFetching info...

قام بنشر

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

قام بنشر

اهاه 

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

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

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

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

size حجم الحقل

بالتوفيق

 

  • Like 1
قام بنشر
  في 25‏/4‏/2019 at 09:21, ابوخليل said:

السلام عليكم

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

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

 

Expand  

لانه يفترض ان المفتاح موجود ومش كدا بس برضه يشترط ان اسمه 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
قام بنشر

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

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

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

قام بنشر
  في 25‏/4‏/2019 at 09:21, ابوخليل said:

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

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

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

  في 25‏/4‏/2019 at 08:09, رمهان said:

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

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

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

size حجم الحقل

Expand  

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

  • Like 1
قام بنشر
  في 25‏/4‏/2019 at 09:54, رمهان said:

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

تحياتي

Expand  

@ابوخليل

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

جرب على جدول ليس اسم المفتاح الاساسي 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
قام بنشر
  في 26‏/4‏/2019 at 08:27, صلاح بلعلا said:

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

Expand  

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

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

 

قام بنشر
  في 26‏/4‏/2019 at 06: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

@ابوخليل

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

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

مشكور

Expand  

 

قام بنشر
  في 28‏/4‏/2019 at 05:17, رمهان said:

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

Expand  

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

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