我正在编写一个 Access 数据库。我有许多相同的表格。这些用于编辑我的主要联系人表中不同字段的查找列表。
例如,有一个公司字段和一个国家字段。为每个可编辑列表打开的表单与每个中的重复 vba 代码相同,因为我无法弄清楚如何从活动表单中引用活动表。
我目前用于清除表中所有是/否框的代码是:
Private Sub cmdClearTicks_Click()
Dim db As Database
' Dim sel As Control
Set db = CurrentDb
' Clear all ticks of selected records
db.Execute "UPDATE ContactCompany " _
& "SET Selected = null "
' Update Selected Field
Me.Requery
End Sub
ContactCompany
是表的名称。我希望能够在全局范围内设置这个子,但无法确定我应该用什么替换ContactCompany
来引用当前打开的表格中的表格。我已经尝试过Me.RecordSource
哪个不起作用。
我非常感谢我认为这是一个非常容易解决的问题!
肖恩在下面发布了一个很好的修复。我现在也很难包括一个过滤器并在全球范围内定义它。
Sub SelectFiltered(RS As String)
Dim strFilter As String
Dim strSQl As String
If InStr(RS, "FROM") Then
RS = Mid(RS, InStr(RS, "FROM") + 5)
If InStr(RS, " ") Then RS = Left(RS, InStr(RS, " ") - 1)
End If
strFilter = Me.Filter
If Me.FilterOn = False Then
'Select Case MsgBox("No search or filter applied.", vbCritical + vbOKOnly, "Warning")
'End Select
strSQl = "UPDATE " & RS & " " & _
"SET Selected = 1 "
Else
strSQl = "UPDATE " & RS & " " & _
"SET Selected = 1 " & _
"WHERE " & strFilter
End If
DoCmd.SetWarnings False
DoCmd.RunSQL strSQl
DoCmd.SetWarnings True
End Sub
Me.filter 在全局 sub 中不起作用。肖恩 - 我相信你会在几秒钟内得到答案。再次感谢!