صفحه اول آخرین ارسال ها جستجو بایگانی راهنما تقویم تماس با ما
مـحل تبلیــغات 

 

مـحل اخبــار و اطلاعیــه ها

«درصـورت بـروز هـرگـونه مشــکلات بـراي ســايت ... جـهت اطـاعات به وبــلاگ پشــتيبـان سـايت مـراجعـه فـرماييد»

«درخــواست مـديـريـت تـوسط شـما کـاربـران عـزيز و گــرامي»

«آپـلود سـنتر پـرقدرت بـا حجم آپـلود بـالاي فـايل هـاي شـما»

مــشاهـدۀ ســایـت به زبــان دیــگر

قدیمی 11 Jan 2011   #1
GodMaster
Administrator
 
GodMaster آواتار ها
 
تاریخ عضویت: Dec 2010
نوشته ها: 1,498
Thanks: 76
Thanked 6 Times in 5 Posts
پیش فرض مجموعه ها در اكسس

مجموعه هاي زير به عنوان اجزايي از يك بانك اطلاعاتي Access معرفي شدند . 1. جداول 2. پرس وجوها
با توجه به اينكه Access از زبان VBA مخفف Visual Basic for Application براي نوشتن كد برنامه ها استفاده مي كند . در اين مقاله ميخواهيم ببينيم نحوه دسترسي به اين اجزا از طريق كد برنامه چگونه است.
Access هر يك از دو جزء فوق را به عنوان مجموعه هايي از يك بانك اطلاعاتي مي شناسد البته مجموعه هاي ديگري نيز در Access وجود دارند كه بعدا به آنها خواهيم پرداخت . جهت دسترسي به هر يك از اجزاي يك مجموعه در Access نياز به تعريف متغيرهايي از همان نوع داريم. تعريف متغيرها توسط دستور Dim صورت مي گيرد و علاوه بر انواع معمول در ساير زبانهاي برنامه نويسي مانند Integer و String ، انواع زير نيز كاربرد دارند .
1. Database (براي دسترسي به يك بانك اطلاعاتي )




2. TableDef (براي دسترسي به جداول يك بانك اطلاعاتي ) 3. QueryDef (براي دسترسي به پرس وجوهاي يك بانك اطلاعاتي ) 4. Property (براي دسترسي به خصوصيات يك عنصر اطلاعاتي مانند فيلد ) 5. Index (براي دسترسي به انديسهاي يك جدول) 6. Field (براي دسترسي به فيلد هاي يك جدول)
دستورات زير مثالهايي از تعريف متغير هستند
Dim db As Database
Dim tabel As tabledef
Dim Query As QueryDef
Dim fld As Field
Dim Prop As Property
Dim s As String
Dim i As Integer
كه از الگوي كلي زير جهت تعريف متغير تبعيت ميكنند
Dim نام متغير AS نوع متغير
جهت انتساب هر يك از متغيرهاي اطلاعاتي فوق به عنصر متناظر از بانك اطلاعاتي از دستور Set به شكل زير استفاده ميشود
Set نام متغير = مقدار
براي مثال دستور Set db = CurrentDb جهت انتساب متغير db به بانك اطلاعاتي جاري به كار ميرود (از تابع CurrentDb جهت اشاره به بانك اطلاعاتي جاري استفاده شده است )
براي دسترسي به اجزا يا خصوصيات يك متغير اطلاعاتي بين نام متغير و جزء مربوطه نقطه قرار مي گيرد
براي مثال روال زير كه در رويداد كليك دگمه Command1 واقع بر يك فرم نوشته شده است باعث نمايش نام كليه جداول اطلاعاتي موجود در بانك اطلاعاتي جاري ميشود. البته جداول اطلاعاتي ديگري نيز علاوه بر جداولي كه خودتان ايجاد كرده ايد نيز نمايش داده ميشوند كه جدول سيستمي مورد استفاده Access هستند .
Private Sub Command1_Click()
Dim db As Database
Dim i As Integer
Set db = CurrentDb
For i = 0 To db.TableDefs.Count - 1
MsgBox db.TableDefs(i).Name, vbOKOnly
Next i
End Sub
همانطور كه در كد فوق مشاهده ميشود مجموعه TableDefs مربوط به عنصر بانك اطلاعاتي آرايه اي است از جداول اطلاعاتي .
انديس آرايه ها از صفر شروع ميشود و توسط متد Count تعداد آنها به دست مي آيد .
جهت مرور اجزاي يك مجموعه در Access روش ساده تري نيز وجود دارد و آن استفاده از حلقه For Each Next با الگوي زير ميباشد.
For Each element In Collection

Next element
با استفاده از اين دستور روال فوق به شكل زير در مي آيد
Private Sub Command1_Click()
Dim db As Database
Dim tabel As tabledef
Set db = CurrentDb
For Each tabel In db.TableDefs
MsgBox tabel.Name, vbOKOnly
Next tabel
End Sub
فيلدهاي يك جدول اطلاعاتي نيز تشكيل مجموعه اي به نام Fields را ميدهند. كد زير با مرور فيلدهاي جدول TableName نام كليه فيلدهاي آن را نمايش ميدهد.
Private Sub Command2_Click()
Dim db As Database
Dim fld As Field
Set db = CurrentDb
For Each fld In db.TableDefs("TableName").Fields
MsgBox fld.Name, vbOKOnly
Next fld
End Sub
در كد فوق امكان انتساب جدول TableName به يك متغير اطلاعاتي از نوع tabledef و استفاده از آن در برنامه نيز وجود دارد .
هر يك از فيلدهاي يك جدول اطلاعاتي داراي خصوصياتي هستند كه اين خصوصيات نيز تشكيل يك مجموعه به نام Properties ميدهند مثلا خاصيت AllowZeroLength مربوط به يك فيلد مشخص ميكند كه در هنگام ورود اطلاعات ميتوان آن فيلد را خالي رد كرد يا نه . كد زير با به كارگيري سه حلقه تو در تو نام كليه خصوصيات مربوط به كليه فيلدهاي جداول اطلاعاتي بانك اطلاعاتي جاري را نمايش ميدهد از آنجايي كه اي ن تعداد زياد است ميتوانيد با فشار Ctrl+Break برنامه را متوقف كرد.
Private Sub Command3_Click()
Dim db As Database
Dim tabel As tabledef
Dim fld As Field
Dim Prop As Property

