ساخت نسخه­ های RDL از گزارشات Access با استفاده از Report Import Wizard



سوالی که مطرح می­شود این است که آیا امکان دارد گزارشات ساخته شده در Microsoft Access را به SQL Server Reporting Services(SSRS) وار کرد. قبل از پاسخ به این سوال لازم است حقایقی را صریحاً عنوان کنیم و ببینیم در صورتیکه تولیدکنندگان به سایت خریداری قدم بگذارند که باید در آن نیم دو جین(یا نیم میلیون) گزارش Access به SSRS وارد شود، با چه مشکلاتی مواجه می­شوند. حال نگاهی به نحوه تبدیل گزارشات Access به RDL می­اندازیم.

آغاز کار
برای وارد کردن گزارشات Access به SSRS ، به مولفه­های متعددی نیاز دارید:
* Access (نسخه­ای که گزارشات وارد شده را تطبیق می­دهد) باید در سیستم تولید شما نصب شده باشد. وقتیکه بانک اطلاعاتی Access توسط Import Report Wizard ویژوال استودیو(VS) ارجاع داده می­شود، Access راه اندازی می­گردد.
* VS 2008 SP1 یا VS 2005. VS 2008 SP1 ابزارهای هوش تجاری (BI) را که با VS2005 منتقل شده­اند، اجرا می کند.
* فایل بانک اطلاعاتی Access (مثلاً فایل .mdb ، فایل .accdb و یا فایل .adb-project)
* یک یا چند گزارش در بانک اطلاعاتی که داده ها را از منبع داده­های OLE DB جمع آوری می­کند. متاسفانه ، شما نمی توانید گزارشاتی را وارد کنید که داده­هایی با منبع ODBC را ارجاع می دهند. (حداقل نه مجموعه­های داده­ها را). همچنین گزارشات وارد شده نمی­توانند کد Visual Basic در ماجول ها را ارجاع دهند.
* مبحث یا مباحث راهنمای MSDN ، که آبجکت­هایی را لیست می­کند که قابل تبدیل هستند (msdn.microsoft.com/en-us/library/ms156375.aspx و msdn.microsoft.com/en-us/library/ms156508.aspx)
* کمی صبر و تحمل
Access ، یک مجموعه تولید مهندسی شده با موتور بانک اطلاعاتی مخصوص خودش (JET) و ملزومات برنامه نویسی و SQL منحصر به فرد است. بهرحال، ما Access را فقط در حد مصارف بسیار سبک تجاری و یا خانگی توصیه می­کنیم. گرچه یک برنامه کاربردی Access (از جمله گزارشات) می­تواند کد Visual Basic را پنهانی ارجاع دهد، اما روشی که پرس و جوها و رویه­های
ذخیره شده نوشته می­شوند(که در Access فقط پرس و جوهای منحصر به فردی هستند که در بانک اطلاعاتی ذخیره شده­اند) با SQL Server فرق می­کند. مکانیزم گزارش دادن نیز در مقایسه با گزارشات مبتنی بر RDL که در SSRS استفاده می­شوند، بسیار متفاوت است. توجه کنید که اگر گزارشات با کدهای زیادی دارید که پنهانی اجرا می­شوند، باید فایل .MDF را حذف نمائید چرا که آن­ها قابل تبدیل نیستند.

اجرای Report Import Wizard
برای وارد کردن گزارشات Access به SSRS ، پروژه VS را باز کنید و Business Intelligence Projects را انتخاب نمائید. اگر گزینه­ای برای پروژه BI نمی­بینید، نسخه صحیح VS را نصب نکرده اید. سپس، پروژه جدیدی بسازید و بانک اطلاعاتی SQL Server مقصد را انتخاب نمائید (همچنین می توانید یک پروژه BI برای مدیریت گزارشات وارد شده Access باز کنید). سپس، Reports را راست کلیک کرده و ImportReports ، Microsoft Access را همانند شکل 1 انتخاب نمائید. با استفاده از File و کادر مکالمه­ی Open به سمت بانک اطلاعاتی .abp ، .accdb یا .mdb پیمایش کنید که شامل گزارشاتی است که می­خواهید وارد نمایید (باید مطمئن شوید که کاربران در حین این فرآیند از بانک اطلاعاتی Access استفاده نکنند.) سپس VS ، Access را پنهانی راه­اندازی می­کند، فایل بانک اطلاعاتی یا پروژه را باز می­کند و تمام گزارشاتی را که دارد، وارد می­نماید. نیاز نیست انتخاب کنید کدام گزارش­ها در فایل وارد شوند، بنابراین اگر گزارشاتی با همين نام دارید، از شما خواسته می­شود تا رونویسی گزارشات را یکی یکی تایید کنید ، حتی اگر 17259 گزارش داشته باشید. وقتیکه Access Report Import Wizard اجرا شد، فولدر Reports پروژه شما با نسخه­های RDL گزارشات Access پر می شود(مانند تصویر 2).
اگر در حين تبدیل مشکلی وجود داشت، می­توانید اطلاعات مربوط به آن خرابی را در پنجره Output (همانطور که در شکل 3 نشان می­دهد) و در پنجره Task ببینید. توجه داشته باشید که پیام­های هشدار دهنده به ما می­گویند که برخی گزارشات به درستی وارد نشده­اند، چرا که آن­ها ماجول­ها یا کنترل کننده های رویداد را به اجرا در آورده­اند.

