Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用主窗体上子窗体中的日期筛选值_Sql_Vba_Ms Access_Subform - Fatal编程技术网

Sql 使用主窗体上子窗体中的日期筛选值

Sql 使用主窗体上子窗体中的日期筛选值,sql,vba,ms-access,subform,Sql,Vba,Ms Access,Subform,我试图获取allready筛选子表单的最后一个条目,并将该值放在MainForm上。条目还应介于日期0和日期1之间。如果未始终指定日期1(在这种情况下,只需从子窗体获取最后一个条目)。因此,您得到了一个更加图形化的想法(这是真实形式的简化): MainForm: 日期0 日期1 值集 2020/12/23 2021/02/27 来自子窗体的值 你可以在下面试试- Private Sub cmdGetResult_Click() Dim strFilter As String Dim rs As

我试图获取allready筛选子表单的最后一个条目,并将该值放在MainForm上。条目还应介于日期0和日期1之间。如果未始终指定日期1(在这种情况下,只需从子窗体获取最后一个条目)。因此,您得到了一个更加图形化的想法(这是真实形式的简化):

MainForm:

日期0 日期1 值集 2020/12/23 2021/02/27 来自子窗体的值 你可以在下面试试-

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子表单_Current()
Dim记录作为DAO.Recordset
模糊值等于长
Dim被发现为布尔值
创纪录=我!YourSubformControl.Form.RecordsetClone的名称
如果Records.RecordCount>0,则
Records.FindFirst“[Dates]>=#”&格式(Me!Date_0.Value,“yyyy\/mm\/dd”)和“#”
如果是Records.NoMatch,那么
“没有日期可查。
其他的
如果为null(Me!Date_1.值),则
最后一个记录
价值=记录!价值,价值
找到=真
其他的
而Records.EOF=False和Found=False
如果记录!Dates.Value>=我!日期_1.那么
价值=记录!价值,价值
找到=真
如果结束
记录,下一步
温德
如果结束
如果结束
如果结束
记录,结束
如果find=True,则
我ValueToGet.Value=Value
如果结束
端接头

删除了我的答案,因为我并没有完全阅读这个问题,然后我测试了我的建议,聚合函数将无法使用动态参数的文本框。这很可能需要域聚合函数或VBA自定义函数。仍在探索中。您可能需要一些VBA编码,并通过单击命令按钮调用代码。谢谢。该按钮在我的示例中起作用(如果为Null,则在date_1上使用NZ()函数),但问题是,子窗体有一个集合过滤器,修改它时,记录会被弄乱。我是否可以直接在DAO.Recordset上应用过滤器而不过滤实际子窗体的记录集?谢谢。在运行代码时,如果Date_1为Null,则会出现以下错误:
Value=Records!Value.Value
知道为什么会这样吗?这很奇怪。应该有记录,但要仔细检查。