Forms 错误-2147352571类型不匹配:无法强制参数值

Forms 错误-2147352571类型不匹配:无法强制参数值,forms,ms-access,scripting,Forms,Ms Access,Scripting,我在尝试为2010 Access表单编写Visual Basic代码时遇到了上述错误。我试图确保员工和团队领导收到相同的电子邮件。当我第一次编写代码时,它最初是有效的。此后,我在表格中添加了“发布日期”,但没有在电子邮件中添加。我试图将发布日期添加到脚本中,但没有成功。我已经从表单和脚本中删除了发布日期。如有任何帮助,将不胜感激: Private Sub cmdEmail_Click() Dim objOutlook As Object Dim objMailItem As Object Con

我在尝试为2010 Access表单编写Visual Basic代码时遇到了上述错误。我试图确保员工和团队领导收到相同的电子邮件。当我第一次编写代码时,它最初是有效的。此后,我在表格中添加了“发布日期”,但没有在电子邮件中添加。我试图将发布日期添加到脚本中,但没有成功。我已经从表单和脚本中删除了发布日期。如有任何帮助,将不胜感激:

Private Sub cmdEmail_Click()
Dim objOutlook As Object
Dim objMailItem As Object
Const olMailItem As Integer = 0
 Dim objMailItem1 As Object
 Const olMailItem1 As Integer = 0
 Set objOutlook = CreateObject("Outlook.Application")
 Set objMailItem = objOutlook.CreateItem(olMailItem)
 Set objMailItem1 = objOutlook.CreateItem(olMailItem1)

 Dim strPathAttach As String
 On Error GoTo err_Error_handler
 'set receipient, you can use a DLookup() to retrieve your associate Email address
 objMailItem.To = DLookup("Email_ID", "dbo_Noble_Associates", "[Fullname]='" & Me.cboAssociate & "'")
 objMailItem1.To = DLookup("Email_ID", "dbo_TeamLeads$", "[Fullname]='" & Me.txtTeamLead & "'")
 'set subject with text and Form values
 objMailItem.Subject = "Attendance Violation " & Me.cboAssociate
 objMailItem1.Subject = "Attendance Violation " & Me.cboAssociate
 'set body content with text and Form values etc.
 objMailItem.htmlBody = "Date of Occurrence: " & Format(Me.Occurrence_Date, "mm/dd/yyyy")     & "<br>" & "Attendance Points: " & Me.CboType & "<br>" & "Total Points: " & Me.txtTotalpoints     & "<br>" & "Notes: " & Me.txtNotes
 objMailItem1.htmlBody = "Date of Occurrence: " & Format(Me.Occurrence_Date, "mm/dd/yyyy")     & "<br>" & "Attendance Points: " & Me.CboType & "<br>" & "Total Points: " & Me.txtTotalpoints & "<br>" & "Notes: " & Me.txtNotes

 ' display email
 ' objMailItem.Display
 ' sending mail automaticly
 objMailItem.Send
 objMailItem1.Send
 Set objOutlook = Nothing
 Set objMailItem = Nothing
 Set objMailItem1 = Nothing

 exit_Error_handler:
 On Error Resume Next
 Set objOutlook = Nothing
 Set objMailItem = Nothing
 Set objMailItem1 = Nothing

 Exit Sub

 err_Error_handler:
 Select Case Err.Number
 'trap error 287
 Case 287
 MsgBox "Canceled by user.", vbInformation
 Case Else
 MsgBox "Error " & Err.Number & " " & Err.Description
 End Select
 Resume exit_Error_handler
 End Sub
 Private Sub CheckEmail_Click()
 End Sub
 Private Sub cmdSaveandNew_Click()
 If Me.txtOccurrence_Date & "" = "" Then
 MsgBox "Please enter the date."
 Me.txtOccurrence_Date.SetFocus
 Exit Sub
 ElseIf Me.cboAssociate & "" = "" Then
 MsgBox "Please select the associate's name."
 Me.cboAssociate.SetFocus
 Exit Sub
 ElseIf Me.txtPoints & "" = "" Then
 MsgBox "Please enter the number of Points."
 Me.txtPoints.SetFocus
 Exit Sub
 End If

 If Me.CheckEmail = True Then
 cmdEmail_Click
 End If
 DoCmd.Close acForm, Me.Name
 End Sub
 Private Sub cmd_Cancel_Click()
 Me.Undo
 DoCmd.Close acForm, Me.Name

 End Sub
 Private Sub cboassociate_AfterUpdate()
 Me.txtTeamLead.Value = Me.cboAssociate.Column(1)
 End Sub
 Private Sub cboFullname_AfterUpdate()
 Me.txtCurrentpoints.Value = Me.cbofullname.Column(1)
 End Sub

 Private Sub CboType_AfterUpdate()
 Me.txtPoints.Value = Me.CboType.Column(1)
 End Sub
