2014-02-15 60 views
0

刚刚开始使用Access,所以我不确定最好的方法来做到这一点。我的表格看起来像这样:MS Access计数重复的行条目并返回值列

UNIQUE_ID EVT_ID (DESIRED COLUMN) 

1 1000 6 
2 1000 6 
3 1000 6 
4 1000 6 
5 1000 6 
6 1000 6 
7 1001 3 
8 1001 3 
9 1001 3 

EVT_ID的每个实例都可以包含2-30个UNIQUE_ID中的任何内容。

我想在数据库中创建一个新列,其中包含给定EVT_ID中UNIQUE_ID的数量。我最好喜欢用VBA来做这件事,因为那样我会更舒服,但对任何解决方案都会很满意。

回答

1

在Access中,在设计视图中打开表格并添加将保存新值的字段。保存更改并关闭表格,然后您可以使用以下VBA代码更新值

Option Compare Database 
Option Explicit 

Sub UpdateDesiredColumn() 
    Dim cdb As DAO.Database, rst As DAO.Recordset, qdf As DAO.QueryDef 
    Set cdb = CurrentDb 
    Set rst = cdb.OpenRecordset(_ 
      "SELECT EVT_ID, COUNT(*) AS n FROM MyTable GROUP BY EVT_ID", _ 
      dbOpenSnapshot) 
    Set qdf = cdb.CreateQueryDef("", _ 
      "PARAMETERS [prmCount] Long, [prmEVT_ID] Long;" & _ 
      "UPDATE MyTable SET DESIRED_COLUMN=[prmCount] WHERE EVT_ID=[prmEVT_ID]") 
    Do Until rst.EOF 
     qdf!prmCount = rst!n 
     qdf!prmEVT_ID = rst!EVT_ID 
     qdf.Execute dbFailOnError 
     rst.MoveNext 
    Loop 
    Set qdf = Nothing 
    rst.Close 
    Set rst = Nothing 
    Set cdb = Nothing 
End Sub 
+0

工作完美 - 非常感谢您。 – user3294824