13

我正在使用VisualStudio 2005 中包含的Crystal Reports。我想通过构建图像文件的路径来更改运行时显示在报表上的图像,然后将该图像显示在报表上。

有没有人能用这个版本的 Crystal Reports 做到这一点?

4

8 回答 8

8

在工作中,我们通过将图像作为数据表的字段推送到报告中来做到这一点。它不漂亮,但它完成了工作。当然,此解决方案要求您通过 DataSet 将数据推送到报表中。我一直觉得这充其量只是一个hack。我真的希望图像参数是 CR 的可能性。

编辑:值得注意的是,如果您将水晶报表绑定到普通旧对象,您希望为报表公开一个 byte[] 属性以将其视为图像。

于 2009-02-21T03:45:50.787 回答
2

我也有这个问题(并投了你的票)!

[我已经通过 C# Object 属性找到了使用字节数组的解决方案 - 请参阅单独的答案。将此答案留在这里以供参考...]

这是我看到的建议(但我在 C#-2005 和 C#-2008 中都尝试过但失败了)。

  1. 选择一个目录并在其中放置一个 BMP(例如,“C:\Temp\image.bmp”)。
  2. 从 CR-Designer a) 右键单击​​->插入->OLE 对象... b) 选择“从文件创建” c) 选中“链接”复选框 d) 浏览并选择在步骤 1 中定义的 bmp e) 单击好的 f) 将图像放在表格上。
  3. 在 C# 代码中在运行时覆盖/更新图像。理论上,由于您插入了指向图像文件的链接,因此刷新表单时会更新它。

我对这种方法没有运气。当我第一次设计表单时出现图像(第 2 步)。但在运行时,图像不会为我更新。从这一点开始,事情变得非常奇怪。似乎 CR 缓存了某种不会消失的图像。我可以在 CR-Designer 中删除 OLE 对象链接,但如果我重新创建它,我总是会得到一个与原始图像大小相同的黑框(即使我更改了 image.bmp 的大小)。

于 2009-02-18T22:36:57.157 回答
2

我终于使用byte[]Josh 在此处发布的提示找到了解决方案。

如果您使用普通的旧 C# 对象来填充 Crystal Reports,则此解决方案适用(请参阅http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-in -CSharp/有关此方法的信息)。

在您的 C# 类中,插入以下代码:

private static byte[] m_Bitmap = null;

public byte[] Bitmap
{
   get
   {
      FileStream fs = new FileStream(bitmapPath, FileMode.Open);
      BinaryReader br = new BinaryReader(fs);
      int length = (int)br.BaseStream.Length;
      m_Bitmap = new byte[length];
      m_Bitmap = br.ReadBytes(length);
      br.Close();
      fs.Close();
      return m_Bitmap;
   }
}

现在,使用“验证数据库”选项更新 CR 中的 C# 对象映射。然后,您应该将该Bitmap属性视为 CR 字段。只需将其拖到表单上即可。它将是 IBlobFieldObject 类型。当你运行时,你应该看到你的图像。

于 2009-02-24T16:30:09.847 回答
1

尝试结合使用包含图像路径的参数和此页面上的教程:http ://www.idautomation.com/crystal/streaming_crystal.html

然后在步骤 #8 中,使用参数而不是硬编码路径。

于 2008-09-24T17:27:17.227 回答
1

您还可以使用条件公式来设置图像的位置。请参阅Crystal Reports:动态图像

于 2010-03-15T20:23:18.543 回答
1

我发现另一个有用的选项是插入您想要使用的图片。相应地定位图形,然后右键单击图形并转到设置图形格式 > 通用。选中 Suppress 框,然后单击公式按钮,如 x-2 所示。进入公式窗口后,只需添加代码以确定是否应隐藏图形。

就我而言,我正在为多个实体构建一个发票模板。在公式窗口中,我只写了 COMPANY <> 1100,这意味着每次为 1100 以外的公司运行发票时,1100 图形都会被隐藏。

希望这能让生活更轻松......

于 2015-04-28T12:29:13.723 回答
1

我在 Visual Studio 2015 中使用的当前版本的 Crystal Reports(适用于 Visual Studio 2012+)支持此功能。请按照以下步骤操作:

  1. 在报告中插入图片。这将作为您的占位符。
  2. 右键单击您的图片并选择格式化对象 右键单击图像
  3. 选择图片选项卡并按下公式按钮 图片选项卡
  4. 将打开一个公式窗口。输入一个公式,将您的图片作为链接查找。

    if({@isDonor}="1") 那么“ http://www.ny.org/images/aaf/picture1.jpg ”“否则” http://www.ny.org/images/aaf/picture2.jpg公式编辑器 然后你就完了!

于 2018-11-20T16:35:37.467 回答
0

就像 Josh 说的那样。您将不得不使用数据集推送图像。或者,将图像放入数据库表一次,然后使用子报表将其多次拉入。

于 2009-02-21T03:54:02.980 回答