MS Access计算重复的行条目并将值返回到列

时间:2014-02-15 11:12:48

标签: vba ms-access-2007 access-vba

刚开始使用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 个答案:

答案 0 :(得分: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