日期:2014-05-18  浏览次数:20427 次

水晶报表中如何显示图片?
在oracle数据库中,某字段保存的数据是一个路径,比如“\\192.168.1.2\Test_files\832-5001-正面照片.jpg”,而在水晶报表中,要求显示该路径对应的图片,请问我该怎么做呢,谢谢!帮帮忙啊,我不会!5555555555

------解决方案--------------------
Server.mappath()
试试这个看看
------解决方案--------------------
利用数据集在水晶报表中显示图像的 .NET 程序教程
http://blog.csdn.net/haibodotnet/archive/2004/04/12/21570.aspx
------解决方案--------------------
我也为此头痛的很久,写了一大堆,不知道有没有走弯路,希望能帮上你,请大家指点一点哈~~
在你的数据表里添加一个image类型的字段(我这取名iamge1),在你的项目添加一个.xsd的数据集,把要显示的数据字段放在.xsd里面(当然新加的image1也要),在报表.rpt里在“数据库专家”--》选择 "数据库文件 "--> 把刚刚的加的.xsd作为数据源,把要显示字段放报表里,图片就是那个 "image1 "字段
在显示页面方面其它我就不多说,主要说一下填充的问题,(写的不专业,希望没有误人子弟~~)
public DataSet commonDS( string sql,string tablename)//注意这里的tablename就是.xsd里的TABLE,你打开.xsd就知道了

{
DataSet dataSet = new DataSet();
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
conn.Open();
adp.Fill(dataSet, tablename);
conn.Close();
return dataSet;
}
//以下就是根据数据库取出的路径,把图片转换成image类型放在DATASET里面
using (DataSet DsImage = rd.commonDS( sqlpicture, "picture "))//commonDS( sqlpicture, "picture ")这是上面的填充
{
DsImage.Tables[0].Columns.Add( "image1 ", typeof(byte[]));
string filename = " ";
for (int i = 0; i < DsImage.Tables[0].Rows.Count; i++)
{
filename = DsImage.Tables[0].Rows[i][ "imagepath "].ToString();
if (filename != " ")
DsImage.Tables[0].Rows[i][ "image1 "] = GetFileStream(filename);//##
}
DataTable picture = DsImage.Tables[0];
ds.Tables.Add(picture.Copy());
};
//这里是根据文件路径转换成二进制,对应上面的//##
private byte[] GetFileStream(string FileName)
{
FileStream fstr = new FileStream(Server.MapPath(FileName), FileMode.Open);
BinaryReader brd = new BinaryReader(fstr);
byte[] b = new byte[fstr.Length];
b = brd.ReadBytes((int)fstr.Length);
fstr.Close();
return b;
}
最后把DataSet绑定到报表显示页面
希望有助于你