子窗体的组织按钮

时间:2013-10-30 19:19:33

标签: sql vba sorting ms-access access-vba

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

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

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

我该怎么做?

另外,我如何用日期做这件事;基于接近现在和最远的两个州?

1 个答案:

答案 0 :(得分:0)

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

使用标记值(/ checked state)来保持常量说出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” - 如上面的代码所示)意味着最早的。

无论您使用的是日期还是真/假列,您可能都不希望将排序限制为此列,因为您正在使用的列的任何一个值都可能存在多行,并且这个列可能看起来是未排序的,所以我建议在上面的语句后面附加“,nameofMainTextColumn”。

希望这有帮助