私はMS Accessで働いています。ログイン情報 (vba コードによって決定される) に基づいて、特定のレコードセットをユーザーに表示しないフォームを開こうとしています。
次の DoCmd.OpenForm を使用すると、フォームが開かれますが、ユーザーから非表示にしたいレコードセット (G_Var = YES) のみが除外されます。したがって、ユーザーはフィルター処理されたデータシート フォームを削除して、行を表示することができます (フィルターを無効にしたくありません)。私は何を間違っていますか?
DoCmd.OpenForm "Metrics", acFormDS, , "G_Var = 'NO'"
また、この情報を取得するために何らかのクエリを作成できるのではないかと考えていました。おそらく次のようなものです:
rs.Open "Select * FROM Metrics WHERE G_Var = 'NO';", CurrentProject.Connection
この照会された情報を取得してフォームに出力する方法がわかりません。レコードソースを定義することで、次のようにタスクを達成できました。
Private Sub btnMetrics_From_Click()
DoCmd.OpenForm "Metrics", acFormDS
Forms.Item("Start Form").Visible = False
End Sub
Private Sub Form_Activate()
Dim rs As New ADODB.Recordset
Dim sql As String
Dim Boo As Boolean
g_User = UserInfo(ap_GetUserName())
Boo = False
rs.Open "SELECT * FROM tbl_User_Info WHERE G_Var_Access = TRUE;", CurrentProject.Connection
Do Until rs.EOF = False
If rs.Fields("User_Name").Value = g_User Then
Boo = True
Exit Do
End If
Loop
rs.Close
If Boo = True Then
Else
Me.RecordSource = "SELECT * FROM Metrics WHERE G_Var = 'NO';"
End If
Me.Requery
End Sub
ありがとう