我在访问中创建了一个数据库,其中显示了一个文章列表,其状态在表子表单中。有5种不同的状态选项,我需要它们具有特定的颜色。但在访问2007中,我只能使用3个条件格式化语句(如果计算默认设置,则为4个)。
但我需要5.(01,05,06,08,09)。我一直在寻找各处,但我似乎无法找到它。
我一直在尝试这个角度:
If Me.txtArtikelStatus = "05" Then
Me.txtArtikelStatus.BackColor = RGB(215, 228, 188)
ElseIf Me.txtArtikelStatus = "01" Then
Me.txtArtikelStatus.BackColor = RGB(219, 238, 243)
ElseIf Me.txtArtikelStatus = "06" Then
Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)
Else
Me.txtArtikelStatus.BackColor = RGB(230, 182, 184)
End If
但就我而言。所有记录现在都是相同的颜色(绿色根据状态05)
我的子表单名称为fsubAlleArtikelen
,它基于名为qryAlleArtikelen
的查询,该查询基于表tblZMMPC
和tblZMAC
状态列名为txtArtikelStatus
,并且是text
列。
我猜我需要创建一个循环,但是我不了解VBA能够创建一个真正有效的循环。
答案 0 :(得分:0)
使用Select case
声明。
做很多这类事情要干得多。您可以选择有效地执行大型if / elseif语句,就像您尝试做的那样但代码工作得更好(并且更清晰)。
有关更多文档,请参阅this link。
以下是适合您情况的内容:
Select Case Me.txtArtikelStatus
Case "05"
Me.txtArtikelStatus.BackColor = RGB(215, 228, 188)
Case "01"
Me.txtArtikelStatus.BackColor = RGB(219, 238, 243)
Case "06"
Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)
Case "08"
Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)
Case "09"
Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)
Case Default
'this captures everything else
End Select
答案 1 :(得分:0)
我在你的代码帖中想到你试图在连续的子表单中这样做。不幸的是,如果更改一个控件的属性(如颜色),它将对连续子窗体中同名的所有可见控件执行此操作。我将尝试解释一种解决方法。
1)创建一个包含2列的单独表:一个ID列,您将存储“05”,“01”等。下一列将是一个OLE对象,您可以在其中存储包含此颜色的图像
2)修改表单的数据源以加入列txtArtikelStatus从#1进入ID列并将OLE列添加到输出。
3)在表单上放置一个“绑定对象框架”,并使其控件源属性为#2的OLE列。
如果一切正常,那么您现在将看到状态颜色。
答案 2 :(得分:0)