首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MS Access中设置表子窗体数据表视图中列的大小

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

Stack Overflow用户
提问于 2015-03-06 18:16:20
回答 11查看 22.3K关注 0票数 6

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

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

希望你能帮上忙埃米尔。

EN

回答 11

Stack Overflow用户

发布于 2018-02-17 03:23:01

我意识到这篇文章差不多有2年了,但我遇到了同样的问题,并偶然发现了这篇文章。

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

无论如何,以下是对我起作用的方法,我希望它也能对其他人起作用:

  1. 打开父窗体。
  2. 在子窗体中,右键单击要调整宽度的列的列标题。
  3. 从上下文菜单中选择“字段宽度”项。
  4. 在步骤3中出现的“列宽度”对话框中,输入所需的列宽度(以磅为单位),或使用最佳拟合按钮。然后单击OK按钮关闭对话框并返回到表单。
  5. 右键单击父窗体的边框以弹出父窗体的上下文菜单。单击上下文菜单中的“Save”项。
  6. 现在关闭父窗体。
  7. 下次加载表单时,列宽应与上面的步骤4设置的相同--至少对于我的设置是这样的。
票数 3
EN

Stack Overflow用户

发布于 2020-04-29 19:23:16

我看到这个帖子已经很老了,OP肯定已经想出了解决这个问题的方法。我今天遇到了同样的问题,并在this link上找到了解决方案。对于任何其他有同样问题的人,在关闭和打开你的子窗体的事件中使用以下代码(我稍微修改了代码,因为上面提到的帖子中的原始代码只保存文本框的列宽,但我的窗体也有组合框,它的列宽没有保存),然后在窗体视图中打开主窗体,然后通过鼠标手动选择所需的宽度,输入列宽值或使用最佳匹配。保存表单并重新打开以检查结果。就这样。

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-04-09 18:14:21

我知道这太晚了,而且很可能是大家最后一次阅读评论,但这在MS Access 2016中可以非常简单地完成-由像我这样的人完成,他在整个数据库方面只有4天的经验,并且没有编写自定义宏或VB脚本的经验(只使用MS Access原生的脚本)。

这就是我是如何做到的。

方案-拆分窗体(窗体+数据表)。

额外的建议:

  1. 跨数据库中每种对象类型的所有属性是值得的,因为字段属性中的更改可能会导致不可预测的反复无常的影响,这需要很长时间才能弄清楚为什么会发生这种情况,以及如何在提供所需结果的同时阻止它再次发生。

在您的VBA脚本中,在每个必要的事件之后以及在主窗体(通常是最常使用的‘更新后’事件)中执行

  1. Me.Requery,并且要注意,太多的Me.Requery(在不必要的事件中)也可能是有害的-因此,太多的好事可能是坏事。

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

  1. 在您关心的查询的“设计视图”中,请确保字段的输出顺序首先是您需要的,因为这正是宏导出/打印它们的方式(例如,依次为“澳大利亚”、“北领地”、“该州北部的城镇”、“达尔文”和“城市北部的郊区”。

)

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

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

冻结字段(可选-不确定这是有帮助还是有妨碍,但我这样做是出于我的目的)在列仍处于选中状态的情况下,再次右键单击其中一个突出显示的列,然后选择‘

  1. ’。

  1. 我的方案中有一些按钮,其中的宏配置为运行过滤后的报告,因此我只需单击这些按钮中的任何一个并查看报告格式,就可以检查这一点,它与我刚才所做的工作保持一致。我使用另一个带有宏导出的按钮导出,并选择了“打印格式”(我的主窗体也将数据表视图作为唯一可以打印的内容,并且也设置为“打印”格式。

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28896645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档