Sql server 筛选Access中包含子窗体的窗体
在SQL数据库中,我有一个表,Sql server 筛选Access中包含子窗体的窗体,sql-server,ms-access,ms-access-2007,Sql Server,Ms Access,Ms Access 2007,在SQL数据库中,我有一个表,Table1。此表与另一个表相关,表2,该表又与表3相关。有一个查询Query1,它从表1中选择某些记录 此数据库链接到Access数据库项目中的 表格Table1Data基于Table1,数据表包含相关Table2数据(以及随后的Table3数据)。此表单由另一个表单(交换机)打开。打开表单时会出现问题。我希望筛选表单,但当我设置宏并打开表单并将筛选器设置为Query1时,表单中的数据不会被筛选。为什么会这样,难道不是这样吗查询1选择表1中的所有列,因此不匹配列不
Table1
。此表与另一个表相关,表2
,该表又与表3
相关。有一个查询Query1
,它从表1
中选择某些记录
此数据库链接到Access数据库项目中的
表格Table1Data
基于Table1
,数据表包含相关Table2
数据(以及随后的Table3
数据)。此表单由另一个表单(交换机
)打开。打开表单时会出现问题。我希望筛选表单,但当我设置宏并打开表单并将筛选器设置为Query1
时,表单中的数据不会被筛选。为什么会这样,难道不是这样吗<代码>查询1选择表1中的所有列,因此不匹配列不应成为问题
此外,我想锁定它-只有某些人可以执行
Query1
,与其他查询相同(Query2
,Query3
等)。因此,他们只能编辑允许编辑的数据。我的首选解决方案是以Open event的形式设置recordsource。这让我对正在发生的事情有了最大的控制权
这是我做这件事的样板。它还包括查找在调用表单时传递的OpenArg。如果不希望在SQL中指定调用表单中的任何内容,则可以注释掉或删除If/Then语句
Private Sub Form_Open(Cancel As Integer)
' Comments :
' Parameters: Cancel -
' Modified :
' --------------------------------------------------
On Error GoTo Err_Form_Open
Dim strSQL As String
Dim strVariable As String
Dim strDateVariable As String
Dim dteDateVariable As String
Dim i As Integer
Dim n As Integer
'Get variables from Left and right of | in OpenArgs
If Not (IsNull(Me.OpenArgs)) Then
i = InStr(1, Me.OpenArgs, "|")
n = Len(Me.OpenArgs)
strVariable = Left(Me.OpenArgs, n - (n - i + 1))
strDateVariable = Right(Me.OpenArgs, (n - i))
dteDateVariable = CDate(strDateVariable)
Else
GoTo Exit_Form_Open
End If
strSQL = "SELECT ... " _
& "FROM ... " _
& "WHERE (((Field1)='" & strVariable & "') " _
& " AND ((Field2)=#" & dteDateVariable & "#));"
Me.RecordSource = strSQL
Me.Requery
Exit_Form_Open:
Exit Sub
Err_Form_Open:
Select Case Err.Number
Case Else
Call ErrorLog(Err.Number, Err.Description, "Form_Open", "frmName", Erl)
GoTo Exit_Form_Open
End Select
End Sub
您是否有一个宏OpenForm操作的示例,该操作会导致此运行以及在此基础上设置的变量?请尽快远离宏。它们缺乏通用性,并且没有纠错功能。宏是为新手准备的。在使用Access几周后,您不应该创建任何内容,但需要创建的两个功能(AutoExec和AutoKeys)除外。当您打开问题中描述的表单Table1数据时,OpenForm操作将启动。代码将执行将Recordsource设置为SQL字符串的操作,然后.Requery将根据新的Recordsource绘制表单。此外,我同意David Fenton的观点,即不应使用宏,但我甚至不会在AutoExec和AutoKeys中使用宏,因为我只是找到解决这些问题的其他方法。