【问题标题】:VBA to create a form and load an attached image to itVBA 创建表单并将附加图像加载到其中
【发布时间】:2016-06-24 13:20:42
【问题描述】:

客户要求我在 MS Access 版本 2007 和 2016 中创建一个自包含工具。它需要自包含,因为它会在不同时间复制到各种笔记本电脑或从各种笔记本电脑复制。该工具不能创建、删除或修改除 accdb 数据库本身之外的任何文件。使用该工具时,用户不太可能拥有网络或互联网访问权限。

其中一个标准是每次运行时都创建新表单。我意识到 Access 意味着在部署之前已经构建了所有表单及其控件,但客户不希望这样。我已经解决了这个问题,在特定条件下创建 x 个表单,并根据特定条件在每个表单上创建 30-40 个控件,每个控件都有自己的事件等。

现在,我如何将他的徽标加载到每个表单上的控件中?记住,accdb 必须是自包含的,所以我不能指望徽标在某个目录甚至在使用的机器上,我自己也不能将它写入文件系统。

我可以并且已经将徽标 (jpeg) 加载到我的一个表格的附件字段中。这将是该领域的唯一附件。如果有帮助的话,它也很容易成为自己的桌子。

我可以使用 VBA 创建附件控件,但我不知道如何使用 VBA 将 ControlSource 设置为附件内的 FileData。

尝试以隐藏形式将图片嵌入图像控件并将 .picture 属性设置为图像名称时,我也没有成功。它似乎只在我的机器上工作。

那么,如何在新创建的表单上显示附加的 jpeg?

【问题讨论】:

  • 如果您已经将图像保存在数据库中的附件字段中,那么您应该能够将其保存为%TEMP% 中的“真实”文件,然后您就会知道它的位置文件系统。当图像文件位于已知位置时,您可以从那里执行您之前所做的任何操作,将其嵌入到您的表单中。
  • @GordThompson 谢谢。也许这是最好的选择,不幸的是,它明显违背了客户的要求。很抱歉,我不清楚,但是当客户说“自包含”时,他的意思是我不应该向他的文件系统写入或读取。客户以前使用不同的工具写入他的文件系统时运气不好。如果我的要求和客户指定的内容是不可能的,那么我将提供这个作为解决方法,但客户不会高兴。
  • 我现在正在编辑问题以使“自包含”这个短语更加清晰。我希望任何试图帮助理解创建文件、删除文件或修改除 accdb 之外的任何文件的人都被客户端严格禁止。并不是因为技术原因,而是因为我之前没有参与的一个项目出了差错,并且损坏了本不应该访问的信息。
  • 我认为您的客户的限制是不合理的。顺便说一句,他们是否知道当 Access 打开一个 .accdb 文件时,它会在 %TEMP% 中创建至少两 (2) 个自己的临时文件?
  • @GordThompson 可能是。他不是。而且我不会启用“查看隐藏文件”或告诉他。我当然不会试图解释交换文件或类似的东西。另一方面,根据我的理解(PM 背景,不是程序员),在这种情况下,这个特定的请求应该是可能的。如果二进制文件以可读的格式存在,则有软件可以访问该位置,并且该软件可以执行所需的操作(在这种情况下都是正确的,对吗?),那么应该有一个命令可以做到这一点.我天真吗?

标签: ms-access vba attachment-field


【解决方案1】:

刚刚在 SO access-vba 中询问和回答。这是一个解决方案。 Saving Image as OLE Object, in Access

google 和 SO 搜索上的许多其他人

编辑:您必须阅读整个问题才能看到作者的答案

答案:

所以,我最终做的是遵循这个 https://support.microsoft.com/en-us/kb/210486

我使用 readBLOB 函数读取文件并将其保存到 数据库。然后,当我运行报表或打开具有 图片,onload,我使用WriteBlob函数将文件写入一个 temp 文件夹,然后使用该路径填充 Image 对象。

【讨论】:

  • 嗯...我想你可能不小心链接了错误的问题。这个问题只有一个答案,而那个答案实际上并没有解决它的问题。问题是关于将文件导入数据库,答案只是“不要这样做”,带有两个链接。由于我已经“完成了”,因此该答案并不重要。当然,这些链接很有趣,其中一个甚至确实提到了图像,但都没有解决我的问题,即如何显示已经位于数据库中的图像。
  • 您必须阅读整个问题才能看到作者的答案 - 他通过描述他所做的事情来回答自己的问题 - 并包含相关链接。编辑我的答案,以防你不想再回去
  • 感谢您解释您的想法。我确实看到该问题的 OP 编辑​​了他的问题,以便在问题中给出他们认为可以接受的答案。不幸的是,虽然我真诚地希望它对那个人有所帮助,但这个“答案”并不是独立的。它至少向后兼容 Access 97,这很好,但在我所说的 2007 年和 2016 年的情况下,附件实际上是一种更有效的方式......再次,如果我可以创建删除和修改文件。跨度>
猜你喜欢
  • 1970-01-01
  • 2012-06-07
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
相关资源
最近更新 更多