Ms access 在MS Access中是否有一种编程方式来处理子窗体/滚动条情况?

Ms access 在MS Access中是否有一种编程方式来处理子窗体/滚动条情况?,ms-access,scroll,scrollbar,horizontalscrollview,Ms Access,Scroll,Scrollbar,Horizontalscrollview,简短描述:我需要查看数据表子窗体中的所有列。特别是-12列月份。为此,我需要一个水平滚动条。要进入滚动条是一项挑战。我正在MS Access 2007中开发 详细说明: 我有一个子表单“frm_SP”,它显示在数据表视图中,宽度为22,这是表单的宽度限制-它嵌套在另一个子表单“frm_stage”中 我最终发现,无论我将最上面的父窗体“frm_Entry”设置得多宽,我似乎都无法使所有第三个嵌套子窗体“frm_SP”都可见。底部的水平条似乎只是通过成比例的增长来补偿,以保持限制的完整性——这是令

简短描述:我需要查看数据表子窗体中的所有列。特别是-12列月份。为此,我需要一个水平滚动条。要进入滚动条是一项挑战。我正在MS Access 2007中开发

详细说明: 我有一个子表单“frm_SP”,它显示在数据表视图中,宽度为22,这是表单的宽度限制-它嵌套在另一个子表单“frm_stage”中

我最终发现,无论我将最上面的父窗体“frm_Entry”设置得多宽,我似乎都无法使所有第三个嵌套子窗体“frm_SP”都可见。底部的水平条似乎只是通过成比例的增长来补偿,以保持限制的完整性——这是令人沮丧的

如下图所示,我必须向下滚动才能看到水平滚动条。为什么这么低?我是在什么地方指定的吗?无论数据表中存在多少记录,它都会保持这种距离。因此,如果它只有4条记录,我仍然需要向下滚动才能看到滚动条。 类似地,我有一组超出水平滚动条的记录,我无法使窗口足够大以查看这些记录。因此,如果客户需要编辑这些记录,我必须告诉他们打开实际的表

我一直犹豫是否发布类似的内容,因为它需要图像,但现在我已经完成了这项工作,希望这可以为其他用户解决很多问题。也许这就是我在网上找不到太多答案的原因

欢迎提供其他方法的任何提示和建议

我为箭头键添加了SendKeys代码,这样12个框的功能就更像一个电子表格。 但我不明白为什么一月份会被跳过,然后继续每两盒跳过一次

代码如下:

Private Sub txtDEC_NC_KeyDown(KeyCode As Integer, Shift As Integer)
 Select Case KeyCode
        Case 40 'down
            SendKeys "{TAB}", False

        Case 38 'up
            SendKeys "+{TAB}", False

    End Select
End Sub

如果还没有,请尝试增大第二级窗体的大小以及该第二级窗体上的子窗体控件(其中包含最底层窗体)

看起来,最大宽度为22的底层表单需要一个水平滚动条才能在第二层表单中显示。这会导致滚动条出现在第二级表单中,您必须在顶部表单中向下滚动才能看到它

相反,您可能更希望滚动条显示在顶级表单上,我相信如果您的二级表单和底层表单的子表单控件也设置为最大宽度22,您将得到滚动条

然后,底层表单将显示在中间表单中,而不需要中间表单滚动条,并且唯一的滚动条将呈现在顶部表单上,在顶部表单中,它将始终易于访问,而无需首先向下滚动

我对第二种形式中额外的垂直空白的原因有一些想法,但我想知道上述方法是否不能解决您的问题


只是一个想法。我意识到这是一个非常古老的问题,因此在这种情况下,您可能不再需要任何建议,我将把此评论留给将来可能有类似问题的其他人。

您是否有机会发布一个屏幕截图来展示您的意思?是的。我已经编辑了我的帖子,添加了两张图片,对它们进行了注释和描述,以说明我的困境。好吧,只是为了确保我理解这个问题。第三个嵌套表单是数据表,它的扩展超出了需要。这会导致第二个嵌套表单向下展开以进行补偿,从而允许数据表表单的水平滚动移动到第二个嵌套表单视图的下方,这是导致不必要的垂直滚动的原因。这听起来对吗?如果是,数据表表单的高度属性是什么?同样,第二个嵌套表单的高度是什么?第三个嵌套表单-frm_SP:16?我不确定如何近似frm_SP,因为在“设计”模式下,它看起来就像我永远不会看到的一样——就像一个表单,而不是一个数据表。所以我把“细节”部分延伸到了16个——但我在属性表中找不到。请分享你的想法。我最终将数据表表单更改为一个单独的表单,以堆叠格式显示12个月的数据。除了分析员自然希望用箭头键向下滚动文本框之外,这似乎工作得很好。我相信这可能已经被记录下来了,但是你能给我指一下或者给我看一个使用箭头键来上下标记一列文本框的小例子吗?我认为你可以设置一个表单,通过在表单上启用“向下键”事件来滚动一系列文本框,然后只有当它们输入“向下键”时,才以编程方式更改焦点分别为向上或向下箭头键代码38和40。您可能需要再次检查所有12个文本框的tab order属性是否正确且连续。T
他的链接应该显示一种方法,但这可能不是唯一的方法。关于空白…不确定这是否能解决你的问题,但它确实让我想起了我不久前遇到的一个额外空白的问题。在我的例子中,我得到了同样无用的多余空白,我认为在这个例子中是完全多余的,水平滚动条。在进行了大量的搜索之后,我终于发现根本原因是,在我的情况下,我的子窗体控件不够宽,无法容纳子窗体中的所有列,但只能勉强容纳。默认行为似乎是Access添加了大约两倍于基础子窗体宽度的内容,并且要求滚动条能够在大约两倍的宽度上滚动,而不是仅仅滚动额外的1/2厘米。我想尽一切办法使我的子窗体和子窗体控件的格式更窄,但在我的情况下,解决方案实际上是使子窗体控件稍微宽一点。这样就完全消除了滚动条,除了额外的空白,我还添加了箭头键代码,以在输入货币值的12个月内取代“Tab”键。我在12个月的On Key Down事件中都输入了代码。然而,我不明白为什么它会跳过一月。我已检查以确保选项卡顺序以及键关闭事件中有代码。