Access هر یک از دو جزء فوق را به عنوان مجموعه هایی از یک بانک اطلاعاتی می شناسد البته مجموعه های دیگری نیز در Access وجود دارند که بعدا به آنها خواهیم پرداخت .
با توجه به اینکه 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 نیز میتوان نوشت. در این مقاله به مرور و نمایش عناصر مجموعه های TableDefs ، QueryDefs ، Fields ، Properties و Indexes بسنده کردم در مقاله بعد اگر عمری باقی باشد قصد دارم نحوه اضافه نمودن یک عنصر جدید به هر یک از این مجموعه ها و نیز حذف یک عنصر موجود را تشریح کنم . هاشمی prdev |