因此,我将尽力解释背景,以澄清对我希望实现的目标的理解。我有一个带有选项卡控件的表单(事件),该选项卡控件有3个不同的页面,每个页面上都有不同的子表单。
其中一个子表单(发言人)具有一个按钮控件,用于检查“发言人”的与会者ID,如果存在匹配项,则会向匹配的记录打开“入职”表单。
如果记录不匹配,该怎么办是打开一个新记录并插入ContactID,AttendeeID和EventID。
这是代码的第四次迭代,并且在一定程度上/没有返回错误
Dim myR As Boolean
Dim strSQL As String
Dim myV1 As Integer
Dim myV2 As Integer
Dim myV3 As Integer
'Define the variables to be input
myV1 = Me.AttendeeID
myV2 = Me.ContactID
myV3 = Me.EventID
'Is there a Matching Onboard Record for the current Attendee Record?
myR = DCount("*", "tbl_Onboarding", "[AttendeeID] = " & Me.AttendeeID) > 0
If myR = True Then
DoCmd.OpenForm "usf_Onboarding", acNormal, , , acFormEdit, acWindowNormal 'Edit Mode
Else 'No Matching Record, so Add one
If Me.Dirty = True Then Me.Dirty = False 'Save pending Edits
DoCmd.OpenForm "usf_Onboarding", acNormal, , , acFormAdd, acWindowNormal 'Add Mode
Forms!usf_Onboarding!txt_ForceFocus.SetFocus
strSQL = "INSERT INTO tbl_Onboarding (AttendeeID,ContactID,EventID) VALUES (" & myV1 & ", " & myV2 & ", " & myV3 & ")"
Debug.Print strSQL
CurrentDb.Execute strSQL, dbFailOnError
Me.Requery
DoCmd.Close acForm, "usf_Events", acSaveYes
End If
立即使用我已确认myV1,myV2和myV3都保持正确的值,并且我使用断点逐行检查,并且一切似乎都可以正常运行,并返回了零错误,但是根据是否是否存在,我仍然存在以下问题myR是对是错
Debug.Print strSQL也没有做任何奇怪的事情。
答案 0 :(得分:0)
问题1:“如果记录存在(myR = TRUE),则说明是某种原因导致该记录仅加载表的第一条记录(而不是与与会者ID匹配的记录)。”
我需要在openform命令中添加where子句
DoCmd.OpenForm "usf_Onboarding", acNormal, , "AttendeeID = " & Me.AttendeeID, acFormEdit, acWindowNormal
问题2:“如果在运行该记录后该记录不存在(myR = FALSE),则该表中包含具有contactID / AttendeeID / EventID的新记录,但是该表单不会更新以显示此信息(表单控件设置为锁定= False)这将导致关闭时出错。因此,选择不保存数据(在框上单击“是”以放弃更改)将允许强制退出,但记录/数据将保存为contactID / AttendeeID / EventID” < / p>
在创建新记录之前,我正在加载表单,然后尝试重新查询另一个新记录而不是它创建的记录。我需要做的就是先添加记录,然后使用上面的打开代码加载该记录
Else 'No Matching Record, so Add one
If Me.Dirty = True Then Me.Dirty = False 'Save pending Edits
strSQL = "INSERT INTO tbl_Onboarding (AttendeeID,ContactID,EventID) VALUES (" & myV1 & ", " & myV2 & ", " & myV3 & ")"
CurrentDb.Execute strSQL, dbFailOnError
DoCmd.OpenForm "usf_Onboarding", acNormal, , "AttendeeID = " & Me.AttendeeID, acFormEdit, acWindowNormal