PDA

View Full Version : مبتدی: ارسال عکس به کریستال ریپورت



Collector
سه شنبه 25 مهر 1391, 14:30 عصر
سلام

من چطوری میتونم یک عکس را به صورت پارامتر به کریستال ریپورت بفرستم.مثل ارسال متن


Report.SetParameterValue("Message", "Hello");

البته اگر عکس در دیتابیس باشد مشکلی در ارسال نیست. من میخوام حتما به صورت پارامتر باشه

حسین شهریاری
سه شنبه 25 مهر 1391, 14:52 عصر
اینا را یه نگاهی بنداز:
http://barnamenevis.org/showthread.php?327223-چگونه-تصویر-را-به-کریستال-ریپورت-ارسال-کنم؟&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%B9%DA %A9%D8%B3+%D8%A8%D9%87+%DA%A9%D8%B1%DB%8C%D8%B3%D8 %AA%D8%A7%D9%84

http://barnamenevis.org/showthread.php?324418-set-image-in-crystal-report&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%B9%DA %A9%D8%B3+%D8%A8%D9%87+%DA%A9%D8%B1%DB%8C%D8%B3%D8 %AA%D8%A7%D9%84

Collector
پنج شنبه 27 مهر 1391, 20:02 عصر
اینا را یه نگاهی بنداز:
http://barnamenevis.org/showthread.php?327223-چگونه-تصویر-را-به-کریستال-ریپورت-ارسال-کنم؟&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%B9%DA %A9%D8%B3+%D8%A8%D9%87+%DA%A9%D8%B1%DB%8C%D8%B3%D8 %AA%D8%A7%D9%84 (http://barnamenevis.org/showthread.php?327223-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%B1%D8%A7-%D8%A8%D9%87-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%DA%A9%D9%86%D9%85%D8%9F&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%B9%DA %A9%D8%B3+%D8%A8%D9%87+%DA%A9%D8%B1%DB%8C%D8%B3%D8 %AA%D8%A7%D9%84)

http://barnamenevis.org/showthread.php?324418-set-image-in-crystal-report&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%B9%DA %A9%D8%B3+%D8%A8%D9%87+%DA%A9%D8%B1%DB%8C%D8%B3%D8 %AA%D8%A7%D9%84

خیلی ممنون
با این روش باز هم عکس وارد دیتابیس میشه و از آنجا خوانده میشه
من یک کوییری را اجرا میکنم که داخل آن GROUP BY دارد پس نمیتواند فیلد عکس را مقایسه کند.
آیا امکان دارد که مستقیم آبجکت را در کریستال ریپورت مثل پارامتر بفرستیم.
با این روش خواستم عکس را قرار دهم اما امکانش نبود و خاصیتی برای لود عکس نداشت.


((PictureObject)Report.Section2.ReportObjects["Picture1"])

Mahmoud Zaad
جمعه 28 مهر 1391, 10:29 صبح
سلام
اگه کریستال ریپورت 13 دارید از این لینک (http://barnamenevis.org/showthread.php?305444-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA) استفاده کنید در غیر اینصورت همون لینک دومی که دوستمون معرفی کردند مناسبه، با دیتابیس هم کاری نداره.

Collector
جمعه 28 مهر 1391, 12:26 عصر
سلام
اگه کریستال ریپورت 13 دارید از این لینک (http://barnamenevis.org/showthread.php?305444-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA) استفاده کنید در غیر اینصورت همون لینک دومی که دوستمون معرفی کردند مناسبه، با دیتابیس هم کاری نداره.

بله با لینک دوم میشه این کار را کرد ولی نمیشه دو تا SetDataSource را به کریستال ریپورت را فرستاد این مشکل هم وجود داره.

در این کد من میتونم فقط یک مورد را به SetDataSource بفرستم


string Query = "Select * From Buy Where ID=16";
SqlDataAdapter ad1 = new SqlDataAdapter(Query, con);
DataSet da2 = new DataSet();
con.Open();
ad1.Fill(da2, "Buy");
con.Close();

List<Class1> lstC = new List<Class1>();
lstC.Add(new Class1(pictureBox1.Image, textBox1.Text));

CrystalReport11.SetDataSource(lstC);
CrystalReport11.SetDataSource(da2);

crystalReportViewer1.ReportSource = CrystalReport11;

Mahmoud Zaad
جمعه 28 مهر 1391, 13:10 عصر
می خوای 2 تا عکس بفرستی؟
کلاس رو به صورت زیر تغییر بده:
private byte[] myImage;
private string mytxt;
private byte[] myImage2;

public Class1(System.Drawing.Image img, System.Drawing.Image img2, string matn)
{
myImage = ImageToByteArray(img);
myImage2 = ImageToByteArray(img2);
mytxt = matn;
}

private static byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}

public byte[] MyImage
{
get { return myImage; }
set { myImage = value; }
}

public byte[] MyImage2
{
get { return myImage2; }
set { myImage2 = value; }
}

public string Mytxt
{
get { return mytxt; }
set { mytxt = value; }
}
و این خط
lstC.Add(new Class1(pictureBox1.Image, textBox1.Text));
رو هم به صورت زیر بنویس:
lstC.Add(new Class1(pictureBox1.Image, pictureBox2.Image, textBox1.Text));

Collector
جمعه 28 مهر 1391, 13:13 عصر
می خوای 2 تا عکس بفرستی؟
کلاس رو به صورت زیر تغییر بده:


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