MS Access:子表单中的数据表 - 保存布局更改?

时间:2013-12-05 12:52:32

标签: ms-access

我有一个包含数据表的子表单。偶尔,我需要调整数据表布局(列顺序,宽度等)。在布局模式下,即使是设计模式,单击SAVE似乎也不会保留这些更改。

但是,某些情况下保存了更改,但我不清楚允许保存的机制是什么。

我的目的是冻结布局修改,允许我的用户在运行时使用布局,但不会在会话结束时提示他们保存。

保存这些布局更改的任何技巧?这真令人发狂!

不是:我没有在属性表中看到AllowDesignChanges属性。

3 个答案:

答案 0 :(得分:1)

直接编辑子表单似乎对我有用,即不要从主表单进行更改,而是打开子表单本身并进行/保存更改。

这让我疯了。

答案 1 :(得分:0)

嗯,我认为这不是不可能的。

对于过渡期,我已经使用了一个单独的表,其中包含所有表属性名称(“AttrDisplay”,135列,不要问 - 继承这个东西),每个Filter有一个列(其中4个)。我使用一个简单的整数值设置属性顺序,隐藏/取消隐藏该表中的列。取决于用户选择的过滤器。

在子窗体Load上,我隐藏了所有列:

Dim ctl As Control
Dim rs2 As DAO.Recordset
Dim strSQL As String

For Each ctl In Me.Controls
    ctl.ColumnHidden = True
Next ctl

然后我打开“AttrDisplay”表并逐步遍历每一列以设置顺序并取消隐藏特定于过滤器的列。同时自动调整列宽:

strSQL = "SELECT AttrDisplay.AttrNo, AttrDisplay.AttrName, AttrDisplay.Filter1, AttrDisplay.FIlter2, AttrDisplay.Filter3, AttrDisplay.Filter4 " & _
     "FROM AttrDisplay " & _
     "WHERE (((AttrDisplay.Filter1) > 0)) " & _
     "ORDER BY AttrDisplay.Filter1;"
Set rs2 = db.OpenRecordset(strSQL, dbOpenDynaset)

Do While Not rs2.EOF
    If rs2!Filter1 < 8000 Then       'Leave hidden > 8000
        Forms![myForm]![mySubform].Form.Controls(rs2!AttrName).Properties("ColumnHidden") = False
        Forms![myForm]![mySubform].Form.Controls(rs2!AttrName).Properties("ColumnOrder") = rs2!Filter1
        Forms![myForm]![mySubform].Form.Controls(rs2!AttrName).Properties("ColumnWidth") = -2
    End If
    rs2.MoveNext
Loop

我根据所选过滤器修改此代码。使修改这个笨重的数据表显示非常可配置。选定的过滤器提供了截然不同的数据视图。

答案 2 :(得分:0)

我发现以下内容适合我:

  1. 打开包含所有子表单的表单。
  2. 按照您的意愿重新排列或调整子表单中的字段。
  3. 单击(突出显示)子表单中的一列。
  4. 在功能区上,在文本格式组中,将此列居中(或更改文本格式组中的任何属性),然后将其更改回左对齐(或粗体,然后以非粗体显示子表单)。 / LI>
  5. 出现提示时关闭并保存表单。
  6. 您的子表单现在应该包含所有更改。