PDA

View Full Version : سوال: تزریق یک دیتا تیبل به یک گزارش به صورت دستی



quantomquery
دوشنبه 13 تیر 1390, 12:53 عصر
سلام

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

حالا اگه بخوام اون دوتا ستون رو هم نشون بدم چکار باید بکنم
یعنی تو جدولم اون ستونا نیست و تو یه متد که دیتا تیبل برمی گردونه ستونا اظافه شده

ممنون ؟

mn_zandy63
چهارشنبه 15 تیر 1390, 02:37 صبح
سلام دوست من،
یه راه بهت نشون میدم،

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

دو مرحله کار داریم، یکی وقتی که میخوای گزارش رو طراحی کنی، یکی موقع نمایشش.
۱. موقع طراحی گزارش:
اونجایی از کدت که دیتاست رو پر کردی و اون دو تا ستون که گفتی هم اضافه کردی بهش، بعد از اینکه کارت با دیتاست تموم شد. یعنی اونجا که آماده ای که دیتاست رو بفرستی برای کریستال.
یه خط کد اضافه کن: (اگه فرض کنیم اسم متغیر دیتاستت ds باشه)
ds.WriteXml(@"d:\data.xml",XmlWriteMode.WriteSchema);
حالا برنامه ات رو اجرا کن تا همینجا. بعد از اینکه این خط کد اجرا شد، کل اطلاعات داخل دیتاستت داخل یه فایل به آدرسی که اینجا نوشتی (مثلا d:\data.xml) ذخیره شده.
خب حالا این خط رو حذف کن دیگه کاری باهاش نداریم.
حالا بیا داخل کریستال، وقتی میخوای گزارش رو طراحی کنی، اونجا که ازت دیتاسورس میخواد، به جای هر چیز دیگه ای که تاحالا بهش میدادی، از Create New Connection، گزینه ADO.NET (XML) رو انتخاب کن. بعد آدرس فایلی که ذخیره کردی رو بهش بده. از این به بعد این فایل میشه دیتاسورست موقعه طراحی. (دقت کن گفتم موقع طراحی، یعنی قرار نیست هر دفعه موقع اجرا هم همین فایل رو ذخیره کنی و اونو بدی به عنوان دیتاسورس گزارشت تا نمایشش بده. فقط قراره موقع طراحی از این فایل استفاده کنیم تا مشخص باشه زمان اجرا قراره چه فیلدهایی برای گزارشت ارسال کنیم).
خب.
۲. موقع نمایش:
هیچ کار خاصی نمیخواد انجام بدی، فقط همون دیتاست رو داخل کدت به روش عادی به عنوان دیتاسورس برای گزارش بفرست.

دقت کن، اون خط کد ds.WriteXML رو پاک کردیم. موقع اجرا دیگه نیازش نداریم.

موفق باشی