我有一个子表单中的数据表,在运行时使用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, "")
我是否正朝着正确的道路前进?
谢谢!
答案 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")