我会尽力保持这种简洁
我的表和关系看起来像这样。
[关系] [1] http://imgur.com/a/Ic9uU
我想要实现的是这个。 每个月都会添加一个新的testID。每个学生为每个testID进行每次练习,这会记录在结果表中。当添加新测试时,我想在结果表中自动添加新记录,以便为每个学生提供EACH练习的新记录。
假设我有10个学生和8个练习,我添加了一个新的TestID 2016-12。我希望在结果表中使用testID 2016-12创建80个新记录,每个练习 - 学生组合一个。
我考虑过尝试使用追加查询来做到这一点但是没有达到目的。
我知道如何使用VBA插入一条记录,所以一直以为我需要设置循环,但无法弄清楚如何循环学习ID和ExerciseID。
有没有办法创建一个生成每个学生练习组合的查询,然后使用它来附加到具有特定testID的表。
对不起,如果有点到处都是。感谢你的
答案 0 :(得分:1)
与学生和练习打开两个记录集并循环播放这些记录集,同时将记录添加到第三个或第四个记录集。
您可以将此示例作为起点 - 至少您会明白这一点:
Public Sub AddRecords()
Dim dbs As DAO.Database
Dim rss As DAO.Recordset
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Dim intCount As Integer
Dim lngRevenue As Long
Dim datDate As Date
Dim booNext As Boolean
Set dbs = CurrentDb
Set rss = dbs.OpenRecordset("Select * From tblSales Order By [Purchase Week]")
Set rst = dbs.OpenRecordset("Select * From tblSalesWeek")
If rss.RecordCount > 0 Then
datDate = rss.Fields("Purchase Week").Value
End If
While rss.EOF = False
rst.AddNew
If DateDiff("d", datDate, rss.Fields("Purchase Week").Value) = 0 Then
intCount = intCount + rss.Fields("Customer Count").Value
lngRevenue = lngRevenue + rss.Fields("Revenue").Value
booNext = True
Else
booNext = False
End If
For Each fld In rss.Fields
Select Case fld.Name
Case "Purchase Week"
rst.Fields(fld.Name).Value = datDate
Case "Customer Count"
rst.Fields(fld.Name).Value = intCount
Case "Revenue"
rst.Fields(fld.Name).Value = lngRevenue
Case Else
rst.Fields(fld.Name).Value = rss.Fields(fld.Name).Value
End Select
Next
rst.Update
If booNext = True Then
rss.MoveNext
End If
datDate = DateAdd("d", 7, datDate)
Wend
rst.Close
rss.Close
Set fld = Nothing
Set rst = Nothing
Set rss = Nothing
Set dbs = Nothing
End Sub
答案 1 :(得分:1)