好的,这是我的情景: 我有一个带有子表单的表单,在msAccess2013中这个子表有一个表,我想用组合框中的列表过滤行,这样子表单根据组合框的选择向我显示记录,组合框数据type是一个日期,它也是一个级联组合框(它将显示数据而不管另一个组合框),所以最后我将过滤在子表格中只有该特定日期的记录。
好的,这是我的代码:
Private Sub cbSelectDate_AfterUpdate()
Dim AT As Date
AT = "select * from subform where ([AppointDate] = # & Me.cbSelectDate & "#')"
Me.subform.Form.RecordSource = AT
Me.subform.Form.Requery
End Sub
vb并不完全接受我的代码它说"编译错误:预期:结束语句"请帮助??
答案 0 :(得分:0)
因为第三线"结束字符串和' #')" '将是字符串 所以把""而不是" AT ="从子表格中选择*([AppointDate] =#& Me.cbSelectDate&""#')"
答案 1 :(得分:0)
Me.cbSelectDate是代码中字符串的一部分,尝试类似:
"select * from ..." & Me.cbSelectDate & "...end stuff"
答案 2 :(得分:0)
您将子表单记录源设置为日期...这不起作用。您可以使用几种不同的方法。像你的例子中的SQL就是其中之一。但在这种情况下,我可能只是在您的子表单记录源上应用过滤器。这是未经测试的,但它应该接近你想要的。我唯一记不住的是,如果在表单过滤器中使用了Pounds(#),我知道它们在Access SQL和Expressions中被起诉,但表单过滤器有时会有所不同。
Private Sub cbSelectDate_AfterUpdate()
Dim strFilter As String
Dim rst As DAO.Recordset
' Clone The Current Subform's Recordset
Set rst = Me.SubForm.Form.RecordsetClone
' Get the Current Filter If One Has Already Been Applied to the Subform
If Me.SubForm.Form.FilterOn Then strFilter = Me.SubForm.Form.Filter
If Not rst.EOF Then
If strFilter > "" Then
strFilter = strFilter & " AND [AppointDate] = #" & Me.cbSelectDate & "#"
Else
strFilter = "[AppointDate] = #" & Me.cbSelectDate & "#"
End If
Me.SubForm.Form.Filter = strFilter
Me.SubForm.Form.FilterOn = True
End If
Set rst = Nothing
Me.SubForm.Form.Requery
End Sub