【问题标题】:Delay loading records of subform延迟加载子表单的记录
【发布时间】:2013-11-13 23:58:39
【问题描述】:

我有一个带有搜索字段的表单,然后搜索结果显示在搜索字段下方的子表单中。

默认情况下,子表单会在输入任何搜索条件之前加载所有记录。

随着这个数据库的增长,可能要搜索的记录数量会变得很大,所以我真的不希望子表单在用户尝试进行搜索之前加载所有记录。

在不显示任何记录的情况下加载搜索结果子表单最性能友好的方式是什么?

我考虑过设置子表单记录源 SQL 来搜索我知道永远不会出现在结果中的东西......但我认为仍然需要先加载记录然后过滤(这可能是错误的不过)。

理想情况下,我希望搜索结果子表单仅加载记录集的字段名称,但在用户尝试搜索之前不加载任何记录。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    将子表单的记录源设置为返回单个制造行的查询。

    SELECT
        0 AS id,
        '' AS fname,
        '' AS lname,
        '' AS email
    

    这不会从您的表中提取任何记录。

    收集用户的搜索条件后,构建新的SELECT 并将其指定为记录源。

    【讨论】:

    • 好主意..谢谢。不过美中不足的是:我在搜索结果中创建了一个计算文本字段,它替换了记录源中的其他 2 个字段(基本上连接了 2 个字段并添加了一些文本)。不幸的是,计算字段中的附加文本仍然存在,我不知道如何摆脱它。尝试将计算的文本框字段分配给长度为 0 的字符串会产生错误。
    • 当你谈到计算字段时,你的意思是计算是在子窗体控件的控件源中完成的,还是作为SELECT查询中的字段表达式?
    • 在子窗体控件的Control Source中完成;具体来说:[ColloquialCourseTitle] & Chr(13) & Chr(10) & "(LARS: " & [LarsAimTitle] & ")" 将文本 (LARS: ) 留在子表单的文本框中。我也在控制源中尝试了iif 语句,以测试连接的字段是否为 0 长度,但这似乎不起作用。
    • 由于您将使用 VBA 来更改记录源,我想您也可以同时更改文本框控制源。那会有帮助吗? (对不起,如果我在这里很笨拙。)
    • 慢慢建立起来,这似乎有效:"=[ColloquialCourseTitle]& Chr(13) & Chr(10)&""(LARS: ""&[LarsAimTitle]&"")""" 再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多