0

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

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

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

我该怎么做?

另外,我将如何处理日期;基于更近和最远的两个州?

4

1 回答 1

0

创建一行(或复选框或其他)。将其设置为可见 = 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”。

希望这可以帮助

于 2013-10-31T03:01:08.217 回答