2016-12-30 98 views
1

我會盡我所能保持這個簡潔如何自動生成記錄到表

我的表和關係是這樣的。

[關係] [1] http://imgur.com/a/Ic9uU

我想要達到的就是這個。 每個月都會添加一個新的testID。每個學生都會爲每個testID進行每項練習,並將其記錄在結果表中。當添加新的測試時,我想自動在結果表中添加新記錄,以便每個學生都有一個每個練習的新記錄。

假設我有10個學生和8個練習題,並添加了一個新的TestID 2016-12。我希望在結果表中創建80個新記錄,其中包含testID 2016-12,每個練習 - 學生組合都有一個記錄。

我想過嘗試使用追加查詢來做到這一點,但沒有得到太多。

我知道如何使用VBA插入一條記錄,所以一直認爲我需要設置一個循環,但無法弄清楚如何循環通過studentID和ExerciseID。

有沒有什麼辦法可以創建一個查詢來生成每個學生練習組合,然後用它來附加到具有特定testID的表格。

對不起,如果這是有點全地方。謝謝你

回答

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 
+0

非常感謝您的答覆。我已經與skippy的建議。我一定會看看這個,因爲我想學習如何使用代碼來循環記錄。謝謝 – NumberCruncher

1

你可以做到這一點作爲一個追加查詢。它會是這個樣子:

Cross join append query

當您運行此查詢,它會問你的TestID,然後添加一行鍼對TestID每個學生/運動組合。

+0

嗨 謝謝你。這就是我所做的,並設法將它放在一個表格中。非常感謝你 – NumberCruncher

+0

不用擔心。如果您滿意,請將答案標記爲已接受。謝謝。 – Skippy