【问题标题】:How do I set size of colums in a table subform datasheet view in MS Access如何在 MS Access 的表格子表单数据表视图中设置列的大小
【发布时间】:2015-05-07 22:21:37
【问题描述】:

我有一个子表单困扰着我。主窗体包含按钮等。每次用户关闭/打开窗体时,列宽都会重置为表格喜欢的任何值。如果我直接打开桌子,尺寸就是我想要的。如果我在子表单中更改它,它不会被保存。 (见屏幕转储)

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

希望你能帮上忙,埃米尔。

【问题讨论】:

  • 在设计中打开主窗体。转到子窗体。单击子表单左上角的方块并选择“属性”。右键单击控件“相位”并单击“属性”。单击“格式”选项卡并选择“宽度”。你在那里看到什么?这应该控制控制“阶段”的宽度,除非您在其他地方有一些覆盖编码。
  • 确实,数据表视图中的列的宽度都是相同的,与窗体视图中定义的控件宽度无关。当前的答案都不起作用。我发现的唯一解决方案使用 VBA:stackoverflow.com/a/36944013/78522
  • 最简单的方法是进入布局视图而不是设计视图,然后将列的大小拖到所需的宽度

标签: forms vba ms-access


【解决方案1】:

在设计中打开主窗体。转到子窗体。单击子表单左上角的方块并选择“属性”。右键单击控件“相位”并单击“属性”。单击“格式”选项卡并选择“宽度”。你在那里看到什么?除非您在其他地方有一些压倒一切的编码,否则这应该控制控制“阶段”的宽度。输入你想要的尺寸,看看会发生什么。

【讨论】:

  • 嗨。我已经试过了。上面写着2厘米。但它大约是4-5厘米。问题是当我进入设计视图时,它不会将子表单显示为表格,而是显示为带有标题的文本框列表......完全不同的视图。但是当我回到查看模式时,它是一个表格,就像直接打开一个表格一样。
  • 您的子表单可以被视为数据表或表单。也许您需要更改视图。尝试右键单击子表单。
  • 我试过了。有时,它只是显示为一个白色框,左上角的文本为“Table.Name”,而不是显示实际的表格。我重新制作了子表单,然后能够在布局视图中使用光标手动设置宽度,从而保存它。这暂时有效! :)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我意识到这篇文章已经有将近 2 年的历史了,但我遇到了同样的问题并遇到了这篇文章。

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

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

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

    【讨论】:

    • 你必须用鼠标手动设置,可以这么说。将其拖得更宽,然后点击保存。重启看看有没有保存。我现在用这个方法,因为它是最快的:)
    • 是的,这也可以,但我不会说你“”这样设置它;它以这种方式工作,以及上述方式。
    • @DRC 有没有办法让子表单在设计视图中显示在数据集中而不是“单一表单”视图中,以便我可以单击列标题?
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      改用连续形式。它使您可以完全控制子表单的显示方式。

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          默认情况下超级烦人。 它似乎可以按照您将视图模式设置为布局视图的期望工作。根据需要拖动列宽并保存。返回表单视图,它可以工作。真的很笨,它在表单视图中的工作方式与我们的设计视图不同。

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              我看到这篇文章很老了,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
              

              【讨论】:

                【解决方案10】:
                1. 在数据表视图中打开子表单(双击左侧面板中的子表单)
                2. 根据需要调整列的大小,方法是拖动或右键单击要调整宽度的列的列标题,然后从上下文菜单中选择“字段宽度”项。
                3. 右键单击子窗体边框以调出上下文菜单。点击上下文菜单中的“保存”项。

                【讨论】:

                  【解决方案11】:

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

                  我是这样做的。

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

                  额外推荐:

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

                  2. 在每个必要的事件之后在你的 VBA 脚本中以及在你的主窗体中(通常最常用的是“更新后”事件)中的 Me.Requery,并注意过多的 Me.Requery(在不必要的事件中)也可能是有害的——太多的好事可能是坏事。

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

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

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

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

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

                  5. 我的场景有带有配置为运行过滤报告的宏的按钮,因此我可以通过简单地单击任何这些按钮并查看报告格式来检查这一点,这与我刚刚完成的工作保持一致。我使用另一个按钮导出了一个宏,该宏在选择“打印格式”的情况下导出到 Excel(我的主表单也有数据表视图作为唯一可以打印的内容,并且也设置为“打印”格式。

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

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

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

                  【讨论】:

                  • 进一步更新:Microsoft Excel 默认行高实际上是 14.25(我很抱歉)如果您导出的 Excel 电子表格报告以随机列宽打开,我发现如果您返回相应的查询并双击 -在每列之间(自动调整大小),这也可能有所帮助。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-09-14
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多