无法在C#Windows Form Appliction中将数据库中的图像显示到Crystal Report上

时间:2018-07-02 00:13:02

标签: c# crystal-reports

正如问题所暗示的,我最难以在水晶报告上显示图像(varbinary(max))。我已经阅读了许多类似的问题和其他链接,包括http://www.hexcentral.com/articles/crystal-images.htm

下面的这个问题

这说明我要做的就是将图像字段拖到报表中。事实证明,这样做是徒劳的。

getData

这是我所拥有的全部代码,基本上只是为报表创建数据源。 我尝试更改数据类型,尝试修改我的app.config,但没有任何帮助。

我看到张贴了类似的代码,但希望我能得到我的问题的答案。

致谢

1 个答案:

答案 0 :(得分:0)

您是否已将Crystal Report Image处理程序添加到webconfig文件?

这是最重要的部分,没有它,您将不会在Crystal Report中看到图像。您需要在Web.Config的部分中添加以下内容。

<add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />

对于Windows应用程序,使用图像数据类型将图像存储在sql服务器上。 将表数据附加到Crystal报表。

private void button2_Click(object sender, EventArgs e)
    {
        string str = "select photo from tbl_img where id='" + textBox2.Text + "'";

        string ConStr = @"Server=COMP7;Database=ImageTest;User Id=sa;Password=cos123";

        SqlConnection con = new SqlConnection(ConStr); 

        con.Open();
        SqlDataAdapter da = new SqlDataAdapter(str, con);
        DataTable dt = new DataTable();

        da.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            byte[] imgdata = new byte[0];
            imgdata = (byte[])dt.Rows[0][0];
            MemoryStream ms = new MemoryStream(imgdata);
            pictureBox2.Image = Image.FromStream(ms);      
        }
        else
        {
            MessageBox.Show("No images in a table");
        }
    }

从“字段资源管理器”->“数据库字段”->“表名”->“列名”中拖动水晶报表上的图像字段