MS Access:动态创建的数据表中的条件格式

时间:2017-11-03 19:50:25

标签: ms-access access-vba

我有一个子表单中的数据表,在运行时使用querydef作为子表单的SourceObject动态创建(这部分工作正常并且创建了数据表)。我事先并不知道数据表列的实际列表,但列“角色”始终存在:

Dim db As Database
Dim qd As QueryDef
Dim strSQL As String
Dim rs As DAO.Recordset

Set qd = CurrentDb.QueryDefs("q_XO")
Set db = CurrentDb

qd.SQL = "SELECT * FROM XO_Table;"

Forms!mainform.[XO_Table subform].SourceObject = ""
Forms!mainform.[XO_Table subform].SourceObject = "query.q_XO"

接下来,我想添加条件格式,以便在单元格的值不为NULL(单个条件)时简单地设置列的BackColor。

问题:我无法在设计视图(在运行时创建)中看到通过典型MS Access接口设置条件的数据表。我怀疑,我需要使用VBA这样做。

以下是我目前的不成功方法。错误:“对属性FormatConditions的无效引用”(错误:2455),在下面的删除行上:

Dim objFrc As FormatCondition

Forms![mainform]![XO_Table subform].Form!Role.FormatConditions.Delete
Set objFrc = Forms![mainform]![XO_Table subform].Form!Role.FormatConditions.Add(acFieldValue, acGreaterThan, "")

我是否正朝着正确的道路前进?

谢谢!

1 个答案:

答案 0 :(得分:0)

空字符串与Null不同。

另外,无法与Null进行比较。 Null意味着没有什么可比的。查看http://allenbrowne.com/casu-12.html

以下是我的程序中的代码。请注意,ctrGames是容器控件的名称,它与容器保存的表单对象不同。

Sub test12()
Dim objFC As FormatCondition
Forms!Main.ctrGames.Form.StartTime.FormatConditions.Delete
Set objFC = Forms!Main.ctrGames.Form.StartTime.FormatConditions.Add(acExpression, , "[StartTime] Is Not Null")
Forms!Main.ctrGames.Form.StartTime.FormatConditions(0).BackColor = vbYellow
End Sub

建议你的代码:
Set objFrc = Forms![mainform]![XO_Table subform].Form.Role.FormatConditions.Add(acExpression, , "[Role] Is Not Null")

https://blogs.msdn.microsoft.com/frice/2004/06/08/adding-additional-conditional-formatting-in-access-with-vba/

的更多信息