我使用的Crystal Reports附带的VisualStudio 2005年,我想最好通过建立一个路径的图像文件,以改变显示在运行时报告的图像,然后对报表中显示该图像。
有没有人能与此版本的Crystal Reports做到这一点?
我使用的Crystal Reports附带的VisualStudio 2005年,我想最好通过建立一个路径的图像文件,以改变显示在运行时报告的图像,然后对报表中显示该图像。
有没有人能与此版本的Crystal Reports做到这一点?
在工作中,我们通过推动图像(S)到报告的数据表的领域做到这一点。 这不是很漂亮,但它能够完成任务。 当然,这种解决方案要求你把数据转换成通过一个DataSet的报告。 我一直认为这充其量是一个黑客。 我真的希望图像参数是与CR的可能性。
编辑:这是值得注意的,如果你绑定到要公开一个byte []属性的报告来治疗,作为一个形象普通的旧对象的水晶报表。
我终于达到了使用的解决方案byte[]
尖由Josh贴在这里。
如果您使用的是普通的老C#对象来填充你的水晶报表该解决方案适用(见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的。 当您运行,你会看到你的形象。
我也有这个问题(和你投了)!
[I以来发现通过C#对象属性使用一个字节数组的溶液 - 参见单独回答。 这里离开这个答案以供参考...]
这是我所看到的建议(但我想和在C#-2005和C#-2008失败)。
我有这种方法没有运气。 图像出现时,我首先设计形式(步骤2)。 但在运行时,图像不为我更新。 从这点出发, 事情就变得非常奇怪 。 看来,CR缓存某种形象,就不会消失。 我可以删除CR-Designer中的OLE对象的链接,但如果我重新创建它,我总是得到一个黑盒子大小相同的原始图像(即使我改变image.bmp的大小)。
您也可以使用条件公式来设置图像的位置。 见水晶报表:动态图像 。
尝试使用使用包含图像的路径和此页面上的教程的参数的组合: http://www.idautomation.com/crystal/streaming_crystal.html
然后,在步骤#8中,使用参数,而不是硬编码路径的。
我发现有用的另一种选择是将你想使用的图片。 图形相应的位置,然后用鼠标右键单击图形,然后转到格式的图形>常见。 检查禁止框,然后点击按钮式,示出为x-2。 一旦在式窗口,只需添加代码,用于确定所述图形是否应当被抑制或没有。
就我而言,我是建设多个实体一个发票模板。 在式窗口,我简单写COMPANY <> 1100这意味着每个发票为1100以外的公司运行时,1100图形会被抑制。
但愿这使生活更轻松...
就像乔希说..你将不得不与一个数据集推图像。 或者,把图像到数据库表一次,与子报表拉过很多次。
水晶报表的当前版本(适用于Visual Studio 2012+),我使用Visual Studio 2015年使用支持此功能。 按照下面的步骤:
甲式窗口将打开。 输入一个公式,会发现你的照片的链接。
如果({@ isDonor} = “1”),则“ http://www.ny.org/images/aaf/picture1.jpg ”其他“ http://www.ny.org/images/aaf/picture2.jpg “ 就大功告成了!