بازدید: ١١٧١

فیلترگذاری نتایج گزارش با استفاده از خصوصیت Filter (آموزش پیشرفته اکسس)

بازگشت به صفحه اصلی آموزش پیشرفته اکسس

 

در این پست می خواهیم نتایج یک گزارش را به گونه ای فیلترگذاری کنیم تا رکوردهایی را نمایش دهد که مقادیر آنها بالاتر از یک مقدار مشخص باشد. برای این منظور باید به دو خصوصیت خاص Report به نامهای FILTER و FILTER ON LOAD توجه کرد.

این راه حل برای زمانی است که کاربر یک کادر فرم(Form) را باز می کند که حاوی کادر متنی و دکمه فرمان می باشد. کاربر یک مقدار را در کادر متنی وارد می کند و بر روی دکمه فرمان کلیک می کند. سپس دکمه فرمان مربوطه یک کد VBA کوچک را اجرا می کند تا گزارش را باز کند. با بارگذاری گزارش، یک فیلتر از قبل تعریف شده در خصوصیت Filter گزارش اجرا می شود تا نتایج مورد نیاز را تولید کند.  

 

فیلترگذاری گزارش

شکل 1: کادر فرم برای گرفتن یک مقدار از کاربر

 

اکنون به نحوه عملکرد این گزارش می پردازیم. هنگامی که گزارش باز می شود، اکسس خصوصیت FILTER ON LOAD گزارش را چک می کند(که قبلا ما آن را بر روی YES تنظیم کرده ایم). هنگامی که متوجه شد، مقدار آن برروی YES تنظیم شده است، آنگاه FILTER مربوط به گزارش را اعمال می کند(که قبلا ما در خصوصیت FILTER گزارش وارد کرده ایم). سپس فیلتر ما به مقدار پارامترهای کاربر که در کادر متنی موجود در فرم وارد کرده است، مراجعه می کند و تمامی رکوردها را با مقادیر سفارش بزرگتر یا مساوی با آن مقدار فیلترگذاری می کند.

 

جدول

 

برای حل این مسئله از یک جدول (tblOrders)، یک کادر فرم (frmParameters) و یک گزارش (rptOrders) استفاده شده است. در زیر می توانید داده هایی را که باید با آنها در جدول tblOrders کار کنیم، مشاهده کنید: 

 

گزارش در اکسس

شکل 2: جدول tblOrders

 

