vba - 是否有一种简单的方法来确定打开选项卡中的哪个页面以读取 Access 中的表格?
问题描述
我有一个带有付款选项卡控件的表单。当前、未来和过去的付款有一个单独的页面,每个选项卡都有一个表格,其中有一个名为 ID 的公共字段。
我有一个按钮,可以打开另一个表单,其中包含有关付款的更详细信息,并在查询中使用 ID 来获取数据。
由于每个页面都使用/具有相同的 ID,是否有一种简单的方法来查找 ID,无论打开哪个页面?
我试过了
ID = Forms!TabBills.Pages(TabBills.Value)![ID].Value
解决方案
我会用更动态的方法来做到这一点。
帮助程序
此过程尝试在页面中查找子表单控件。
如果页面中有多个子表单控件,则返回第一个找到的控件。
Private Function FindSubformControlInPage(ByVal pageToCheck As Page) As SubForm
Dim item As Control
For Each item In pageToCheck.Controls
If TypeOf item Is SubForm Then
Set FindSubformControlInPage = item
Exit Function
End If
Next
End Function
用法
Dim currentSubformControl As SubForm
Set currentSubformControl = FindSubformControlInPage(Me.TabBills.Pages(Me.TabBills.Value))
If currentSubformControl Is Nothing Then
MsgBox "No subform control in the current page"
Exit Sub
End If
If currentSubformControl.SourceObject = vbNullString Then
MsgBox "The current subform control doesn't contain a form."
Exit Sub
End If
Dim currentSubform As Form
Set currentSubform = currentSubformControl.Form
MsgBox "Found subform: " & currentSubform.Name
更紧凑的用法
这意味着您确定总是有一个子表单控件并且它包含一个表单。
Dim currentSubform As Form
Set currentSubform = FindSubformControlInPage(Me.TabBills.Pages(Me.TabBills.Value)).Form
MsgBox "Found subform: " & currentSubform.Name
获取身份证
最后,拥有正确的(子)表单,您可以访问您的ID
字段:
Dim currentID As Long
currentID = currentSubform.Controls("ID").Value
推荐阅读
- c++ - OpenGL 在 VMWare Fusion 版本 10.1.3 上设置的虚拟机 (Ubuntu 16.04) 上崩溃。
- javascript - 使用 redux saga 时出错,take(patternOrChannel): argument 8 is not valid channel or a valid pattern
- wordpress - Wordpress 表键关系
- swift - 如何在 Swift 中使用 String(contentsOfFile: )?
- python - 我可以使用 python 抓取本地托管的网站吗?
- python - 连接 np.arrays python
- php - $_REQUEST["url"] 没有得到完整的 url
- google-bigquery - 具有外部依赖项的 Moqui 脚本
- ios - UITextField 返回编辑前保存的值
- reactjs - React-Native FlatList 使用 keyExtractor 获取数据