aximand

VBA: Verständnisfrage bei Funktionen, Rückgabe von Werten

Hallo,

ich bekomm gerade etwas nicht in meinen Schädel.

Ich habe eine Funktion erstellt, die eine SQL-Abfrage zusammenstellt:

Public Function AbfrageAnzahlKundenGebiet(ByVal intPLZ As Integer, ByVal strJahr As String, ByVal strPeriodevon As String, ByVal strPeriodebis As String)
Dim strSQLQuery As String

strSQLQuery = "select count(distinct  KHKKontokorrent.Kto) as AnzahlDatensaetze "_  
            & "FROM KHKAdressen INNER JOIN " _  
            & "KHKKontokorrent ON KHKAdressen.Adresse = KHKKontokorrent.Adresse INNER JOIN " _  
            & "KHKStatVKKunden ON KHKKontokorrent.Kto = KHKStatVKKunden.Kunde " _  
            & "like '0" & intPLZ & "%' and KHKAdressen.Lieferland = 'DE' and " _  
            & "KHKStatVKKunden.Periode >= '" & strJahr & strPeriodevon & "' and KHKStatVKKunden.Periode <= '" & strJahr & strPeriodebis & "'"  


End Function

Diese Funktion wird aufgerufen über:

strSQLQuery = AbfrageAnzahlKundenGebiet((intPLZ), (2016), (1), (12))
wobei ich strJahr, Periodevon, Periode bis ersteinmal vorgegeben habe. intPLZ = 1

Leider hat strSQLQuery keinen Wert, aber warum nicht? Nach meiner Betrachtung sollte dort stehen

select count....
like 01% and KHKAdressen.Lieferland = 'DE' and
KHKStatVKKunden.Periode >= '"20161' and KHKStatVKKunden.Periode <= '201612'
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 316067

Url: https://administrator.de/forum/vba-verstaendnisfrage-bei-funktionen-rueckgabe-von-werten-316067.html

Ausgedruckt am: 17.05.2025 um 07:05 Uhr

colinardo
Lösung colinardo 23.09.2016 aktualisiert um 13:36:10 Uhr
Goto Top
Hi.
Leider hat strSQLQuery keinen Wert, aber warum nicht? Nach meiner Betrachtung sollte dort stehen
Weil du in der Funktion am Ende keinen Wert zurück gibst face-smile, sondern den String zwar in der Variablen speicherst aber selbst aus der Funktion nichts zurückgibst. In der Funktion in Zeile 10 sollte also noch stehen:
AbfrageAnzahlKundenGebiet = strSQLQuery
Wenn man unter VBA(S) also Werte in einer Funktion zurückgeben möchte weist man den Wert immer dem Namen der Funktion zu.

Grüße Uwe
Pjordorf
Pjordorf 23.09.2016 um 13:29:30 Uhr
Goto Top
Hallo,

Zitat von @Aximand:
Leider hat strSQLQuery keinen Wert, aber warum nicht? Nach meiner Betrachtung sollte dort stehen
Schau dir deine Zeile 2 an. Sicher das du innerhalb deiner Funktion nochmals strSQLQuery definieren willst? Ein strSQLQuery als Public gibt es schon für dein Code? Und du hast keine Rückgabe deiner Funktion. Ich würde
Public Function strAbfrageAnzahlKundenGebiet(ByVal intPLZ As Integer, ByVal strJahr As String, ByVal strPeriodevon As String, ByVal strPeriodebis As String) as String

strAbfrageAnzahlKundenGebiet = "select count(distinct  KHKKontokorrent.Kto) as AnzahlDatensaetze "_  
            & "FROM KHKAdressen INNER JOIN " _  
            & "KHKKontokorrent ON KHKAdressen.Adresse = KHKKontokorrent.Adresse INNER JOIN " _  
            & "KHKStatVKKunden ON KHKKontokorrent.Kto = KHKStatVKKunden.Kunde " _  
            & "like '0" & intPLZ & "%' and KHKAdressen.Lieferland = 'DE' and " _  
            & "KHKStatVKKunden.Periode >= '" & strJahr & strPeriodevon & "' and  _  
            & KHKStatVKKunden.Periode <= '" & strJahr & strPeriodebis & "'"  
End Function
Gruß,
Peter
Aximand
Aximand 26.09.2016 um 10:10:12 Uhr
Goto Top
Danke, perfekt face-smile