access 子窗体 鼠标滚动不工作_在Access窗体中显示指定路径的图片

9a2c4a4c7185acf77613f6bef58c7716.png

↑↑↑点击上方图片,了解详情

      在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来。但是这样做有以下不足:

      一、需要将图片逐一插入到表中,工作量太大。

      二、使数据库文件变得庞大。

      三、相同的图片文件,如果在不同数据库中都要引用,就需要重复插入,非常浪费。

      因此,可以把图片文件按照一定的路径储存起来,在窗体中通过这个路径找到相应的图片,并显示出来。这样可以大大节省操作时间、储存空间,而且便于图片文件在不同数据库中的共享。

      在网上查阅了大量的相关资料,看到的文章和范例大多是高手写的,可能忽略了像我辈这样的菜鸟级爱好者的水平。把他们提供的例子看了半天,总是不得要领。在反复尝试之后终于成功了。欣喜之余,除了感谢那些网上的资源以及提供者,还想把自己的一点经验写出来,希望对那些和我一样的业余爱好者有一点帮助。下面就以Access2003(本人依然不习惯07和10的界面,坚守着03,使用07和10的朋友可以尝试一下,原理应该是一样的)为例谈一谈如何实现在窗体中显示指定路径的图片。      比如我们要建立一个“古代语言学家”的数据库,希望在窗体中显示每个人的画像,可以分下面几个步骤实现:      一、建立一个叫做“古代语言学家”的文件夹,在这个文件夹中建立一个叫做“古代语言学家”的数据库,在数据中建立一个叫做linguist的表,表中包含ID(用作主键的编号)、linguist(语言学家的姓名)等字段。411ee268fff239b090b8d19f18dbda93.png      二、在文件夹“古代语言学家”中建立一个名为“头像”的文件夹,把所有的语言学家的头像储存在这个文件夹里,每个人的头像以姓名或ID为文件名(注意:最好以数据表中的“主键”作为文件名,这样可以保证不重复)。2bd7a1c54281b397d6a331b78853d060.png      三、建立一个窗体(可以利用窗体向导),窗体上要包含反映图片路径变量的字段,如本例中,头像是以姓名命名的,姓名是变量(每个语言学家的姓名不同),所以窗体上必须包含字段linguist。至于窗体上对象的隐现,可以通过改变对象属性中的“可见性”来控制。比如,如果头像是以ID命名的,在窗体上就必须包含ID这个字段,如果不希望ID在窗体上显示,可以把ID的可见性设为“否”。      四、在窗体中插入一个图形控件。可以先选择任意一个图片。aefe68ceacfa9da75eaaa91a542b224e.png      五、查看图形控件的属性,把图片删除(即图中选中的图片路径)。图片类型、缩放模式等可以根据需要设定。

931485f9c5d290332784fbd154f63004.png

      六、在“视图”中打开“代码”编辑窗口,加入以下一段代码并保存:Private Sub Form_Current()Dim PhotoPath As StringPhotoPath = CurrentProject.Path & "\头像\" & Me![linguist] & ".jpg"Me.Image7.Picture = PhotoPathEnd Sub      关于这段代码的几点说明:      1、Dim语句是一个声明变量的语句,String代表字符串。上面的Dim语句表示声明PhotoPath为一个字符串。其中PhotoPath是变量名,可以自己命名。      2、PhotoPath =一句定义了图片的路径。CurrentProject.Path是当前对象的路径,是个相对路径。&是连接符,也可以用+,表示把前后的字符连接起来。Me表示当前的窗体,Me![linguist]则表示当前窗体中的linguist字段。把这段语句所代表的路径转换出来即:.\头像\ Me![linguist].jpg;也就是:当前路径下(与数据库文件同目录下),“头像”文件夹中,文件名等于窗体中linguist字段的值的jpg文件。再复杂的路径,只要是有规则的,都可以用这个方法定义。注意:所有的值都需要用半角的双引号"括起来;表示文件夹的前后的斜杠\和后缀名以及前面的.不要丢掉。      3、Me.Image7.Picture = PhotoPath一句定义了窗体中的图形控件来源等于上一句定义的路径。注意:Image7是图形控件名,要与窗体中的控件名一致,本例中是Image7。在窗体的设计视图中也可以对图形控件重新命名。      七、完成以上的操作,打开窗体就可以看到图片了。518c383eae25f80c5aed96aef25517b3.png      八、上面的代码没有定义当在给出的路径找不到相应的图片时的动作,因此,当找不到图片时会现错误提示。6d0fa07f5a3f696fea6c54658e9e2e89.png      九、将代码稍做修改。如下:Private Sub Form_Current()Dim PhotoPath As StringPhotoPath = CurrentProject.Path & "\头像\" & Me![linguist] & ".jpg"If Dir(PhotoPath) = "" Then PhotoPath = CurrentProject.Path & "\noimg.jpg"Me.Image7.Picture = PhotoPathEnd Sub      说明:If一句定义了当在上一句定义的路径中找不到图片时,图片的路径为当前目录中的noimg.jpg。为保证其有效,需要在当前文件夹中有图片文件noimg.jpg。    下面是修改后的效果:37169162b05bfddc7b96eff8559ed25e.png      大功告成了!      十、如果要在窗体中显示多个图片,只需声明多个相关的变量,定义相应的图片路径即可。比如:把古代语言学家的全身像放在文件夹“全像”中,同样以姓名命名。要在窗体中同时显示头像和全像,可以将代码修改为:  Private Sub Form_Current()    Dim PhotoPath As String, photopath2 As String    PhotoPath = CurrentProject.Path & "\头像\" & Me![linguist] & ".jpg"    If Dir(PhotoPath) = "" Then PhotoPath = CurrentProject.Path & "\noimg.jpg"    Me.Image7.Picture = PhotoPath    photopath2 = CurrentProject.Path & "\全像\" & Me![linguist] & ".jpg"    If Dir(photopath2) = "" Then photopath2 = CurrentProject.Path & "\noimg.jpg"    Me.Image9.Picture = photopath2  End Sub      下面是修改后的效果:

3bd0c97cf0524d5a6a06cb6d6631ef6e.png

End 推荐阅读 d86bc2e7ed99cd2e2f5debfb95321819.png Access训练营  从0基础开始,循序渐进,系统化的训练营课程,整合作业、课表、社群,为学员提供答疑,获得更佳的学习效果。【详情>> 】   558418eae3f955054ac7773bec5d4bad.png 快速开发财务管理系统  紧密结合职场的一个课程,参加培训不仅可提升开发技能,而且可获得案例源代码,立即投入到实际工作中应用。【详情>> 】   a7e2f1d69fde2dab16f79fb0c842457f.png Access软件作品  十二位Access学员对自已开发的软件进行了介绍并分享开发心得,一起来了解Access开发的软件。【详情>> 】   5c9cc660b2d5a4793b38f9772b5d6173.png 从Excel到Access数据库  为广大Excel用户了解、学习Access数据库开设的一个实用课程,侧重于数据统计分析。【详情>> 】   4748fb9bd495d392bae0c5b61cc2ed30.png Access每天3分钟  视频课程共50集,Access的基础知识并结合示例详细讲解,每集视频只有短短几分钟,学员可以利用碎片化的时间,每天进步一点点【详情>> 】   20bf75be7b1ce17aff6c3ede7bd269aa.png 张志,Access数据库培训讲师,『Access软件网』创始人,服务过的知名企业有北京奔驰、立达(中国)纺织仪器、宜家(中国)投资等。 2003~2013年连续10年获微软最有价值专家。【详情>>】  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值