【发布时间】: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