在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来。但是这样做有以下不足:一、需要将图片逐一插入到表中,工作量太大。二、使数据库文件变得庞大。三、相同的图片文件,如果在不同数据库中都要引用,就需要重复插入,非常浪费。因此,可以把图片文件按照一定的路径储存起来,在窗体中通过这个路径找到相应的图片,并显示出来。这样可以大大节省操作时间、储存空间,而且便于图片文件在不同数据库中的共享。

在网上查阅了大量的相关资料,看到的文章和范例大多是高手写的,可能忽略了像我辈这样的菜鸟级爱好者的水平。把他们提供的例子看了半天,总是不得要领。在反覆尝试之后终于成功了。欣喜之余,除了感谢那些网上的资源以及提供者,还想把自己的一点经验写出来,希望对那些和我一样的业余爱好者有一点帮助。下面就以Access2003(本人依然不习惯07和10的界面,坚守着03,使用07和10的朋友可以尝试一下,原理应该是一样的)为例谈一谈如何实现在窗体中显示给定路径的图片。

比如我们要建立一个“古代语言学家”的数据库,希望在窗体中显示每个人的画像,可以分下面几个步骤实现。

一、建立一个叫做“古代语言学家”的文件夹,在这个文件夹中建立一个叫做“古代语言学家”的数据库,在数据中建立一叫做linguist的表,表中包含ID(用作主键的编号)、linguist(语言学家的姓名)等字段。

二、在文件夹“古代语言学家”中建立一个名为“头像”的文件夹,把所有的语言学家的头像储存在这个文件夹里,每个人的头像以姓名或ID为文件名(注意:最好以数据表中的“主键”作为文件名,这样可以保证不重复)。

三、建立一个窗体(可以利用窗体向导),窗体上要包含反映图片路径变量的字段,如本例中,头像是以姓名命名的,姓名是变量(每个语言学家的姓名不同),所以窗体上必须包含字段linguist。至于窗体上对象的隐现,可以通过改变对象属性中的“可见性”来控制。比如,如果头像是以ID命名的,在窗体上就必须包含ID这个字段,如果不希望ID在窗体上显示,可以把ID的可见性设为“否”。

四、在窗体中插入一个图形控件。可以先选择任意一个图片。

五、查看图形控件的属性,把图片删除(即图中选中的图片路径)。图片类型、缩放模式等可以根据需要设定。

六、在“视图”中打开“代码”编辑窗口,加入以下一段代码并保存:

Private Sub Form_Current()

Dim PhotoPath As String

PhotoPath = CurrentProject.Path

& "\头像\"

& Me![linguist] & ".jpg"

Me.Image7.Picture = PhotoPath

End 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。在窗体的设计视图中也可以对图形控件重新命名。

七、完成以上的操作,打开窗体就可以看到图片了。

八、上面的代码没有定义当在给出的路径找不到相应的图片时的动作,因此,当找不到图片时会现错误提示。

九、将代码稍做修改。如下:

Private Sub Form_Current()

Dim PhotoPath As String

PhotoPath = CurrentProject.Path

& "\头像\" & Me![linguist]

& ".jpg"

If Dir(PhotoPath) = "" Then PhotoPath =

CurrentProject.Path & "\noimg.jpg"

Me.Image7.Picture = PhotoPath

End Sub

说明:If一句定义了当在上一句定义的路径中找不到图片时,图片的路径为当前目录中的noimg.jpg。为保证其有效,需要在当前文件夹中有图片文件noimg.jpg。

下面是修改后的效果:

大功告成了!

十、如果要在窗体中显示多个图片,只需声明多个相关的变量,定义相应的图片路径即可。比如:把古代语言学家的全身像放在文件夹“全像”中,同样以姓名命名。要在窗体中同时显示头像和全像,可以将代码修改为:

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

下面是修改后的效果:

