如何在嵌套子数据表窗体中获取选中记录的列值用于VBA SQL
解决嵌套数据表窗体中获取字段值的问题
我太懂你折腾半天的这个困扰了——嵌套数据表窗体里的控件看起来好像没个正经名称,导致双击txtSID单元格时,想拿那值(比如图里的20)传入SQL却摸不着门路。其实数据表视图的控件是有名称的,只是视图方式让它藏起来了,给你两种靠谱的解决方法:
方法1:用Screen.ActiveControl抓当前激活控件的值
双击事件触发的瞬间,你点的那个txtSID就是当前激活的控件,直接用这个对象就能拿到值:
Private Sub txtSID_DblClick(Cancel As Integer) ' 获取双击单元格的SID值 Dim targetSID As Variant targetSID = Screen.ActiveControl.Value ' 拼接SQL语句(重点注意SID的数据类型) Dim sqlQuery As String ' 如果SID是数字类型,直接拼接 sqlQuery = "SELECT * FROM 你的目标表 WHERE SID = " & targetSID ' 如果SID是文本类型,必须用单引号把值包起来 ' sqlQuery = "SELECT * FROM 你的目标表 WHERE SID = '" & targetSID & "'" ' 后续执行SQL的逻辑(比如打开查询、操作记录集等) ' ... End Sub
方法2:直接引用绑定控件或窗体记录集
因为txtSID是绑定到字段的控件,你可以直接通过窗体对象引用它,或者从窗体的记录集里取对应字段的值:
Private Sub txtSID_DblClick(Cancel As Integer) Dim targetSID As Variant ' 方式A:直接调用控件的Value属性 targetSID = Me.txtSID.Value ' 方式B:从窗体绑定的记录集里取字段值(和控件是同一个数据源) ' targetSID = Me.Recordset.Fields("SID").Value ' 同样按数据类型拼接SQL并执行 ' ... End Sub
小提醒
- 千万别忽略数据类型:数字类型直接拼SQL就行,文本类型一定要加单引号包裹值,不然会触发SQL语法错误。
- 如果这个数据表是子窗体,要是从主窗体层面调用才需要写
Me.子窗体控件名.Form.txtSID.Value,但你是在子窗体控件的双击事件里,直接用Me就完全没问题。
内容的提问来源于stack exchange,提问作者Dzintars
相关产品推荐
相关产品推荐

