gpt4 book ai didi

ms-access - 使用 VBA 设置子表单记录中的字段格式

转载 作者:行者123 更新时间:2023-12-02 22:26:31 31 4
gpt4 key购买 nike

我正在尝试使用 VBA 来格式化一些已添加到设置为连续 View 的子表单上的行中的未绑定(bind)文本框。

VBA 查看与子表单的基础 RecordSource 关联的绑定(bind)文本框,然后根据数据设置我添加的未绑定(bind)文本框的格式。

这是一些简化的代码:

Public Sub ApplyFormat()

If Forms!tblEnrolments!tblEnrolments_Jobs_sub!Start = 1 Then

Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.BackColor = RGB(65, 138, 179)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.ForeColor = RGB(255, 255, 255)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart = "Start Forms"

ElseIf Forms!tblEnrolments!tblEnrolments_Jobs_sub!Start = 0 Then

Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.BackColor = RGB(216, 216, 216)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.ForeColor = RGB(166, 166, 166)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart = "None"

End If

If Forms!tblEnrolments!tblEnrolments_Jobs_sub!End = 1 Then

Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.BackColor = RGB(8, 164, 71)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.ForeColor = RGB(255, 255, 255)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd = "End Forms"

ElseIf Forms!tblEnrolments!tblEnrolments_Jobs_sub!End = 0 Then

Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.BackColor = RGB(216, 216, 216)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.ForeColor = RGB(166, 166, 166)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd = "None"

End If

End Sub

Private Sub Form_Activate()

ApplyFormat

End Sub

Private Sub Form_Current()

ApplyFormat

End Sub

所以我有一个名为ApplyFormat的公共(public)子程序,它查看绑定(bind)文本框中的数据,然后应用格式设置(更改文本框背景颜色、字体颜色和文本数据)。然后从 Current 事件(因此每当加载记录时应用格式)和 Activate 事件(因为主窗体将在仍然打开的同时打开其他窗体,并且当其他窗体关闭时可能再次获得焦点)调用此函数。 p>

不幸的是,子表单中记录 1 下面的记录没有根据其记录中的数据进行格式化;他们只是简单地复制第一条记录中应用的格式。

例如:

Add Job Subform - formats not being applied correctly below record 1

此处,EnrolID“1”在子表单中显示了 2 个附加作业。第一个记录的格式按照上面的代码正确,即绑定(bind)的“Start”文本框为 1,因此它旁边的未绑定(bind)文本框被格式化为蓝色、白色文本和字符串“Start Forms”。

但是,在第二条记录中,“Start”文本框为 0,这应该将其旁边的未绑定(bind)文本框格式化为灰色,并带有字符串“None”。但正如您所看到的,它只是复制第一条记录的格式。此外,绑定(bind)文本框“End”的值为 1,这将使旁边的未绑定(bind)文本框变为绿色、白色文本和字符串“End Forms”。

是否可以通过VBA达到我想要的效果?我不认为我可以使用条件格式,因为我希望未绑定(bind)的文本框根据其绑定(bind)的文本框对应项显示“开始表单”和“结束表单”等数据。

最佳答案

您不能为此使用未绑定(bind)字段:连续表单中的未绑定(bind)字段在所有行中始终具有相同格式。这是一个不幸的限制。

幸运的是,还有另一种选择:您可以使用调用用户定义函数的 ControlSource 创建一个绑定(bind)字段。例如,在表单设计器中,创建一个文本框并将其“控制源”属性设置为 = Iif([Start] = 1, "Start Forms", "None") (包括 = 符号在开头)。格式必须通过条件格式来完成。

如果需要更复杂的逻辑来确定要显示的文本,可以将控件源设置为 = myCustomFunction([any], [dbfields], [I], [need])并让 VBA 代码返回要显示的文本。

关于ms-access - 使用 VBA 设置子表单记录中的字段格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20241027/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com