PDA

View Full Version : سوال: بازیابی تصیور از دیتابیس و آوردن عکس در گزارش با کریستال ریپورت



EngMasoud
یک شنبه 29 آبان 1390, 00:19 صبح
با سلام به همه دوستان.
یکی از فیلدهای جدول اطلاعات پرسنلی در SQL ، عکس پرسنل هست ، که به صورت varbinary در دیتابیسم ذخیره می شود.
حالا می خوام با کریستال ریپورت گزارش از اطلاعات پرسنلی بسازم که عکس پرسنل هم در گزارش بیاید.
چجوری می تونم دیتایی که به صورت varbinary ذخیره شده رو در گزارش تبدیل به عکس در گزارش بکنم؟
ممنون میشم راهمایی کنید.

EngMasoud
یک شنبه 29 آبان 1390, 18:59 عصر
از دوستان کسی نیست کمک بکنه؟:ناراحت:

hamed-programer
چهارشنبه 11 مرداد 1391, 17:25 عصر
با سلام به دوست عزیز.

شما اول باید نوع فیلد در SQL را به Image تغییر دهید بعد با دستور زیر تصویر را درون فیلد مورد نظر ذخیره کنید
FileStream f = new FileStream(StrFileName, FileMode.OpenOrCreate);
byte[] buff = new byte[f.Length];
f.Read(buff, 0, (int)f.Length);

مثلا اگر خواستی درون دیتابیس ذخیره کنی ( مثلا با دستور SQL) کد زیر را می نویسی:
من فقط فیلد تصویر را در نظر گرفته ام:
StrSql = "INSERT INTO tablename" +
"(Photo)" +
"VALUES( @pict')";
Command = newSqlCommand(StrSql, Connection);
Command.CommandType = CommandType.Text;
Command.Parameters.AddWithValue("@pict", buff);
Command.ExecuteNonQuery();
برای بازیابی کد زیر را بنویس
byte[] b = (byte[])Data.Set.Tables[0].Rows[0][0];
MemoryStream st = newMemoryStream();
st.Write(b, 0, b.Length);
Image im = Image.FromStream(st);
مثلا اگر خواستی تصویر مورد نظر را در Picturebox نشان دهی بعد از دستورات بازیابی دستور زیر را می نویسی:
picturebox1.image=im;
در کریستال ریپورت بعد از ایجاد ویزاد ( وقتی به جدول وصل شدی ) خودش به صورت اتوماتیک تصویر را می شناسد
اگر توضیحات تکمیلی خواستی بگو از اول برات توضیح بدم