【发布时间】:2011-05-31 16:33:41
【问题描述】:
我正在为我的数据库开发搜索功能。我创建了一个测试数据库来解决问题,但我被卡住了。当我在同一个表单上时,在一个范围内搜索非常简单,我使用以下 VBA 代码完成了它:
Private Sub Command12_Click()
Dim strWhere As String
Dim lngLen As Long
If Not IsNull(Me.Text8) Then
strWhere = strWhere & "( [testNUm] >= " & Me.Text8 & ") AND "
End If
If Not IsNull(Me.Text10) Then
strWhere = strWhere & "( [testNUm] < " & Me.Text10 & ") AND "
End If
lngLen = Len(strWhere) - 5
If lngLen <= 0 Then
MsgBox "no criteria", vbInformation, "Nothing to do"
Else
strWhere = Left$(strWhere, lngLen)
Me.Filter = strWhere
Me.FilterOn = True
End If
End Sub
上面的代码似乎可以正常工作,但是,当我尝试将表单放在选项卡式窗格视图中并将其作为另一个表单的子表单时,我无法正确访问该子表单的表格。我已经尝试使用此处显示的各种方法http://access.mvps.org/access/forms/frm0031.htm,但除了引用子表单中的特定文本框外,我似乎无法让它做任何事情。
Private Sub Command24_Click()
Dim strWhert As String
Dim lngLeng As Long
MsgBox Forms!test2!Child16.Form.testNUm, vbInformation, "wtf"
If Not IsNull(Me.Text20) Then
strWhert = strWhert & "( Forms!test2!Child16.Form.[testNUm] >= " & Me.Text20 & ") AND "
End If
If Not IsNull(Me.Text22) Then
strWhert = strWhert & "( Forms!test2!Child16.Form.[testNUm] < " & Me.Text22 & ") AND "
End If
lngLeng = Len(strWhert) - 5
If lngLeng <= 0 Then
MsgBox "no criteria", vbInformation, "Nothing to do"
Else
strWhert = Left$(strWhert, lngLeng)
Forms!test2!Child16.Form.Filter = strWhert
Forms!test2!Child16.Form.FilterOn = True
End If
End Sub
我在 VBA 编程方面相当不熟练,我的任务是在 2 周内从头开始创建数据库。提前感谢您提供的任何帮助。
【问题讨论】:
-
你应该认真地尝试给你的组件和变量一些更具自我描述性的名称。
-
抱歉,我只是在 2 分钟内完成了测试用例,以后我一定会坚持使用更易于理解的命名约定