access 2003 中的色域

Posted

技术标签:

【中文标题】access 2003 中的色域【英文标题】:Color field in access 2003 【发布时间】:2016-02-04 15:39:32 【问题描述】:

在 MS-Access 2003 上,我有一个显示查询结果的掩码。例如查询结果为:

Column1Column2

       1           Y       

       2           N       

       3           N       

       4           Y       

它在掩码广告中显示一个表格。 如果值为 Y,我需要为 column2 的背景字段着色。为此,我使用了代码:

Private Sub Form_Current()
    if (Column2) = "Y" Then
        Stato.BackColor = vbGreen
    End If
End Sub

但它为所有背景着色。所以我尝试了一种解决方法:

For Each ctl In Me.Section(acDetail).Controls
    If (ctl) = Column2 Then
        If (Me.Column2) = "Y" Then
          ctl.BackColor = QBColor(2)
        End If
    End If

但这也为所有背景着色。有什么建议吗?

【问题讨论】:

当窗体处于设计视图时,右键单击 Column2 文本框,查看快捷菜单中是否提供“条件格式”。 (抱歉,我记不清 Access 2003 的功能了,因为我已经好几年没用过了。) ^^ 这个。它在 Access 2003 中可用:techonthenet.com/access/reports/cond_format2.php @HansUp 你的回答很好!我正在考虑 vba 脚本并忘记简单地检查条件格式!谢谢! 【参考方案1】:

您可以使用类似的方法在代码中添加条件格式。此函数基于我使用的一些代码,您可能需要对其进行调整以满足您的特定要求。

Dim fcd As FormatCondition
Dim ctl As control
Dim frm As Form
Dim txt As TextBox
Dim strCond As String

For Each ctl In frm.Controls
    If TypeOf ctl Is Access.TextBox Then
        If ctl.Visible = True Then
            Set txt = ctl
            If txt.Name = "Column2" Then
                strCond = "=Y"
                Set fcd = txt.FormatConditions.Add(acExpression, acEqual, strCond)
                fcd.BackColor = QBColor(2)
            End If
        End If
    End If
Next

【讨论】:

为了 Carlo 的目的,它应该更简单 Set txt=frm.Controls("Column2") 不需要检查表单包含的每个控件,只需按名称引用即可。

以上是关于access 2003 中的色域的主要内容,如果未能解决你的问题,请参考以下文章

Access 2003 - 表单上另一个数据库中的字段

Access 2003 - 计算唯一值

使用宏或 VBA 正确关闭 access 2003 中的隐藏窗口?

计数 MS-ACCESS 2003 列中的图像

Access 2003中的SQL:INSERT INTO和多个SELECT查询

Access 2003 SQL Switch 会破坏数据类型?