在access窗体中加图片_如何在Access窗体中显示指定路径的图片相关推荐

  1. access找不到输入表或者dual_在Access窗体中显示指定路径的图片

    ↑↑↑点击上方图片,了解详情 在Access中,如果把图形对象以OLE格式的字段保存,那么在窗体中可以直接显示出图片来.但是这样做有以下不足: 一.需要将图片逐一插入到表中,工作量太大. 二.使数据库 ...

  2. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

  3. java插入图片_如何在java窗体程序中添加图片

    打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片, ...

  4. react前端显示图片_如何在react项目中引用图片?

    如何在react项目中引用图片?本文码云笔记将为大家整理在react项目中插入图片以及背景图片的方法,希望对需要的小伙伴提供一些参考. 在react项目中插入图片以及背景图片的方法共有2种: 1.im ...

  5. access自动编号怎么解除_如何在 Access 中重置“自动编号”字段值

    如何在 Access 中重置"自动编号"字段值 中删除某个表中的一些行或所有行时,"自动编号"字段不会自动重置.要重置"自动编号"字段值并 ...

  6. react中纯函数_如何在纯React中创建电子邮件芯片

    react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...

  7. 在php代码中加视频,php – 如何在laravel代码中嵌入视频

    我正在开发一个项目,我将youtube视频链接存储在数据库中,然后我检索这些链接并使用刀片模板引擎我尝试将它们嵌入到页面中.我使用循环将视频放在页面中.出于某种原因,我没有在浏览器中收到任何视频.它覆 ...

  8. python类中没有属性_如何在python语言中在类中删除属性和添加属性

    在python语言中的类,可以使用class定义类,调用__init__方法进行初始化:默认传入self,可以在后面在添加几个属性.可以使用setattr()添加属性,也可以使用delattr()删除 ...

  9. jsp在mysql中删除数据_如何在jsp页面中删除数据库中的数据

    如何在jsp页面中删除数据库中的数据 各位大虾! 我想在jsp页面上写一个按钮功能,从而动态的删除数据库中的一行数据. 不知道怎么实现 这是我写的一段代码 数据库是MySql UserBean p3= ...

最新文章

  1. 让CNN有了平移不变性,同时提升ImageNet成绩:Adobe开源新方法,登上ICML
  2. 500 OOPS:cannot change directory:/root 问题
  3. 数据库ORA-03113排查
  4. 周志華《機器學習》圖4.4和图4.9繪制(轉載+增加熵顯示功能)
  5. java包图标是文件_关于更换.jar文件默认图标
  6. VUE学习和开发中的注意点总结(一),便于回顾(不断完善补充。)
  7. appium 如何调用 adb_带你了解可用于Android APP自动化测试的框架:Appium
  8. MYSQL的安装基础语法笔记
  9. Linux系统更新并清除旧组建
  10. Photoshop 入门教程「9」如何增加画布的空间?
  11. [Everyday Mathematic]20150217
  12. 北大核心期刊目录2020_音乐舞蹈类核心期刊目录(2020年最新收藏版)
  13. 前端实时可视化开发工具的使用
  14. 用单片机控制单色显示屏
  15. html5动态连线,canvas简单连线动画的实现代码
  16. 如何在C ++ 中分割PDF档案?试试Aspose
  17. 【中级软考】【耦合、内聚】模块独立性衡量之内聚的七种类型(偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚)
  18. Android一键清理原理
  19. GCN - Semi-Supervised Classification with Graph Convolutional Networks 用图卷积进行半监督节点分类 ICLR 2017
  20. 经验模态分解python_信号处理 - 经验模态分解 【1】

热门文章

  1. 大数据将植物学研究带入新境界
  2. 2017 年大数据、物联网与 AI 的趋势预测
  3. mf模型 svd++_【MF】SVD
  4. java io密集型任务_IO密集型的线程池大小设置
  5. 如何做好大型数据中心的运维
  6. VCS命令行选项总结简单脚本实例
  7. Vivado入门创建工程之----自定义ip及其使用
  8. 详细解读八大无线网络安全技术利弊
  9. 使用 google_breakpad 分析 Electron 崩溃日志文件
  10. centos无法使用ifconfig命令,安装方法