循环表记录以基于密钥标识符更新另一个表记录

时间:2014-04-09 15:31:38

标签: sql database vba loops ms-access

我一直有这个问题的问题,说没有reocrds,但我知道有,因为我正在看表。我想循环遍历一个表,根据点击按钮的几个参数找到某些列信息。

因此,当我点击我的按钮时,它将循环通过表一,根据ID找到我需要的字段,并用这些字段更新另一个表。

Private Sub GetResults_Click()
  Dim strSQL As String
  Dim SQL As String
  Dim dba As Database
  Dim tbl As Recordset
  Dim rst1 As Recordset
  Dim tstdt As Date

  tstdt = Me.Date.Value

  Set dba = CurrentDb
  Set tbl = dba.OpenRecordset("tbl_Results", dbOpenDynaset, dbSeeChanges)

  strSQL = "SELECT * FROM tbl_Results"
  Set tbl = dba.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)

  If Not tbl.EOF Then
    With tbl
      .MoveFirst
      Do Until tbl.EOF
        Call getDataRecords(tbl!SystemAssignedPersonID, tstdt)
        .MoveNext
      Loop
    End With
  End If

  Set rst1 = Nothing
  Set tbl = Nothing
  Set dba = Nothing

End Sub

Function getDataRecords(PersonID As Variant, TestDate As Date)
  Dim dba As Database
  Dim rst As Recordset
  Dim rst1 As Recordset
  Dim SQL As String

  Set dba = CurrentDb
  Set rst = dba.OpenRecordset("tbl_Results", dbOpenDynaset, dbSeeChanges)
  Set rst1 = dba.OpenRecordset("dbo_tbl_Random", dbOpenDynaset, dbSeeChanges)
  SQL = "SELECT * FROM dbo_tbl_Random WHERE SystemAssignedPersonID = " & PersonID & " AND Date = " & Date & " AND MenuUsed = 'RandomResult'"

  Set rst1 = dba.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)

  rst.AddNew
  rst.Fields("FileSent") = rst1!FileSent
  rst.Fields("Result") = rst1!Result
  rst.Update

End Function

在我疯了之前帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

你这里的事情过于复杂。所有这些都可以在1个SQL语句中完成

Update tbl_Results as Res
Inner join dbo_tbl_Random as rand 
 on Res.PersonID = Rand.SystemAssignedPersonID and Res.[Date] = Rand.[Date] 
set Res.FileSent = Rand.FileSent ,
 Res.Result = Rand.Result
Where Rand.MenuUsed = 'RandomResult'

你可以像这样执行

dim sql as string
sql = "Update tbl_Results as Res " & _
"Inner join dbo_tbl_Random as rand  " & _
" on Res.PersonID = Rand.SystemAssignedPersonID and Res.[Date] = Rand.[Date]  " & _
"set Res.FileSent = Rand.FileSent , " & _
" Res.Result = Rand.Result " & _
" Where Rand.MenuUsed = 'RandomResult' "
CurrentDb.Execute(sql)

<强>更新

这就是我期待您的表格设置的方式

<强> tbl_results

enter image description here

<强> dbo_tbl_Random

enter image description here

我如何在设计器中设置查询以确认它正在运行

enter image description here

相关问题