Private Sub cmdEmail\u Click()
将对象视为对象
Dim objMailItem作为对象
常量olMailItem为整数=0
Dim objMailItem1作为对象
常量olMailItem1为整数=0
设置objOutlook=CreateObject(“Outlook.Application”)
设置objMailItem=objOutlook.CreateItem(olMailItem)
设置objmailite1=objOutlook.CreateItem(olMailItem1)
Dim strPathAttach作为字符串
On Error GoTo err\u Error\u处理程序
'设置收件人,您可以使用DLookup()检索您的关联电子邮件地址
objMailItem.To=DLookup(“Email_ID”、“dbo_Noble_Associates”、“[Fullname]=””、&Me.cboasociate&“”)
objmailite1.To=DLookup(“Email_ID”,“dbo_TeamLeads$”,“[Fullname]=”,&Me.txtTeamLead&“”)
'使用文本和表单值设置主题
objMailItem.Subject=“考勤违规”&Me.cboasociate
objmailite1.Subject=“考勤违规”&Me.cboasociate
'使用文本和表单值等设置正文内容。
objMailItem.htmlBody=“发生日期:&&Format(Me.accurrence_Date,“mm/dd/yyyyy”)&&Me.CboType&
“总分:&&Me.txtotalpoints&”
“&”Notes:&Me.txnotes objMailItem1.htmlBody=“发生日期:&&Format(Me.accurrence_Date,“mm/dd/yyyyy”)&&Me.CboType&
“&”总分:&Me.txtotalpoints&“
”&”备注:&Me.txtNotes '显示电子邮件 'objMailItem.Display “自动发送邮件 objMailItem.Send objmailite1.Send 设置objOutlook=Nothing Set objMailItem=Nothing Set objmailite1=无 退出错误处理程序: 出错时继续下一步 设置objOutlook=Nothing Set objMailItem=Nothing Set objmailite1=无 出口接头 错误处理程序: 选择案例错误编号 '陷阱错误287 案例287 MsgBox“已被用户取消”,vbInformation 其他情况 MsgBox“Error”和Err.Number&“Err.Description” 结束选择 恢复退出\u错误\u处理程序 端接头 私人子检查电子邮件\u单击() 端接头 私有子cmdSaveandNew_Click() 如果Me.txtu日期&=“=”,则 MsgBox“请输入日期。” Me.txtu Date.SetFocus 出口接头 ElseIf Me.cboasocialate&=“那么” MsgBox“请选择员工的姓名。” Me.cboasociate.SetFocus 出口接头 ElseIf Me.txtPoints&=“那么” MsgBox“请输入点数。” Me.txtPoints.SetFocus 出口接头 如果结束 如果Me.CheckEmail=True,则 CMD电子邮件\u单击 如果结束 DoCmd.Close acForm,Me.Name 端接头 私有子命令\u取消\u单击() 我,解开 DoCmd.Close acForm,Me.Name 端接头 私有子CBOASociate_AfterUpdate() Me.txtTeamLead.Value=Me.cboasociate.Column(1) 端接头 私有子cboFullname_AfterUpdate() Me.txtCurrentpoints.Value=Me.cbofullname.Column(1) 端接头 私有子CboType_AfterUpdate() Me.txtPoints.Value=Me.CboType.Column(1) 端接头

我愿意接受任何建议。

发生日期是否与您提到的发行日期相同?如果上面的代码是工作代码,您能否只发布添加到脚本中的代码部分?发生日期与发布日期不同。这是正在工作的原始代码。发行日期已被删除。这是现在不起作用的代码。我有另一个表单,它有相同的镜像代码,唯一的变化是dlookup中的“dbo_Noble_Associates”。哦,我明白了。当你尝试使用Me.cboasociate.Value时会发生什么?我一直认为您必须在VBA中为组合框指定Value属性。我假设您在每次出现Me.cbo时都要将其更改为Me.cbo####.Value?只是想看看这是否是您所说的。是的,但请先尝试objMailItem。如果组合框有多个列,则必须在代码运行时执行类似cbo#.columns(0).value的操作,这必须是简单的操作。