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

解决方案 »

  1.   

    Server.mappath()
    试试这个看看
      

  2.   

    Server.MapPath(string path) 返回与Web服务器上的指定虚拟路径相对应的物理文件路径
      

  3.   

    利用数据集在水晶报表中显示图像的 .NET 程序教程
    http://blog.csdn.net/haibodotnet/archive/2004/04/12/21570.aspx
      

  4.   

    有生成的报表文件么就是rpt文件有么??
      

  5.   

    你用Server.mappath()取到物理路径后用文件读出来,然后画到水晶报表上看行不行,重装了系统最近要换硬盘,VS2005没装,没法帮你调,不好意思!!
      

  6.   

    我是vs2003的,就是rpt文件呢。
      

  7.   

    我也为此头痛的很久,写了一大堆,不知道有没有走弯路,希望能帮上你,请大家指点一点哈~~
    在你的数据表里添加一个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绑定到报表显示页面
    希望有助于你
      

  8.   

    YS,不好意思没看到你用的oracle,是我的是SQL,呵呵
      

  9.   

    数据库里的的imge类型怎么在水晶报表里显示不了了??!!!
      

  10.   

    那位大神能解决?我把图片读到本地的一个文件夹下了,通过字节流存到dataset中。推到水晶报表上,可是就是显示不出来