【问题标题】:Cant figure out how to put Program Metrics in MSAccess无法弄清楚如何将 Program Metrics 放入 MS Access
【发布时间】:2013-09-07 01:10:38
【问题描述】:

所以我认为我做得很好。我做了5张桌子。 tblComplexity、tblCoupling、tblLinesOfCode、tblMaintainIndex 和 tblProjects

tblProjects 有 2 列 [ID,项目名称]

其他 4 个表都有 3 列,第 3 列是每一个都不同的列,正如您根据名称猜测的那样

4 个其他表 [ID*, RunID, (complexity,coupling,lines, MI)]

其他 4 个表中只有数字

我将 tblProjects.ID 和 (4tables).RunID 的多对一关系放在 4 个表上。

然后我对每个 this is qryComplexity 进行了查询

SELECT
   tblProjects.ProjectName,
   Round(Avg(tblComplexity.CyclomaticComplexity)+StDevP(tblComplexity.CyclomaticComplexity),2) AS MaxDeviation,
   Max(tblComplexity.CyclomaticComplexity) AS MaxOfCyclomaticComplexity,
   Min(tblComplexity.CyclomaticComplexity) AS MinOfCyclomaticComplexity,
   Round(Avg(tblComplexity.CyclomaticComplexity)-StDevP(tblComplexity.CyclomaticComplexity),2) AS MinDeviation  
FROM
   tblProjects 
INNER JOIN
   tblComplexity 
      ON tblProjects.ID = tblComplexity.RunID
GROUP BY
   tblProjects.ProjectName;

所有 4 个查询都给了我想要的数字(我曾经在一张 excel 表中包含所有这些。)

我的最终目标是把这个数据库和excel连接起来,这样我就可以有我的图表了。问题是这就是我的 excel 表的样子(其中一个选项卡)

From Excel Maintainability Index               
            Lines   MaxDev  Max     Min     MinDev
Project1    332.00  94.83   100.00  70.00   72.64
Project2    2019.00 76.03   81.00   53.00   51.30
Project3    3052.00 87.37   100.00  42.00   62.57
Project4    576.00  94.88   100.00  69.00   77.25
Project5    1074.00 95.20   100.00  62.00   69.60
Project6    163.00  92.84   100.00  61.00   72.70
Project7    187.00  87.26   96.00   68.00   72.07
Project8    18.00   92.47   92.00   78.00   81.81
Project9    89.00   99.94   100.00  57.00   69.26
Project10   127.00  103.45  100.00  65.00   81.33

这就是我的查询返回的内容

From Access qryMaintiain
            MaxDev  Max     Min     MinDev
Project1    94.83   100.00  70.00   72.64
Project2    76.03   81.00   53.00   51.30
Project3    87.37   100.00  42.00   62.57
Project4    94.88   100.00  69.00   77.25
Project5    95.20   100.00  62.00   69.60
Project6    92.84   100.00  61.00   72.70
Project7    87.26   96.00   68.00   72.07
Project8    92.47   92.00   78.00   81.81
Project9    99.94   100.00  57.00   69.26
Project10   103.45  100.00  65.00   81.33

所以我尝试添加我的行的总和......我得到了一些疯狂的数字。那么如何将我的代码行放入每个查询中呢?哦,我想我应该放上我的 qryLinesOfCode

SELECT
   tblProjects.ProjectName,
   Sum(tblLinesOfCode.LinesOfCode) AS LinesOfCode  
FROM
   tblProjects 
INNER JOIN
   tblLinesOfCode 
      ON tblProjects.ID = tblLinesOfCode.RunID  
GROUP BY
   tblProjects.ProjectName;

我认为只为我的 3 个查询中的每一个添加另一个内部连接会很简单(是的 3..第 4 个是代码行,但我的 excel 表只有 3 个选项卡)..所以我尝试了这个

SELECT
   tblProjects.ProjectName,
   Sum(tblLinesOfCode.LinesOfCode) AS LinesOfCode  
   Round(Avg(tblComplexity.CyclomaticComplexity)+StDevP(tblComplexity.CyclomaticComplexity),2) AS MaxDeviation,
   Max(tblComplexity.CyclomaticComplexity) AS MaxOfCyclomaticComplexity,
   Min(tblComplexity.CyclomaticComplexity) AS MinOfCyclomaticComplexity,
   Round(Avg(tblComplexity.CyclomaticComplexity)-StDevP(tblComplexity.CyclomaticComplexity),2) AS MinDeviation  
FROM
   ((tblProjects 
INNER JOIN
   tblComplexity 
      ON tblProjects.ID = tblComplexity.RunID)
INNER JOIN
   tblLinesOfCode 
      ON tblProjects.ID = tblLinesOfCode.RunID)  
GROUP BY
   tblProjects.ProjectName;

但我明白了

ProjectName  Lines   MaxDev  Max  Min  MinDev
Project1    6057    94.83   100  70   72.64
Project2    5049    76.03   81   53   51.3  
Project3    201432  87.37   100  42   62.57
Project4    18432   94.88   100  69   77.25
Project5    32220   95.20   100  62   69.6
Project6    126     92.84   100  61   72.7
Project7    445     87.26   96   68   72.07
Project8    4980    92.47   92   78   81.81
Project9    12065   99.94   100  57   69.26
Project10   4238    103.45  100  65   81.33

有人可以帮帮我吗?谢谢

PS。我正在使用 Access/Excel 2010

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    呃..终于想通了。我不应该试图重新计算总和。相反,我使用了查询

    SELECT
       tblProjects.ProjectName,
       qryLinesOfCode.LinesOfCode AS LinesOfCode,
       Round(Avg(tblComplexity.CyclomaticComplexity)+StDevP(tblComplexity.CyclomaticComplexity),2) AS MaxDeviation,
       Max(tblComplexity.CyclomaticComplexity) AS MaxOfCyclomaticComplexity,
       Min(tblComplexity.CyclomaticComplexity) AS MinOfCyclomaticComplexity,
       Round(Avg(tblComplexity.CyclomaticComplexity)-StDevP(tblComplexity.CyclomaticComplexity),2) AS MinDeviation  
    FROM
       (tblProjects 
    INNER JOIN
       tblComplexity 
          ON tblProjects.ID = tblComplexity.RunID
       ) 
    INNER JOIN
    qryLinesOfCode 
       ON tblProjects.ProjectName = qryLinesOfCode.ProjectName
    GROUP BY
    tblProjects.ProjectName,
    LinesOfCode;
    

    【讨论】:

    • 我一直在关注您在解决方案中的发现。很高兴您找到了结果!
    • @Elias 我也是。在我完成这张表之前,我已经到了最后一个阶段。由于 Visual Studio 将代码指标导出到 excel 中,我想将数据行复制到此工作表中的选项卡中。单击一个按钮将数据上传到表格中,然后刷新我的图表。我希望它有效:)
    猜你喜欢
    • 2015-12-21
    • 2014-12-18
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多