Benutzer mit den meisten Antworten
Access - Aufruf einer Gespeicherten Prozedur und Auslesen des Rückgabewertes

Frage
-
Hallo Zusammen,
leider reicht mein Wissen, kombiniert mit Google wohl nicht aus um o.g. Problem zu lösen. Konkret möchte ich aus meiner Access adp die Systemprozedur "sp_send_dbmail" aufrufen (Also Datenbank EMail), die benötigen Parameter übergeben und nach der erfolgreichen Übergabe den Rückgabewert der SP auslesen.
Kann mir jemand konkret sagen wie man das tut? Ich habe ne Menge im Netz dazu gefunden, bekomme das aber - mangels Wissen - nicht auf mein Problem angepasst.
Vielen Dank für Eure Unterstützung.
Viele Grüße
Patrick
Antworten
-
Hallo Zusammen,
mit Hilfe eines anderen Treeds habe ich die Sache endlich gelöst. Hier der korrekte Code. Vor allem war das Problem, dass .NamedParameters = True gesetzt werden musste.
Viele Grüße
Patrick
Function MailSenden() As Variant
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Cmd As ADODB.CommandDim cnn As New ADODB.Connection
Dim strProfil As String
Dim strAn As String
Dim strBetreff As String
Dim strText As StringstrProfil = "Loxxess"
strAn = "pp@dpcon.de"
strBetreff = "Testmail"
strText = "Dies ist eine Testmail"
Dim strOutput As Variant
Dim strRecipients As String
Set cnn = CurrentProject.Connection
Set cmdObj = New ADODB.Command
With cmdObj
.ActiveConnection = cnn
.CommandText = "msdb.dbo.sp_send_dbmail"
.CommandType = adCmdStoredProc
.CommandTimeout = 60
.NamedParameters = True.Parameters.Append .CreateParameter("@profile_name", adVarChar, adParamInput, Len(strProfil), strProfil)
.Parameters.Append .CreateParameter("@recipients", adVarChar, adParamInput, Len(strAn), strAn)
.Parameters.Append .CreateParameter("@body", adVarChar, adParamInput, -1, strText)
.Parameters.Append .CreateParameter("@subject", adVarChar, adParamInput, Len(strBetreff), strBetreff)
.Parameters.Append .CreateParameter("@mailitem_id", adInteger, adParamOutput)
.Execute
strOutput = .Parameters("@mailitem_id").ValueEnd With
MsgBox "Mailitem_id = " & strOutput, vbInformation, "Info"
Set cmdObj = Nothing
Set cnn = Nothing
End Function- Als Antwort markiert Patrick Pohlmann Dienstag, 29. November 2011 09:31
Alle Antworten
-
Hallo Nochmal,
leider habe ich nich nicht die Lösung, möchte aber zumindest hier angeben, was ich bisher probiert habe:
Function getAdressDaten() As Variant
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Cmd As ADODB.CommandDim strProfil As String
Dim strAn As String
Dim strBetreff As String
Dim strText As StringstrProfil = "Profilname"
strAn = "test@test.de"
strBetreff = "Testmail"
strText = "Dies ist eine Testmail"
Dim strOutput As Variant
Dim strRecipients As String
Set cnn = CurrentProject.Connection
Set cmdObj = New ADODB.Command
With cmdObj
.ActiveConnection = cnn
.CommandText = "msdb.dbo.sp_send_dbmail"
.CommandType = adCmdStoredProc
.CommandTimeout = 60.Parameters.Append .CreateParameter("@profile_name", adVarChar, adParamInput, Len(strProfil), strProfil)
.Parameters.Append .CreateParameter("@recipients", adVarChar, adParamInput, Len(strAn), strAn)
.Parameters.Append .CreateParameter("@body", adVarChar, adParamInput, Len(strText), strText)
.Parameters.Append .CreateParameter("@subject", adVarChar, adParamInput, Len(strBetreff), strBetreff)'hier erhalte ich aber die Fehlermeldung, dass ich Mindestens einen der Werte "@body, @Query, @file_attachments, @subject" angeben muss.
Folgendes habe ich auch irgendwo gelesen, das geht aber gar nicht
'.Parameters.Refresh
'.Parameters("@profile_name") = strProfil
'.Parameters("@recipients") = strAn'.Parameters("@body") = strText
'.Parameters("@@subject") = strBetreff.Execute
'und das hier ist nur geraten. Wie komme ich an den Output Wert?
strOutput = .GetParameter("@mailitem_id")
'oder so?
'strOutput = .Parameters("@mailitem_id").Value
End With
MsgBox "Mailitem_id = " & strOutput, vbInformation, "Info"
Set cmdObj = Nothing
Set cnn = Nothing
End FunctionIch hoffe es kann mir jemand auf die Sprünge helfen.
Vielen Dank und viele Grüße
Patrick
-
Am 23.11.2011 schrieb Patrick Pohlmann:
leider reicht mein Wissen, kombiniert mit Google wohl nicht aus um o.g. Problem zu lösen. Konkret möchte ich aus meiner Access adp die Systemprozedur "sp_send_dbmail" aufrufen (Also Datenbank EMail), die benötigen Parameter übergeben und nach der erfolgreichen Übergabe den Rückgabewert der SP auslesen.
Evtl. hilft dir dies weiter:
http://www.activevb.de/tutorials/tut_ado_db/adodb.html Ganz unten
könnte etwas für dich dabei sein. Oder auch hier:
http://www.office-loesung.de/ftopic264751_0_0_asc.php
http://www.activevb.de/tipps/vb6tipps/tipp0435.html
http://www.ms-office-forum.net/forum/showthread.php?t=225831Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Reg2xml: http://www.reg2xml.com - Registry Export File Converter -
Hallo Zusammen,
mit Hilfe eines anderen Treeds habe ich die Sache endlich gelöst. Hier der korrekte Code. Vor allem war das Problem, dass .NamedParameters = True gesetzt werden musste.
Viele Grüße
Patrick
Function MailSenden() As Variant
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Cmd As ADODB.CommandDim cnn As New ADODB.Connection
Dim strProfil As String
Dim strAn As String
Dim strBetreff As String
Dim strText As StringstrProfil = "Loxxess"
strAn = "pp@dpcon.de"
strBetreff = "Testmail"
strText = "Dies ist eine Testmail"
Dim strOutput As Variant
Dim strRecipients As String
Set cnn = CurrentProject.Connection
Set cmdObj = New ADODB.Command
With cmdObj
.ActiveConnection = cnn
.CommandText = "msdb.dbo.sp_send_dbmail"
.CommandType = adCmdStoredProc
.CommandTimeout = 60
.NamedParameters = True.Parameters.Append .CreateParameter("@profile_name", adVarChar, adParamInput, Len(strProfil), strProfil)
.Parameters.Append .CreateParameter("@recipients", adVarChar, adParamInput, Len(strAn), strAn)
.Parameters.Append .CreateParameter("@body", adVarChar, adParamInput, -1, strText)
.Parameters.Append .CreateParameter("@subject", adVarChar, adParamInput, Len(strBetreff), strBetreff)
.Parameters.Append .CreateParameter("@mailitem_id", adInteger, adParamOutput)
.Execute
strOutput = .Parameters("@mailitem_id").ValueEnd With
MsgBox "Mailitem_id = " & strOutput, vbInformation, "Info"
Set cmdObj = Nothing
Set cnn = Nothing
End Function- Als Antwort markiert Patrick Pohlmann Dienstag, 29. November 2011 09:31
-
Am 24.11.2011 schrieb Patrick Pohlmann:
mit Hilfe eines anderen Treeds habe ich die Sache endlich gelöst. Hier der korrekte Code. Vor allem war das Problem, dass .NamedParameters = True gesetzt werden musste.
Hier der andere Thread:
http://social.msdn.microsoft.com/Forums/de-DE/sqlserverde/thread/198bc44d-5d89-4da6-a22a-edd0f8ed4d39#198bc44d-5d89-4da6-a22a-edd0f8ed4d39Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Reg2xml: http://www.reg2xml.com - Registry Export File Converter