Set db = CurrentDb
For Each tabel In db.TableDefs
For Each fld In tabel.Fields
For Each Prop In fld.Properties
MsgBox Prop.Name, vbOKOnly, tabel.Name & "." & fld.Name
Next Prop
Next fld
Next tabel
End Sub
علاوه بر فيلدهاي هر جدول اطلاعاتي ، خود جدول نيز خصوصياتي دارد كه خودتان با نوشتن كد مشابه ميتوانيد آنها را نمايش دهيد.
پرس و جوهاي موجود در هر بانك اطلاعاتي نيز تشكيل يك مجموعه به نام QueryDefs ميدهند كد زير با مرور اين مجموعه در بانك اطلاعاتي جاري اسامي آنها را نمايش ميدهد.
Private Sub Command4_Click()
Dim db As DAO.Database
Dim Query As QueryDef
Set db = CurrentDb
For Each Query In db.QueryDefs
MsgBox Query.Name, vbOKOnly
Next Query
End Sub
هر يك از مجموعه هاي فوق را علاوه بر مرور با دستور For Each Next توسط انديس آرايه مربوطه نيز ميتوان مرور كرد كد قبل را با اين روش نيز بازنويسي ميكنيم.
Private Sub Command4_Click()
Dim db As DAO.Database
Dim i As Integer
Set db = CurrentDb
For i = 0 To db.QueryDefs.Count - 1
MsgBox db.QueryDefs(i).Name, vbOKOnly
Next
End Sub
جهت جستجوي سريع ركوردهاي يك جدول اطلاعاتي از ايندكس استفاده مي شود . اكسس توصيه ميكند هر جدول اطلاعاتي داراي يك Primary Key يا كليد اوليه باشد كه در حقيقت نوعي ايندكس است كه اجازه ورود مقادير تهي يا Null به فيلد مربوطه را نمي دهد و همچنين از ورود مقادير تكراري به آن فيلد جلوگيري ميكند . به عنوان مثال فيلد كد پرسنلي در جدولي كه حاوي اطلاعات پرسنل است ميتواند يك فيلد Primary Key باشد.
جهت ايجاد يك ايندكس ، در محيط طراحي يا Design جدول مربوطه روي آيكن Indexes واقع در Toolbar اكسس كليك كنيد در اينجا هر سطر ميتواند بيانگر يك ايندكس يا ترتيب بر اساس يك فيلد به صورت صعودي يا نزولي باشد . براي ايجاد يك ايندكس بر اساس چند فيلد ، در سطرهاي بعدي ستون نام ايندكس را خالي بگذاريد و فقط نام فيلد را انتخاب نماييد.
انديسهاي هر جدول اطلاعاتي نيز تشكيل يك مجموعه به نام Indexes ميدهند كه توسط كد زير ميتوان آنها را مرور كرد .
Private Sub Command5_Click()
Dim db As Database
Dim tabel As tabledef
Dim ind As Index
Set db = CurrentDb
Set tabel = db.TableDefs("TableName")
For Each ind In tabel.Indexes
MsgBox ind.Name, vbOKOnly
Next ind
End Sub

دستور انتساب

Set tabel = db.TableDefs("TableName")
را به شكل

Set tabel = db!TableName
نيز ميتوان نوشت.
__________________
سوالات خود را در اينجا مطرح كنيد تا در كمترين زمان ممكن به پاسخ خود برسيد
GodMaster آنلاین نیست.   پاسخ با نقل قول

5 Lastest Threads by GodMaster
Thread Forum Last Poster Replies Views Last Post
قیمت خودروهای وارداتی - بهمن 92 قيمت اتومبيل GodMaster 0 8930 01 Feb 2014 01:17
قیمت مدلهای پروتون – زاگرس خودرو - بهمن 92 قيمت اتومبيل GodMaster 0 6437 01 Feb 2014 01:16
قیمت خودروهای هوندا – فامیلی موتور - بهمن 92 قيمت اتومبيل GodMaster 0 6330 01 Feb 2014 01:16
قیمت خودروهای ولوو – افراموتور - بهمن 92 قيمت اتومبيل GodMaster 0 6044 01 Feb 2014 01:15
قیمت خودروهای آلفارومئو – آلفاموتور - بهمن 92 قيمت اتومبيل GodMaster 0 5745 01 Feb 2014 01:14

پاسخ


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو در موضوع
جستجو در موضوع:

جستجوی پیشرفته
نحوه نمایش

مجوز های ارسال و ویرایش
شما نمیتوانید موضوع جدیدی ارسال کنید
شما امکان ارسال پاسخ را ندارید
شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
شما نمیتوانید پست های خود را ویرایش کنید

BB code فعال است
شکلک ها فعال است
[IMG] فعال است
کد HTML غیر فعال است

انتخاب سریع یک انجمن


اکنون ساعت 00:14 برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد.