none
Access VBA RRS feed

  • Frage

  • Hallo

    Ausgangslage:

    Ich möchte mit folgendem Befehl ein Bericht öffnen "QuittungRAdr" mit Rechnungs-Adresse falls vorhanden ansonsten "Quittung" mit Kundenadresse. Leider bin ich mir nicht sicher, ob die Anweisung korrekt ist. 

    Kann mir jemand helfen. Vielen Dank schon im Voraus. 

    Gruss

    Lukas

    Private Sub Befehl74_Click()

    Dim stDocName As String

        DoCmd.Beep

        If Forms![Rechnungdirekt].Form![Beleg] = "Quittung" And Forms![Rechnungdirekt].[KundenRAdrLN] > 0 Then

        stDocName = "QuittungRAdr"

        Else: stDocName = "Quittung"

        DoCmd.OpenReport stDocName, acPreview, , "[RechnungLN] = " & Forms![Rechnungdirekt]![RechnungLN]

        End If

       DoCmd.OpenReport stDocName, acPreview

    End Sub

    Montag, 31. August 2020 15:28

Antworten

  • [...]
        DoCmd.OpenReport stDocName, acPreview, , stParams
    
    End Sub

    Ob das nun syntaktisch korrekt ist wegen des fehlenden Parameters an der dritten Stelle des OpenReport Aufrufs weiß ich allerdings nicht.

    Hallo Stefan,

    Leerstellen in der Parameterliste sind erlaubt und auch notwendig, wenn man nur Werte listet und sich auf die Reihenfolge verlässt. Alternativ kann man die Parameter ähnlich anderer Sprachen auch direkt adressieren:

    DoCmd.OpenReport ReportName := stDocName, WhereCondition := stParams

    Gruss - Peter


    Mitglied im www.dbdev.org
    Access-FAQ: www.donkarl.com


    Mittwoch, 7. Oktober 2020 23:20
    Moderator
  • Hallo Lukas,

    wieso "nicht sicher". Entweder macht der Code das, was Du willst oder eben nicht.

    Ich persönlich würde das so schreiben:

    Private Sub Befehl74_Click()
    
    Dim stDocName As String
    Dim stParams  As String
    
        If Forms![Rechnungdirekt].Form![Beleg] = "Quittung" And Forms![Rechnungdirekt].[KundenRAdrLN] > 0 Then
            stDocName = "QuittungRAdr"
        Else
            stDocName = "Quittung"
            stParams  = "[RechnungLN] = " & Forms![Rechnungdirekt]![RechnungLN]
        End If
    
        DoCmd.OpenReport stDocName, acPreview, , stParams
    
    End Sub

     

    Ob das nun syntaktisch korrekt ist wegen des fehlenden Parameters an der dritten Stelle des OpenReport Aufrufs weiß ich allerdings nicht.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Montag, 31. August 2020 15:50
    Moderator

Alle Antworten

  • Hallo Lukas,

    wieso "nicht sicher". Entweder macht der Code das, was Du willst oder eben nicht.

    Ich persönlich würde das so schreiben:

    Private Sub Befehl74_Click()
    
    Dim stDocName As String
    Dim stParams  As String
    
        If Forms![Rechnungdirekt].Form![Beleg] = "Quittung" And Forms![Rechnungdirekt].[KundenRAdrLN] > 0 Then
            stDocName = "QuittungRAdr"
        Else
            stDocName = "Quittung"
            stParams  = "[RechnungLN] = " & Forms![Rechnungdirekt]![RechnungLN]
        End If
    
        DoCmd.OpenReport stDocName, acPreview, , stParams
    
    End Sub

     

    Ob das nun syntaktisch korrekt ist wegen des fehlenden Parameters an der dritten Stelle des OpenReport Aufrufs weiß ich allerdings nicht.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Montag, 31. August 2020 15:50
    Moderator
  • Hallo Stefan 

    Vielen Dank für Deine Unterstützung. Werde ich ausprobieren.

    Einen schönen Abend und nochmals danke.

    Gruss

    Lukas

    Montag, 31. August 2020 15:56
  • [...]
        DoCmd.OpenReport stDocName, acPreview, , stParams
    
    End Sub

    Ob das nun syntaktisch korrekt ist wegen des fehlenden Parameters an der dritten Stelle des OpenReport Aufrufs weiß ich allerdings nicht.

    Hallo Stefan,

    Leerstellen in der Parameterliste sind erlaubt und auch notwendig, wenn man nur Werte listet und sich auf die Reihenfolge verlässt. Alternativ kann man die Parameter ähnlich anderer Sprachen auch direkt adressieren:

    DoCmd.OpenReport ReportName := stDocName, WhereCondition := stParams

    Gruss - Peter


    Mitglied im www.dbdev.org
    Access-FAQ: www.donkarl.com


    Mittwoch, 7. Oktober 2020 23:20
    Moderator