Forms 错误-2147352571类型不匹配:无法强制参数值
我在尝试为2010 Access表单编写Visual Basic代码时遇到了上述错误。我试图确保员工和团队领导收到相同的电子邮件。当我第一次编写代码时,它最初是有效的。此后,我在表格中添加了“发布日期”,但没有在电子邮件中添加。我试图将发布日期添加到脚本中,但没有成功。我已经从表单和脚本中删除了发布日期。如有任何帮助,将不胜感激: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
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的操作,这必须是简单的操作。