大家好!
我在调用sp_send_dbmail时,提示"必须至少指定以下参数之一"!!,如下图:可是我已经将Body和Subject指定了内容,为什么还是报这样的错?!
请高手指点,感激不尽!
Dim cnn1 As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs1 As ADODB.Recordset
Dim par As ADODB.Parameter
Dim ConnStr As String
Dim EmailAddress As String
Dim EmailSubject As String
Dim EmailBody As StringConnStr = "Provider=SQLOLEDB.1;Password=inplan;Persist Security Info=True;User ID= inplan ;Initial Catalog=live;Data Source=ERPDB01"Set cnn1 = New ADODB.Connection
cnn1.Open ConnStrSet rs1 = New ADODB.Recordset
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn1
cmd.CommandText = "msdb.dbo.sp_send_dbmail"
cmd.CommandType = adCmdStoredProcEmailAddress = "[email protected];[email protected]"
EmailBody = "测试Body"
EmailSubject = "测试Subject"Set par = cmd.CreateParameter("@profile_name", adVarChar, adParamInput, 50, "DBA SQL")
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@recipients", adVarChar, adParamInput, Len(EmailAddress), EmailAddress)
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@body", adVarWChar, adParamInput, Len(EmailBody), EmailBody)
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@subject", adVarWChar, adParamInput, Len(EmailSubject), EmailSubject)
cmd.Parameters.Append parSet rs1 = cmd.Execute
Set cmd = Nothing
Set rs1 = Nothing
我在调用sp_send_dbmail时,提示"必须至少指定以下参数之一"!!,如下图:可是我已经将Body和Subject指定了内容,为什么还是报这样的错?!
请高手指点,感激不尽!
Dim cnn1 As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs1 As ADODB.Recordset
Dim par As ADODB.Parameter
Dim ConnStr As String
Dim EmailAddress As String
Dim EmailSubject As String
Dim EmailBody As StringConnStr = "Provider=SQLOLEDB.1;Password=inplan;Persist Security Info=True;User ID= inplan ;Initial Catalog=live;Data Source=ERPDB01"Set cnn1 = New ADODB.Connection
cnn1.Open ConnStrSet rs1 = New ADODB.Recordset
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn1
cmd.CommandText = "msdb.dbo.sp_send_dbmail"
cmd.CommandType = adCmdStoredProcEmailAddress = "[email protected];[email protected]"
EmailBody = "测试Body"
EmailSubject = "测试Subject"Set par = cmd.CreateParameter("@profile_name", adVarChar, adParamInput, 50, "DBA SQL")
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@recipients", adVarChar, adParamInput, Len(EmailAddress), EmailAddress)
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@body", adVarWChar, adParamInput, Len(EmailBody), EmailBody)
cmd.Parameters.Append par
Set par = cmd.CreateParameter("@subject", adVarWChar, adParamInput, Len(EmailSubject), EmailSubject)
cmd.Parameters.Append parSet rs1 = cmd.Execute
Set cmd = Nothing
Set rs1 = Nothing
解决方案 »
- 如何将ListBox中的值上下移动
- 如何取得网页中ACTIVEX控件的值?像用WM_GETTEXT得到它的文字等等??
- 一个关于TEXT控件的问题!急!!
- 咨询一下VB操作Excel(不是VBA)有没有类似autofill的指令
- 请教!!!急!如何实现定点提醒
- 讨论VB与EXCEL
- 如何在VB中调用chm格式的帮助文件
- 帮帮忙,大虾们,急
- 请问如何用vba实现把word文档保存为ie文档,不改变左右对齐,图片存入一个文件夹!!高分
- 非常多谢高手们对(同时播放6个MID或WAV文件的方法)的回答,但由于小弟天生笨拙,望高手们给出代码一助!
- VB程序,多人同时运行,需要注意哪些事项?
- 在VB 中如何实现图片循环放映
至少没有发信人的EMAIL
问题已经解决了
在VB中,parameter必须按顺序来赋值,
我将代码改动如下Set par = cmd.CreateParameter("@profile_name", adVarChar, adParamInput, 50, "DBA SQL")
cmd.Parameters.Append parSet par = cmd.CreateParameter("@recipients", adVarChar, adParamInput, Len(EmailAddress), EmailAddress)
cmd.Parameters.Append parSet par = cmd.CreateParameter("@copy_recipients", adVarChar, adParamInput, 100, "null")
cmd.Parameters.Append parSet par = cmd.CreateParameter("@blind_copy_recipients", adVarChar, adParamInput, 100, "null")
cmd.Parameters.Append parSet par = cmd.CreateParameter("@subject", adVarWChar, adParamInput, Len(EmailSubject), EmailSubject)
cmd.Parameters.Append parSet par = cmd.CreateParameter("@body", adVarWChar, adParamInput, Len(EmailBody), EmailBody)
cmd.Parameters.Append par如上代码,严格按照sp_send_dbmail中的parameter顺序来赋值,
举个例子,如果我将以上代码的第5个parameter和第6个换个位置,那么,
发送的邮件中,主题和内容,就完全对调了!与参数的名称无关!只与参数
的顺序有关。
就算我将6个参数名称都写为"@subject",但是仅当它出现在第5个位置时,
才表示主题,出现在第6个位置时,则表示的是@body。