私はAccessデータベースを書いています。同一のフォームがいくつかあります。これらは、メインの連絡先テーブルのさまざまなフィールドのルックアップリストを編集するために使用されます。
たとえば、会社フィールドと国フィールドがあります。編集可能なリストごとに開くフォームは、アクティブなフォームからアクティブなテーブルを参照する方法がわからないため、それぞれの繰り返しvbaコードと同じです。
テーブル内のすべてのyes/noボックスをクリアするために現在持っているコードは次のとおりです。
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はグローバルサブでは機能しません。ショーン-これに対する答えはすぐにわかると思います。再度、感謝します!