【问题标题】:How do you comment an MS-access Query?您如何评论 MS-access 查询?
【发布时间】:2010-09-20 04:29:42
【问题描述】:

如何向 MS Access 查询添加评论,以提供对其作用的描述?

添加后,如何以编程方式检索此类 cmets?

【问题讨论】:

  • 也适用于 ADODB JET 查询!

标签: ms-access ms-office


【解决方案1】:

我决定在Where 子句中添加一个条件,该条件始终评估为真,但允许编码人员找到您的评论。

Select
   ...
From
   ...
Where
   ....
   And "Comment: FYI, Access doesn't support normal comments!"<>""

最后一行的计算结果始终为 true,因此它不会影响返回的数据,但允许您为下一个人留下评论。

【讨论】:

  • 它本身仍然不是评论,但总比没有好,并且绝对有利于 cmets 的主要目的:帮助您(/下一个人)记住正在发生的事情。
  • 这应该是选择的答案。这是一个很好的解决方法。笨拙是 Access 的错。
  • 您不需要&lt;&gt; "" 比较。只需WHERE ... AND "-- whatever"
  • 五年后,我发现了这种方法的一种变体,它允许注释与相关代码相邻,而不是在WHERE 子句中分开。请参阅下面添加的我的新答案。
  • 我上面说过这种方法的笨拙是Access的错。我想我错了。这是 SQL 的错。
【解决方案2】:

无法将 cmets 添加到“普通”Access 查询,即 mdb 中的 QueryDef,这就是为什么许多人建议将查询的 sql 存储在表中的原因。

【讨论】:

  • 这是通常意义上的评论吗?对我来说,这是一个自定义属性,而不是评论。
  • 我同意@Remou。虽然它是对整个查询“评论”的一种方式,但这并不是您通常想要的,即评论查询部分和格式化布局的方式(这两者都是不可能的)。
【解决方案3】:

注意:已使用 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")

【讨论】:

  • 在我看来不像代码注释。但是,我可以理解建议的答案。这是一种方式,但几乎不是任何人在阅读本文时所期望的答案。
  • O-M-G!现在是 2021 年,Access(以及一般的 Office VBA 开发人员)仍然是 SUX!?基本上是 2-3 DECADE 的老技术!?即使是简单的事情,例如使打开的“Windows”窗口可调整大小(因此实际上可以区分狭窄的〜263像素宽窗口中的多个打开窗口,其宽度可以很容易地被它作为每个窗口名称前缀的db名称用完),顺便说一句,哪个不会破坏现有代码,没有已经完成!?他们需要将 VBA IDE 替换为(或作为选项提供)最新 VS IDE 的精简版本,并将 VBA 语言替换为(或作为选项提供)VB.NET!
【解决方案4】:

我知道这个问题很老了,但我想补充几点,奇怪地省略了:

  1. 您可以右键单击容器中的查询,然后单击属性,然后填写您的描述。您以这种方式输入的文本也可以在设计视图的 Descrption 属性中访问
  2. 也可以记录每个字段。只需确保属性窗口已打开,然后单击要记录的查询字段,并填写描述(就在鲜为人知的 Format 属性上方)

没有产品(我知道的)记录这些查询字段描述和表达式,这有点令人遗憾。

【讨论】:

  • 您知道如果您将表单控件绑定到字段,您在步骤 2 中填写的说明字段将显示在状态栏中?您可以通过设置查询字段的描述属性,然后在数据表视图中查看它来查看这一点。当您将焦点放在添加了描述的字段上时,文本会出现在状态栏中。这就是这个字段的目的,其实和表格设计的目的是一样的。
【解决方案5】:

您可以向 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 个字符对此进行了测试。

【讨论】:

  • 为了清楚起见可以编辑一下吗?我很难阅读/理解它。代码中的更多格式、间距等可能会有所帮助。
  • 我不确定大多数安装是否希望每次查询调用都返回历史记录,并且更喜欢下面@Dan 的答案
【解决方案6】:

第一个答案提到了如何以编程方式获取描述属性。如果您无论如何都要打扰程序,因为查询中的 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"

【讨论】:

    【解决方案7】:

    如果您有一个包含很多条件的查询,那么记住每个条件的作用可能会很棘手。 我在原始表格中添加了一个文本字段——称之为“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 ""
    

    &lt;&gt; 告诉查询选择不等于您输入的文本的行,否则它只会选择文本等于您的评论的字段,即无!

    " " 用引号将您的评论括起来

    OR Is Null OR "" 告诉您的查询在 cmets 字段中包含任何没有数据的行,否则它不会返回任何内容!

    【讨论】:

      【解决方案8】:

      我已经使用上面@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 的错。

      【讨论】:

        【解决方案9】:

        如果您尝试向整个对象(查询或表等)添加一般注释。

        访问 2016 转到导航窗格,突出显示对象,右键单击,选择对象/表格属性,在描述窗口中添加注释,即库存“表格上次更新时间 05/31/17”

        【讨论】:

          【解决方案10】:

          在查询设计中:

          • 添加一列
          • 在字段中输入您的评论(用引号括起来)
          • 取消选中显示
          • 排序。

          注意:

          如果您不进行排序,该字段将通过访问被删除。因此,请确保您已取消选中显示并对列进行排序。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多