如何解决在主窗体上使用子窗体中的日期过滤值
我正在尝试获取已过滤的子窗体的最后一个条目并将该单个值放在主窗体上。条目也应该在 Date_0 和 Date_1 之间,但并非总是指定 Date_1(在这种情况下,只需从 SubForm 获取最后一个条目)。所以你会得到一个更图形化的想法(这是真实表单的简化):
主窗体:
日期_0 | 日期_1 | 获取价值 |
---|---|---|
2020/12/23 | 2021/02/27 | 来自子表单的值 |
子表单:
日期 | 价值观 |
---|---|
2020/12/20 | 1200 |
2020/12/23 | 1189 |
2021/01/25 | 1173 |
2021/02/20 | 1165 |
2021/03/12 | 1333 |
在本例中,要从子表单收集的值将是第四个条目(Date_0 和 Date_1 之间,以及该日期范围内的最后一个条目)。然后该值存储在 MainForm 中的 txtBox 中作为 Form Loads。我知道解决方案可能是在 txtBox 上设置 sql 过滤器,但我不知道如何执行此操作。任何帮助将不胜感激。提前致谢!
解决方法
你可以试试下面的子
Private Sub cmdGetResult_Click()
Dim strFilter As String
Dim rs As DAO.Recordset
Me.Refresh
strFilter = "[Dates] BETWEEN #" & Me.Date_0 & "# AND #" & Me.Date_1 & "#"
Forms![Form1]![subformTest].Form.Filter = strFilter
Forms![Form1]![subformTest].Form.FilterOn = True
Set rs = Me.subformTest.Form.RecordsetClone
rs.MoveLast
Me.txtValueToGet = rs!values
Forms![Form1]![subformTest].Form.FilterOn = False
Set rs = Nothing
End Sub
,
OnLoad 事件可能为时过早,但这样的事情应该可行:
Private Sub Form_Current()
Dim Records As DAO.Recordset
Dim Value As Long
Dim Found As Boolean
Set Records = Me!NameOfYourSubformControl.Form.RecordsetClone
If Records.RecordCount > 0 Then
Records.FindFirst "[Dates] >= #" & Format(Me!Date_0.Value,"yyyy\/mm\/dd") & "#"
If Records.NoMatch Then
' No dates to look up.
Else
If IsNull(Me!Date_1.Value) Then
Records.MoveLast
Value = Records!Values.Value
Found = True
Else
While Records.EOF = False And Found = False
If Records!Dates.Value >= Me!Date_1.Value Then
Value = Records!Values.Value
Found = True
End If
Records.MoveNext
Wend
End If
End If
End If
Records.Close
If Found = True Then
Me!ValueToGet.Value = Value
End If
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。