2010-10-29 64 views
2

我在MS Access中有4个图片控件的报告。在detail部分的格式事件中,我有代码根据DAO.recordset中字段的值设置图片属性。以下是我的代码示例。图片不显示在图片控件中

For i = 0 To 3 
    If Not rs.EOF Then 
     Me.Controls("img" & i).Picture = blobGet(rs!phBlobId) 
     rs.MoveNext 
    Else 
     Me.Controls("img" & i).Picture = "" 
    End If 
Next i 

rs!phBlobId基本上是一个文件名。 blobGet函数返回图片的完整路径,然后在报表的详细信息部分设置正确控件的图片属性。

我不确定所有的原因,但在某些情况下图片不会显示在控件中。我有一个类似的表单设置,并没有任何问题,我只有在报告时才有问题。

似乎可能是原因的一件事是图片的大小。如果我插入一张大图片(说超过5兆),它有时不会显示。随着不同的图片组合出现不同的图片。

我对如上所述的问题的两种解决方案开放,或对如何在报告上显示这些图片的替代想法开放。一个绝对的要求是用VBA设置图片,因为图片的确切排列基于不相关的变量而变化。

+0

我发现从报表细节的OnFormat事件中查找记录集中的内容非常非常奇怪。我倾向于将数据放入报告的记录源中。如果它是不相关的表,无关紧要 - 将它放入没有连接的记录源中,并将所需的字段放入记录源中,并且它们始终可供您使用。 – 2010-10-29 23:27:19

+0

我同意,这很奇怪!我这样做的原因是图片控件的布局非常具体,它们在垂直和水平方向上重叠。我试图完成的是诚实地将Access几乎扩展到桌面出版程序中。我不会推荐任何其他人尝试它,它不是很有趣。 ;) – Icode4food 2010-11-01 12:20:58

+0

有时,增加Windows虚拟内存有助于Access报告不显示图像。 – MaxD 2012-05-21 07:59:54

回答

2

我想出的解决方案是简单地使用imageMagick调整图像的大小。这实际上为我提供了一些好处。自从我处理较小的图像以来,其中至少有一项显着的性能改进。