我按照其他人的提示来制作访问查询。
我有两张桌子。见图1。结果如图2所示。
如图一 http://img.libk.info/f1.png http://img.libk.info/f1.png
Figure2 http://img.libk.info/f2.png http://img.libk.info/f2.png
生成结果查询的方法在another question中解决。
查询脚本:
TRANSFORM Nz(Count([number]),0) AS CountValue
SELECT Table1.ID
FROM Table1, Table2
WHERE (((Table2.number) Between [table1].[start] And [table1].[end]))
GROUP BY Table1.ID
PIVOT DatePart("yyyy",[ndate]);
我的问题是:
无论如何都要将查询结果写回表1?
我想在表1中添加两个新列。并且能够根据其" ID"将查询值添加或更新到字段库。
我不确定我的描述是否清楚。希望您能理解并感谢您的帮助!
答案 0 :(得分:0)
您将无法直接执行此操作。但是,这有两种方法可以间接完成。
方法1:临时表
此方法最适合快速而肮脏的一次性解决方案。
方法2:VBA例程
当您需要可重复的方法时,此方法最佳。如果你只打算做一次就太过分了。但是,如果您想要每年的计算值,则需要再次运行它。
这是一个更新一年价值的简单版本。
Public Sub UpdateAnnualTotal(ByVal nYear As Long)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sSQL As String
Dim sId As String
Dim nTotal As Long
Set db = CurrentDb
sSQL = "SELECT [ID],[" & nYear & "_count"] FROM AnnualTotalsQuery"
Set rs = db.OpenRecordset(sSQL)
With rs
Do Until .EOF
sId = .Fields("ID").Value
nTotal = .Fields(nYear & "_count").Value
sSQL = "UPDATE [Table 1] SET [" & nYear & "_count"] = " & nTotal _
& " WHERE [ID] = '" & sId & "'"
db.Execute sSQL
.MoveNext
Loop
.Close
End With
End Sub