【发布时间】:2010-09-20 04:29:42
【问题描述】:
如何向 MS Access 查询添加评论,以提供对其作用的描述?
添加后,如何以编程方式检索此类 cmets?
【问题讨论】:
-
也适用于 ADODB JET 查询!
如何向 MS Access 查询添加评论,以提供对其作用的描述?
添加后,如何以编程方式检索此类 cmets?
【问题讨论】:
我决定在Where 子句中添加一个条件,该条件始终评估为真,但允许编码人员找到您的评论。
Select
...
From
...
Where
....
And "Comment: FYI, Access doesn't support normal comments!"<>""
最后一行的计算结果始终为 true,因此它不会影响返回的数据,但允许您为下一个人留下评论。
【讨论】:
<> "" 比较。只需WHERE ... AND "-- whatever"
WHERE 子句中分开。请参阅下面添加的我的新答案。
无法将 cmets 添加到“普通”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 个字符对此进行了测试。
【讨论】:
第一个答案提到了如何以编程方式获取描述属性。如果您无论如何都要打扰程序,因为查询中的 cmets 太笨拙了,而不是尝试将 cmets 放入查询中,也许最好将它们放入程序中并使用该程序进行所有查询
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"
【讨论】:
如果您有一个包含很多条件的查询,那么记住每个条件的作用可能会很棘手。 我在原始表格中添加了一个文本字段——称之为“cmets”或“documentation”。 然后我将它包含在查询中,并为每个条件添加注释。
评论需要这样写,以便返回所有相关行。 可惜我是新发帖者,不能加截图!
所以这里没有
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 "" 告诉您的查询在 cmets 字段中包含任何没有数据的行,否则它不会返回任何内容!
【讨论】:
我已经使用上面@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 的错。
【讨论】:
如果您尝试向整个对象(查询或表等)添加一般注释。
访问 2016 转到导航窗格,突出显示对象,右键单击,选择对象/表格属性,在描述窗口中添加注释,即库存“表格上次更新时间 05/31/17”
【讨论】:
在查询设计中:
注意:
如果您不进行排序,该字段将通过访问被删除。因此,请确保您已取消选中显示并对列进行排序。
【讨论】: