我试图在表单上实现一个非常简单的子表单文档网格:
除了在用户点击网格时获取文件路径,我拥有所有内容。如何从用户行单击事件中获取文件路径值?
对不起,如果我的术语关闭,我很少写vba
答案 0 :(得分:4)
您可以创建一个引用您的FilePath
字段的公共子例程,然后在子表单上每个字段的单击事件中引用此子例程。
因此,如果您的子表单看起来像这样:
转到表单的“设计视图”,然后选择一个字段:
选择一个字段后,转到右侧的属性表,然后转到事件选项卡,然后单击On Click事件上的[...]按钮:
您将被带到表单的VBA脚本模块,它将为您选择的字段的点击事件创建初始VBA:
暂时忽略该字段的点击事件VBA,而是将光标移动到顶部,并为字段的点击事件上方的公共子例程腾出一些空间。
在顶部写下这样的内容:
Public Sub GetFilePath()
Debug.Print Me.FilePath
End Sub
因此,您在Access中的代码现在看起来应该是这样的:
现在可以在子表单中每个字段的点击事件中引用我称为GetFilePath
的公共子。让我们完成刚刚开始的ID字段的点击事件......
...并且还在每个其他字段的点击事件中引用相同的公共子(再次,通过在“设计视图”中选择字段,然后在“属性表”的点击事件中单击[...]按钮): / p>
在VBA编辑器中,确保打开立即窗口;它应该在你的VBA代码下面的区域。如果不存在,请按Ctrl + G或转到查看>即时窗口:
在VBA编辑器和立即窗口仍然打开的情况下,返回到您的表单并将其放入表单视图。
点击任意一行,您应该会在立即窗口中看到您点击的行的FilePath
数据(这是Debug.Print
所做的):
你可能不希望FilePath
进入立即窗口,但由于你没有指明你希望它去哪里,我想这至少会说明你如何通过点击获得这些数据在您的子表单中的记录。
您需要做的就是将Debug.Print Me.FilePath
行替换为对您有用的内容。
希望这足以让你开始:)
答案 1 :(得分:2)
MS Access不提供行点击事件。您必须执行,[表单onClick事件]或理想情况下将filePath设置为HyperLink并且onClicking FilePath检索其值。
当您选择[Form onClick事件]时,您将从所选行获取FilePath。但是,只有在单击表单而没有任何字段时才会触发click事件。
如上所述,将FilePAth字段作为超链接,向其添加onClick事件并检索值。
答案 2 :(得分:0)
很抱歉让您感到振奋,但是公认的答案并不是最好的选择。
与其为该子表单中的每个列(每个控件)创建一个OnClick事件, 您应该使用Subform本身的OnCurrent事件,该事件在您更改当前记录时就会触发。当您单击子表单中的另一行时,基本上会发生这种情况。
在子窗体的OnCurrent事件中,您将具有相同的代码。
基本上应该是这样的:
Public Sub Form_Current()
Debug.Print Me.FilePath
End Sub