همانطور که در شکل فوق مشاهده می کنید، جدول ما از 4 فیلد تشکیل شده است: OrderId(از نوع AutoNumberOrderDate(از نوع Date/TimeCustomer ( از نوع Text) و Total (Currency).

 

کادر فرم (Dialog Form)

 

ابتدا یک کادر فرم همانند شکل 1 ایجاد می کنیم. کادر متنی را به نام txtAmount، دکمه فرمان را cmdOpenReport و خود فرم را frmParameter می نامیم. همانطور که قبلا گفتیم، با کلیک بر روی دکمه فرمان، یک VBA اجرا می شود. برای افزودن این کد باید طبق مراحل زیر عمل کنید:

  1. دکمه فرمان را که برروی صفحه طراحی فرم قرار دارد، انتخاب کنید و برروی آیکون PROPERTY SHEET ( این آیکون در گروه TOOLS از نوار ابزار DESIGN قرار دارد) کلیک کنید.
  2. هنگامی که PROPERTY SHEET باز می شود، بر روی برگه EVENT کلیک کنید.
  3. سپس با کلیک بر روی سل ویژه ای از صفحه طراحی، رویداد ON CLICK را انتخاب کنید.
  4. اکنون نماد سه نقطه ... در لبه سمت راست سل ظاهر می شود. بر روی آن کلیک کنید و از کادر مکالمه CHOOSE BUILDER که باز شده است، گزینه CODE BUILDER را باز کنید.
  5. بر روی دکمه OK کلیک کنید تا ویرایشگر VBA باز شود. 

 

فیلترگذاری نتایج اکسس

شکل 3: رویداد On Click در PROPERTIES SHEET

 

می توانید کد زیر را کپی کرده و در ویرایشگر بچسبانید. البته خطوط بالا و پایین کد که با Private Sub … و End Sub شروع شده و خاتمه می یابند در ویرایشگر شما ظاهر می شوند بنابراین کافی است فقط قسمت میانی کد زیر را در آن کپی کنید:

 


 

Private Sub cmdOpenReport_Click()

 

On Error GoTo MyError

 

    DoCmd.OpenReport "rptOrdersFiltered", acViewReport

    DoCmd.Close acForm, Me.Name

 

Leave:

 

    Exit Sub

    

MyError:

 

    MsgBox "Error " &  Err.Number &  ": " &  Error$

    Resume Leave

 

End Sub


 

دو خط مهم این دستور با عبارت DoCmd آغاز می شوند. اولین دستور DoCmd، فرم را در نمای Report باز می کند. دومین دستور DoCmd، در زمانی که گزارش باز شده است، کادر فرم را می بندد. این نکته مهم را در نظر بگیرید که گزارش را باید قبل از بستن کادر فرم، باز کرد زیرا که باید در هنگام بارگذاری آن، به مقدار موجود در کادر متنی روی فرم رجوع شود.

 

گزارش

 

سریعترین راه برای ایجاد یک گزارش، ایجاد آن برمبنای جدول می باشد.

 

  1. در قسمت Navigation، جدول tblOrders را انتخاب کنید. اکنون باید با رنگ نارنجی مشخص شده باشد.
  2. سپس نوار ابزار CREATE را انتخاب کنید و بر روی آیکون REPORT کلیک کنید(این آیکون در REPORTS GROUP قرار دارد).

در این حالت گزارش پایه ای ایجاد می شود که می توانیم آن را بعدا در نمای DESIGN تغییر دهیم.

 

فیلترگذاری در گزارش های اکسس

شکل 4: طراحی گزارش

 

تنظیم خصوصیات Filter

 

اکنون به تنظیم خصوصیات Filter گزارش که از طریق صفحه Property قابل دسترسی می باشد، می پردازیم.

 

  1. بر روی کادر مربعی شکلی که در گوشه سمت راست و بالای صفحه طراحی Report قرار دارد، کلیک کنید. اینکار باعث می شود تا ما با خصوصیات واقعی فرم کار کنیم (به جای اینکه با یکی از کنترل های آن کار کنید).
  2. بر روی آیکون PROPERTY SHEET ( در گروه TOOLS نوار ابزار DESIGN قرار دارد) کلیک کنید در حالیکه گزارش در نمای Design باز می شود.
  3. بر روی برگه DATA کلیک کنید.
  4. اطمینان حاصل کنید که SELECTION TYPE بر روی REPORT تنظیم شده است. اگر مرحله 1 را با موفقیت انجام داده باشید، این حالت را مشاهده خواهید کرد. در غیراینصورت کافی است گزینه Form  را از فهرست مربوطه انتخاب کنید.  
  5. دستور زیر را در سل خصوصیت FILTER وارد کنید:

Total >= forms![frmParameter]![txtAmount]

این دستور بر روی رکوردهای گزارش تاثیر می گذارد همان جایی که مقدار فیلد Total بزرگتر یا مساوی مقداری است که توسط کاربر در کادر متنی فرم وارد می شود.

  1. سپس گزینه FILTER ON LOAD PROPERTY را بر روی YES تنظیم کنید. اینکار باعث می شود تا زمانی که فرم ها بارگذاری می شوند، فیلتر اعمال شود.
  2. گزارش را تحت نام rptOrdersFiltered دخیره کنید.
  3. گزارش را ببندید.

 

گزارش در اکسس

شکل 5: خصوصیات Filter فرم. در سل خصوصیت FILTER، به نحوه رجوع به کادر متنی موجود در کادر فرم دقت کنید.

 

اکنون روش حل شما باید آماده اجرا باشد. فقط کافی است در فرم frmParameter که در قسمت Navigation قرار دارد، کلیک کنید. در تصویر زیر می توانید مشاهده کنید، زمانی که مقدار  50000 بعنوان مقدار پارامتر،  توسط یک کاربر وارد می شود، نتایج گزارش به چه شکلی مشاهده می شود.

 

نتایج گزارش فیلترگذاری

شکل 6: نتایج گزارش فیلترگذاری شده برای مقادیر بزرگتر یا مساوی با 50000

 

بازگشت به صفحه اصلی آموزش پیشرفته اکسس

طراحی سایت و سئو توسط ضابط