如何在MS Access的表子表数据表视图中设置列的大小

时间:2015-03-06 10:16:20

标签: forms vba ms-access

我有一个子表格困扰我。主窗体包含按钮等。每当用户关闭/打开表单时,列宽将重置为表所喜欢的任何内容。如果我直接打开桌子,大小就是我想要的。如果我在子窗体中更改它,则不会保存。 (见screendump)

我希望“相位”保持2厘米宽。我可以输入子窗体并编辑“宽度”,但这仅适用于其他视图。

crop

我希望你可以帮助,埃米尔。

11 个答案:

答案 0 :(得分:1)

我知道这已经晚了,很可能是任何人读到的最后一条评论,但这可以在 MS Access 2016 中非常简单地完成 - 由像我这样的人在数据库方面的整体经验不超过 4 天并且没有编写自定义宏或 VB 脚本的经验(仅使用 MS Access 原生的内容)。

我是这样做的。

场景 - 拆分表单(表单 + 数据表)。

额外推荐:

  1. 了解数据库中每种对象类型的所有属性是值得的,因为字段属性的更改可能会导致不可预测的不稳定影响,这需要很长时间才能弄清楚它发生的原因以及如何阻止它发生再次,同时提供您想要的结果。

  2. Me.Requery 在每次必要的事件之后以及在您的主窗体中的 VBA 脚本中(通常最常使用 'After Update' 事件),并注意过多的 Me.Requery(在不必要的事件中)也可能是有害的 - 所以太多的好事可能是坏事。

底线在前 - 修改要导出/打印的查询的格式。

  1. 在您关注的查询的“设计视图”中,确保字段按照您需要的顺序输出,因为这正是宏将它们呈现以供导出/打印的方式(示例可以依次是“澳大利亚”,然后是“北领地”,然后是“该州北半部的城镇”,然后是“达尔文”,然后是“城市北半部的郊区”)。

  2. 在同一个查询中切换到“数据表视图”并使用左上角折叠三角形看起来像东西突出显示整个数据集,然后右键单击同一个三角形以显示选项菜单.选择“行高”并输入“15”(Excel 中的默认行高)。

  3. 取消选择整个电子表格,这次选择每一列(左键单击最左边的列,按住 shift 按钮,向右滚动到数据集的远端并单击最后一列),然后向右单击突出显示的列之一以显示另一个菜单。选择“字段宽度”,然后在新的弹出菜单中选择“最适合”,然后选择“确定”。

  4. (可选 - 不确定这是否有帮助或阻碍,但我这样做是为了我的目的)在仍然选中列的情况下,再次右键单击突出显示的列之一,然后选择“冻结字段”。

  5. 我的场景中的按钮带有配置为运行过滤报告的宏,因此我只需单击这些按钮中的任何一个并查看报告格式即可进行检查,这与我刚刚完成的工作相符。我使用另一个带有宏的按钮导出到 Excel,并选择了“打印格式”(我的主表单也将数据表视图作为唯一可以打印的内容,并且也设置为“打印”格式。

Excel 电子表格以所有行高和列宽的方式打开,我可以轻松读取每个字段/记录,无需额外修改。

这也适用于级联组合框,导出仅以不需要进一步修改的格式输出“钻取/过滤”数据表记录。

希望这对某人有所帮助,因为它拯救了我的隐藏! :)

答案 1 :(得分:0)

在Design中打开Main表单。转到SubForm。单击SubForm左上角的方框,然后选择“属性”#39;。右键单击控件'阶段'然后点击'属性'。点击'格式'选项卡并选择'宽度'。你在那看到什么?这应该控制控制权的阶段性。除非你在其他地方有一些压倒性的编码。输入您想要的大小,看看会发生什么。

答案 2 :(得分:0)

我发现这篇文章差不多有两年了,但我遇到了同样的问题,并且发现了这篇文章。