وارد کردن یک گزارش Access نمونه
برای این که نحوه وارد شدن یک گزارش Access ساده را نشان دهیم، یک پروژه جدید Access ساختیم که چندین جدول از بانک اطلاعاتی نمونه SQL Server AdventureWorks2008 را ارجاع می دهند. ما داده­ها را با استفاده از Access وارد کردیم و به Report Wizard اجازه دادیم تا گزارش را بسازد. پرس و جو، سطرها را از جدول Production. Products استخراج می­کند (با یک پارامتر ورودی). ما از Report Wizard خواستيم تا به Product Line ، Class و Style گروه بندی شود. تنها تغییری که در گزارش ایجاد کردیم ، تغییر رنگ هدر Style به رنگ نارنجی بود(شکل 4).
پس از اجرای Access Report Import Wizard ، نسخه RDL گزارش به پروژه VS ما اضافه شد. با دیدن پیش نمایش، متوجه شدیم که گزارش به شدت تغییر کرده، همانطور که شکل 5 نشان می­دهد. توجه کنید که تفاوت­های مهم زیر بین گزارش Access و گزارش RDL وجود دارند:
* گرچه تو رفتگی­ها وجود دارد، اما هیچ گونه گروه تعریف شده­ای که در RDL ساخته شده باشد، وجود ندارد.
* رنگ آمیزی سبز رنگ میله­ای سطر در فایل RDL ظاهر نمی­شود
* رنگ زمينه­ای از خط Style به ProductLine تغییر کرده است.
* عنوان­های گروه هم اکنون در بالای نام گزارش قرار می­گیرند.
* مقادیر ستون­های Cost ، Profit و List Price مجدداً فرمت شده­اند و هم اکنون به جای مقادیر Money به صورت مقادیر ممیز شناور ظاهر می­شوند.

با استفاده از منابع داده­ای غیر OLE DB نمی­توان مجموعه داده­هایی را ساخت که توسط RDL Report Processor قابل استفاده باشند. نتیجه، گزارشی است که منبع داده­ای ندارد. البته اگر یک منبع داده­ای OLE DB برای گزارش Access بسازید و آن را به طور دستی مقید نمایید، می­توانید این گزارش را وارد کنید.

تبدیل گزارشات Access به RDL
گزارشاتی وجود دارند که اصلاً قابل وارد شدن نیستند. برخی از آن­ها تا اندازه­ای وارد می­شوند و زیر مجموعه دیگری که می­تواند بدون مشکل خاصی به SSRS وارد شود. در مورد آن دسته از گزارشات(ساده) و معدودی که می­توانند تغییر شکل بدهند، Report Import Wizard ممکن است تا حدی کاربرد داشته باشد.
درسی که از این مقاله می­گیرید این است که نباید به وارد کردن گزارشات Access در SSRS به عنوان یک استراتژی کلی تکیه کنید، چرا که انتظار داریم، اکثر گزارشات در طبقه بندی اول قرار بگیرند. این موضوع زمانی می­تواند کمک کننده باشد که Office تکنولوژی تولید گزارش RDL را که توسط SQL Server مورد استفاده قرار می­گیرد، بپذیرد؛ بنابراین وارد کردن گزارشات Access در راه کارهايي که افزایش مقیاس یافته­اند، با مشکلات کمتری روبرو خواهد داشت. تیم Office کاملا مستقل هستند. انتظار ما این است که این تیم از SSRS بخواهد فرمت گزارش Access را بپذیرد.


شکل 1 : باز کردن Report Import Wizard


شکل 2 : نسخه های RDL گزارشات وارد شده Access


شکل 3 : محتویات پنجره Output پس از گزارشاتی که وارد شده­اند.


شکل 4 : يك گزارش ساده Access که توسط Report Import Wizard ایجاد شده است.


شکل 5 : گزارش RDL ایجاد شده توسط Report Import Wizard

منبع