刚开始使用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这样做,因为我觉得这样比较舒服,但对任何解决方案都很满意。
答案 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