none
Access - Aufruf einer Gespeicherten Prozedur und Auslesen des Rückgabewertes RRS feed

  • 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

    Mittwoch, 23. November 2011 16:32

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.Command

    Dim cnn As New ADODB.Connection


    Dim strProfil As String
    Dim strAn As String
    Dim strBetreff As String
    Dim strText As String

    strProfil = "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").Value

          End With
         
      MsgBox "Mailitem_id = " & strOutput, vbInformation, "Info"
         
           Set cmdObj = Nothing
        Set cnn = Nothing
    End Function

    Donnerstag, 24. November 2011 18:19

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.Command

    Dim strProfil As String
    Dim strAn As String
    Dim strBetreff As String
    Dim strText As String

    strProfil = "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 Function

     

    Ich hoffe es kann mir jemand auf die Sprünge helfen.

     

    Vielen Dank und viele Grüße

     

    Patrick

    Mittwoch, 23. November 2011 17:33
  • 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=225831

    Servus
    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

    Donnerstag, 24. November 2011 17:55
  • 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.Command

    Dim cnn As New ADODB.Connection


    Dim strProfil As String
    Dim strAn As String
    Dim strBetreff As String
    Dim strText As String

    strProfil = "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").Value

          End With
         
      MsgBox "Mailitem_id = " & strOutput, vbInformation, "Info"
         
           Set cmdObj = Nothing
        Set cnn = Nothing
    End Function

    Donnerstag, 24. November 2011 18:19
  • 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-edd0f8ed4d39

    Servus
    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

    Donnerstag, 24. November 2011 19:00