【问题标题】:Organization buttons for subform子表单的组织按钮
【发布时间】:2013-11-10 14:24:25
【问题描述】:

我正在尝试设计一个多用途的组织按钮。

按钮下方是一个子表单(名为 ProjectQSubF),其中包含数据。虽然我们只关注一组数据,假设这些数据名为 ProjectComplete 并且是一个布尔 Y/N(复选框)字段。

我想设计一个按钮,当您单击它时,它会根据检查是否选中(是)对所有这些字段进行排序。如果再次单击该按钮,它会按未选中(否)的相反状态对其进行排序。如果你一直点击它,它只会在这两种状态之间来回切换。

我该怎么做?

另外,我将如何处理日期;是基于距离现在更近,距离最远的两个州?

【问题讨论】:

    标签: sql sorting ms-access vba


    【解决方案1】:

    创建一行(或复选框或其他)。设置为可见 = false;

    使用标签值(/checked 状态)来保存一个常量,比如 True 或 False; 将对象命名为 isSortAscending 或类似名称;

    在您的按钮的点击事件中:

    isSortAscending.Tag = (not cbool(isSortAscending.Tag)) 'switch state to the opposite
    dim ss as string: ss = ProjectQSubF.Form.RecordSource  'get the existing data query 
    ss = left(ss, instr(ss, "ORDER BY") - 1)               'chop off the existing sort logic
    if isSortAscending.Tag = True then
        ProjectQSubF.Form.RecordSource = ss & "ORDER BY yourColumnName"
    else
        ProjectQSubF.Form.RecordSource = ss & "ORDER BY yourColumnName DESC"
    end if
    

    与日期类似,DESC 表示最新的在前,ASC(或简单地没有“DESC” - 如我上面的代码所示)表示最旧的在前。

    无论您使用的是日期还是真/假列,您可能都不想将排序限制为仅此列,因为您正在使用的列的任何一个值都可能存在多行,并且其中的行然后此列可能看起来未排序,因此我建议在上述 order by 语句之后附加“, nameofMainTextColumn”。

    希望对你有帮助

    【讨论】:

    • 当我单击按钮时,它给我一个错误说明:运行时错误'5':无效的过程调用或参数。将我发送到这行代码:ss = Left(ss, InStr(ss, "ORDER BY") - 1) 'chop off the existing sort logic
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2019-08-10
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2015-12-28
    • 1970-01-01
    相关资源
    最近更新 更多