2014-02-15 59 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