نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: مجموعه ها در اکسس

  1. #1

    New 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
    نيز ميتوان نوشت.
    در اين مقاله به مرور و نمايش عناصر مجموعه هاي TableDefs ، QueryDefs ، Fields ، Properties و Indexes بسنده كردم در مقاله بعد اگر عمري باقي باشد قصد دارم نحوه اضافه نمودن يك عنصر جديد به هر يك از اين مجموعه ها و نيز حذف يك عنصر موجود را تشريح كنم .
    ویرایش توسط !MAHSA! : 2013/09/12 در ساعت 22:18

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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