我在Windows 7旗舰版上运行MS Access 2013。我没有找到这里提供的解决方案为我工作,因此,在开始使用VBA代码之前,我开始寻找 为我工作的东西。 (顺便说一句,我很欣赏@Patrick_Honorez在他对原始帖子的评论中提供的链接,因为那将是我的后备解决方案。)

无论如何,这对我有用,我希望也许对其他人有用:

  1. 打开父表单。
  2. 在子窗体中,右键单击列标题 对于要调整宽度的列。
  3. 从上下文菜单中选择“字段宽度”项。
  4. 在步骤3中显示的“列宽”对话框中,以点为单位输入所需的列宽,或者使用[最适合]按钮。然后单击[确定]按钮关闭对话框并返回到表单。
  5. 右键单击父窗体的边框以显示父窗体的上下文菜单。单击上下文菜单中的“保存”项。
  6. 现在关闭父表单。
  7. 下次加载表单时,列宽应该与上面的步骤4一样 - 至少它们是我的设置。

答案 3 :(得分:0)

改为使用连续表格。它使您可以完全控制子窗体的显示方式。

答案 4 :(得分:0)

如果直接打开子窗体,则默认视图为“数据表”时,属性表菜单应自动显示。单击“全部”,然后将“自动调整大小”属性更改为“否”。这样可以解决问题,并避免使用VBA。

这仅在单独打开子窗体时有效。因此,如果您希望更改反映在主表单中,则必须将其关闭并来回切换。

答案 5 :(得分:0)

默认情况下超级烦人。 就像您将视图模式设置为布局视图一样,它似乎可以正常工作。根据需要拖动列宽并保存。返回到窗体视图,它可以工作。真是愚蠢,在表单视图和我们的设计视图中,它的工作方式不同。

答案 6 :(得分:0)

在Access 365中,打开主窗体,右键单击需要宽度调整的子窗体数据表列,使用“字段宽度”进行调整,单击主窗体的边框以选择“布局”视图,然后保存更改。

答案 7 :(得分:0)

我看到这篇文章已经很老了,OP必须设法解决该问题。我今天遇到了同样的问题,并在this link上找到了解决方案。 对于其他有相同问题的人,请使用以下代码(我对代码进行了一些修改,因为上述文章中的原始代码仅保存了文本框的列宽,但是我的表单也有组合框,但没有保存列宽)关闭和打开子窗体的事件,然后在“窗体视图”中打开主窗体,然后通过鼠标,输入列宽值或使用最佳拟合手动选择所需的宽度。保存该表格并重新打开以检查结果。就是这样。

Private Sub Form_Close()
    Dim ctrl As Control

    For Each ctrl In Me.Controls
        If (ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox) Then
            SaveSetting "propertiesDBS", Me.Name, ctrl.Name, ctrl.ColumnWidth
        End If
    Next
End Sub


Private Sub Form_Open(Cancel As Integer)
Dim ctrl As Control
Dim frm As Form
Dim w As Long
    For Each ctrl In Me.Controls
        If (ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox) Then
            w = GetSetting("propertiesDBS", Me.Name, ctrl.Name, 0)
            If w <> 0 Then ctrl.ColumnWidth = w
        End If
    Next
End Sub

答案 8 :(得分:0)

  1. 在数据表视图中打开子表单(通过双击左面板中的子表单)
  2. 通过拖动或右键单击要调整宽度的列的列标题来根据需要调整列的大小,然后从上下文菜单中选择“字段宽度”。
  3. 右键单击子窗体边框以打开上下文菜单。单击上下文菜单中的“保存”项。

答案 9 :(得分:-1)

在布局视图中打开主窗体或直接在数据表视图中打开子窗体。右键单击“字段标题”,选择“字段宽度”,然后输入所需的宽度。保存。 Bewm。

答案 10 :(得分:-1)

我的解决方案(Access 2016)是创建主&子表单,使用表单向导自行重新创建子表单,并按照我想要的方式进行设置,将原始子表单重命名为其他名称,最后重命名重新创建的子表单更改为原始表单名称。打开主窗体,子窗体应按照您想要的方式进行布局。然后,您可以删除重命名的原始子表单。