我的代码除了这一行之外都有效
.FindFirst "[DONOR_CONTACT_ID] = strTemp2"
我希望我的代码检查是否存在一条记录,其中存在特定的 DONOR_CONTACT_ID,因为存在多个具有相同 DONOR_CONTACT_ID 的记录。如果该记录不存在,那么我想将该 DONOR_CONTACT_ID 和 RECIPIENT_CONTACT_ID 添加到 RECIPIENT_1。如果该记录确实存在,我想将 RECIPIENT_CONTACT_ID 添加到该特定 DONOR_CONTACT_ID 的 RECIPIENT_2。为此,我使用 .FindFirst 来查看是否有记录,然后使用 .NoMatch。如果没有匹配,我想添加一条新记录,但如果有,我想检查它是否必须进入 RECIPIENT_2。
我收到的错误是“无法将‘strTemp2’识别为有效的字段名称或表达式”。我想看看该记录是否等于 strTemp2,但我认为我的语法错误。谢谢你的帮助!!
这是我的代码:
Option Compare Database
Option Explicit
Function UsingTemps()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim rstOutput As DAO.Recordset
'Defines DAO objects
Dim strTemp1 As String
Dim strTemp2 As String
Dim strVal As String
Dim strRecip As String
DoCmd.SetWarnings False
DoCmd.OpenQuery ("Q_RECIPIENT_SORT")
DoCmd.OpenQuery ("Q_DELETE_T_OUTPUT")
DoCmd.SetWarnings True
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("T_RECIPIENT_SORT", dbOpenDynaset)
'rst refers to the table T_RECIPIENT_SORT
Set rstOutput = dbs.OpenRecordset("T_OUTPUT", dbOpenDynaset)
'rstOutput refers to the table T_OUTPUT
rst.MoveFirst
'first record
strTemp1 = rst!DONOR_CONTACT_ID
'sets strTemp1 to the first record of the DONOR_CONTACT_ID
rst.MoveNext
'moves to the next record
Do While Not rst.EOF
'Loop while it's not the end of the file
strTemp2 = rst!DONOR_CONTACT_ID
'strTemp2 = DONOR_CONTACT_ID from T_RECIPIENT_SORT
If strTemp1 = strTemp2 Then
'Runs if temps have same DONOR_CONTACT ID
strRecip = rst!RECIPIENT_CONTACT_ID
'Sets strRecip = RECIPIENT_CONTACT_ID FROM T_RECIPIENT_SORT
With rstOutput
'Uses T_OUTPUT table
If .RecordCount > 0 Then
'If table has records then you can check
.FindFirst "[DONOR_CONTACT_ID] = strTemp2"
If .NoMatch Then
.AddNew
!DONOR_CONTACT_ID = strTemp1
!RECIPIENT_1 = strRecip
.Update
Else
If !DONOR_CONTACT_ID = strTemp2 Then
If IsNull(!RECIPIENT_2) And Not (IsNull(!RECIPIENT_1)) Then
.Edit
!RECIPIENT_2 = strRecip
.Update
End If
.AddNew
!DONOR_CONTACT_ID = strTemp2
!RECIPIENT_1 = strRecip
.Update
End If
End If
Else
.AddNew
!DONOR_CONTACT_ID = strTemp2
!RECIPIENT_1 = strRecip
.Update
End If
End With
End If
strTemp1 = strTemp2
rst.MoveNext
Loop
Set dbs = Nothing
End Function
构建value变量的值,而不是变量的值name,进入你给出的字符串FindFirst
去寻找。
假设DONOR_CONTACT_ID
是文本数据类型,还包括变量值周围的引号...
.FindFirst "[DONOR_CONTACT_ID] = '" & strTemp2 & "'"
但如果它是数字,则不需要这些引号......
.FindFirst "[DONOR_CONTACT_ID] = " & strTemp2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)