我们在这里经常遇到这样的问题,即为什么表单上未绑定控件的设置(包括值和格式设置)为什么以后不存储以供参考,但是对于每个记录,每个设置似乎都应用于控件的每个实例。这就是如何。
我将尝试列出发生在我身上的所有推理和论据。 有时候,当事情看起来不言而喻时,很难解释。 对我来说,这完全是合乎逻辑的行为,所以请随意说,这是否会使了解情况变得更加容易。
推理 :首先,我们应该认为Access中的表单是基础记录集数据的视图。 从概念上讲,它就像一个窗口。 它可能会有一些麻烦,但最终,它是一种查看基础(绑定)记录集中的数据的方式。 它也可以仅用于显示漂亮的事物(未绑定的控件,与基础记录集无关),但是我们暂时对事物的那一侧不感兴趣。
尽管表单可以显示各种记录,但它本身在任何阶段都不会存储任何值。 除了基础记录集之外,它也没有做出任何安排来记住其任何控件的任何设置。 尽管它似乎具有自己的完整实例集(以连续形式或数据表模式显示),但它只能具有尽可能多的实例,这些实例可以在屏幕上的任何一次显示。 所有这些实例都是精确的副本。 更改任何设置(包括值),这将影响其中的每一项。
几点思考 :对于控件来维护和持久化关联的数据(而不是让数据由基础记录集管理),必须从根本上重组整个概念。 将需要更多资源(用于此临时任务的临时表或动态分配的RAM)。 尽管为一个数据集维护这样的资源是有可能的,但最初至少对于该数据集而言尚不知道,但是这并不是一件容易的事,并且肯定会给不需要它的情况带来复杂性。 我不能拒绝在此补充一点,以MS的声誉而闻名,它失去了对资源的跟踪并且没有适当关闭设备-这将是一个好举动吗?
如前所述,该表单就像一个窗口,允许一次查看和访问(操纵)记录集的一小部分。 扩展概念以处理完整的记录集,而不将其链接到记录集本身(换句话说,使用Bound控件),甚至将是不希望的。 实际上,它不太适合逻辑,并且是某种混合,对任何人来说都是正确的。
更新 :有趣的是,尽管本文的前一部分可以保留并仍然被认为是正确的,但对于许多希望对每个控件显示不同格式和显示控件属性(及其值)的人来说,还是存在一个漏洞,这很有趣。单独记录。 令人着迷,我听你说(当这个概念由我介绍给我时,回荡了自己的想法
Stewart Ross在“ 条件格式访问2007-报告 ”线程中。注意 由于这是如何运作的,因此只有在
报告对象,但不用于Form 。 更改控件设计后,将刷新Form上所有实例的控件,但这不是报表的工作方式。 继续阅读以了解原因。从根本上讲,采用老式胶片相机的概念,可以在将图像绘制到报告上之前更新控件(使用
格式化事件过程,通常在“ 详细信息”部分)。 由于仅在格式化之前才对其进行更改(并且始终更改),因此格式化输出始终反映与每个单独记录有关的条件的结果。这是一个说明灵活性的示例:
Option Compare Database
Option Explicit
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
With Me
.lblScore.BackColor = &HFFFF00 + 2 * .txtScore
.txtScore.BackColor = &HFF00FF + (&H100& * (&HFF& - 2 * .txtScore))
End With
End Sub
在示例数据中,分数的范围是0到101,为避免出现灰色的插图,我从每种控件的颜色中忽略了其中一种色调。
它显示如下:
From: https://bytes.com/topic/access/insights/839971-why-values-unbound-form-controls-dont-persist