如何向 MS Access 查询添加评论,以提供对其功能的描述?
添加后,如何以编程方式检索此类评论?
我决定在Where
条款中添加一个条件,该条件始终评估为真,但允许编码人员找到您的评论。
Select
...
From
...
Where
....
And "Comment: FYI, Access doesn't support normal comments!"<>""
最后一行总是评估为 true,因此它不会影响返回的数据,但允许您为下一个人留下评论。
无法向“普通”Access 查询(即 mdb 中的 QueryDef)添加注释,这就是为什么许多人建议将查询的 sql 存储在表中的原因。
注意:使用 Access 2003 确认,不知道早期版本。
对于 MDB 中的查询,您可以右键单击查询设计器(在表所在的空白处),从上下文菜单中选择属性,然后在描述属性中输入文本。
您限制为 256 个字符,但总比没有好。
您可以通过以下方式以编程方式获取描述:
Dim db As Database
Dim qry As QueryDef
Set db = Application.CurrentDb
Set qry = db.QueryDefs("myQuery")
Debug.Print qry.Properties("Description")
我知道这个问题很老了,但我想补充几点,奇怪地省略了:
没有产品(我知道)记录这些查询字段的描述和表达式,这有点令人遗憾。
您可以向 MSAccess 查询添加注释,如下所示: 在查询中创建一个虚拟字段。不优雅,但可以自我记录并包含在查询中,这使得将其检查到源代码控制中更加可行!杰尔就是一个例子。进入 SQL 视图并添加虚拟字段(您也可以从设计视图中执行):
SELECT "2011-01-21;JTR;Added FIELD02;;2011-01-20;JTR;Added qryHISTORY;;" as qryHISTORY, ...rest of query here...
运行查询:
qryHISTORY FIELD01 FIELD02 ...
2011-01-21;JTR;Added FIELD02;;2011-01-20;JTR;Added qryHISTORY;;" 0000001 ABCDEF ...
注意使用“;” 作为 qryHISTORY 字段中的字段分隔符,以及“;;” 作为评论的结尾,并使用 ISO 日期格式和缩写,以及评论。已在 qryHISTORY 字段中使用最多 646 个字符对此进行了测试。
第一个答案提到了如何以编程方式获取描述属性。如果您无论如何都要打扰程序,因为查询中的注释太笨拙了,而不是试图将注释放在查询中,也许最好将它们放在一个程序中并使用该程序来进行所有查询
Dim dbs As DAO.Database
Dim qry As DAO.QueryDef
Set dbs = CurrentDb
'put your comments wherever in your program makes the most sense
dbs.QueryDefs("qryName").SQL = "SELECT whatever.fields FROM whatever_table;"
DoCmd.OpenQuery "qryname"
如果您有一个包含很多条件的查询,那么记住每个条件的作用可能会很棘手。我在原始表格中添加了一个文本字段——称之为“评论”或“文档”。然后我将它包含在查询中,并为每个条件添加注释。
需要像这样编写注释,以便返回所有相关行。不幸的是,由于我是新海报,我无法添加截图!
所以这里没有
Field: | Comment |ContractStatus | ProblemDealtWith | ...... |
Table: | ElecContracts |ElecContracts | ElecContracts | ...... |
Sort:
Show:
Criteria | <> "all problems are | "objection" Or |
| picked up with this | "rejected" Or |
| criteria" OR Is Null | "rolled" |
| OR ""
<>
告诉查询选择不等于您输入的文本的行,否则它只会选择文本等于您的评论的字段,即没有!
" " 用引号将您的评论括起来
OR Is Null OR "" 告诉您的查询在评论字段中包含任何没有数据的行,否则它不会返回任何内容!
五年来,我一直在使用上面@Dan 的答案中的方法,现在意识到有一种类似的方法允许与相关代码相邻的注释,而不是在一个WHERE
子句中分开:
可以使用 . 在域代码中添加注释iif()
。例如,如果域代码是:
A / B
然后可以这样评论:
iif("Comment: B is never 0." = "", "", A / B)
或者
iif(false, "Comment: B is never 0.", A / B)
或者
iif(0, "Comment: B is never 0.", A / B)
就像 Dan 的解决方案一样,它很笨拙,但这是 SQL 的错。
如果您尝试向整个对象(查询或表等)添加一般注释
Access 2016 转到导航窗格,突出显示对象,右键单击,选择对象/表属性,在描述窗口中添加注释,即库存“表上次更新时间 05/31/17”
在查询设计中:
笔记:
如果您不排序,该字段将被访问删除。因此,请确保您已取消选中显示并对列进行排序。