PDA

View Full Version : تعیین تصویر از کدنویسی برای CrystalReport



hozouri
شنبه 10 اسفند 1387, 13:26 عصر
با سلام
من در گزارشاتم می خوام از یک عکس پویا استفاده کنم که از طریق کد نویسی اون عکس رو بشه تعیین نمود حال این کار با چه کدی در C# و چگونه در کریستال ریپورت امکان پذیره

pars.engineer
شنبه 10 اسفند 1387, 14:26 عصر
سلام،
متاسفانه کریستال ریپورت به صورت استاندارد نمی تواند چنین کاری انجام دهد و این مشکل در ورژن 11 آن با اضافه شدن فیلد Image بر طرف شده است.

ولی اگر شما از ورژن های پایین تر استفاده می کنید (مثل من و خیلی های دیگر) و می خواهید به صورت داینامیک تصویر را نمایش دهید می توانید از دو روش زیر استفاده کنید.(البته من این دو روش را می دانم و ممکن است روشهای دیگری نیز موجود باشد)

روش اول: (این روش ساده است ولی اصولی نیست و پیشنهاد نمی شود)

در این روش از منوی Insert یک OLE Object اضافه کنید و پس از انتخاب Create From File آدرس یک تصویر را بر روی دیسک سخت بدهید و گزینه Link را تیک بزنید.

پس از آن هر گاه خواستید گزارش را نمایش دهید تصویر قبلی را از آدرس بالا حذف کرده و هر تصویری را که مایلید نمایش دهید با همان نام و در همان آدرس ذخیره نمایید.

البته همان طور که گفتم این روش چندان اصولی نیست و برای آرایه ای از تصاویر نیز فاقد کارایی است.

روش دوم : (روش مشکل است ولی با این حال اکثر برنامه نویسان از این روش استفاده می کنند )

ابتدا در یک دیتاست Schema یک Table ایجاد کرده و در آن یک فیلد از نوع System.Byte[] ایجاد کنید.
سپس هنگامی که قصد گزارش گیری دارید تصویر یا تصاویر مورد نظر را توسط متد زیر به آرایه ای از بیت ها تبدیل کنید و به Table ای که ساخته اید اضافه کنید.



private byte[] GetImageData(string fileName)
{
//Method to load an image from disk and return it as a bytestream

System.IO.FileStream fs = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
return (br.ReadBytes(Convert.ToInt32(br.BaseStream.Length )));
}


در آخر نیز فیلدی را که در Table دیتاست ساخته اید را به محیط کریستال خود اضافه کنید.

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

موفق باشید.

hozouri
شنبه 10 اسفند 1387, 14:54 عصر
خب برای ورژن 11 چی کار باید کرد

NewFoxStudent
شنبه 10 اسفند 1387, 15:02 عصر
این مشکل در ورژن 11 آن با اضافه شدن فیلد Image بر طرف شده است.


یه فیلد Image به گزارشت اضافه کن و موقع لود شدن گزارش مقدارش رو برابر با فایلی قرار بده که میخوای نمایش بدی

hozouri
شنبه 10 اسفند 1387, 15:21 عصر
دوست عزیز ممنونم از راهنمایتان من این موارد رو می دونم اما میخوام بدونم با چه کدی این کار رو باید انجام داد

NewFoxStudent
شنبه 10 اسفند 1387, 15:57 عصر
http://barnamenevis.org/forum/showthread.php?t=148522

pars.engineer
پنج شنبه 15 اسفند 1387, 13:05 عصر
دوست عزیز ممنونم از راهنمایتان من این موارد رو می دونم اما میخوام بدونم با چه کدی این کار رو باید انجام داد


با عرض پوزش یاد ضرب المثل "یک خشت هم بزار روی دیگ" افتادم.
http://www.koodakan.org/gnome/name/m011.htm