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:
Diese Funktion wird aufgerufen über:
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'
ich bekomm gerade etwas nicht in meinen Schädel.
Ich habe eine Funktion erstellt, die eine SQL-Abfrage zusammenstellt:
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
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:
1
strSQLQuery = AbfrageAnzahlKundenGebiet((intPLZ), (2016), (1), (12))
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'
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 316067
Url: https://administrator.de/forum/vba-verstaendnisfrage-bei-funktionen-rueckgabe-von-werten-316067.html
Ausgedruckt am: 17.04.2025 um 22:04 Uhr
3 Kommentare
Neuester Kommentar
Hi.
, 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:
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
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 1
AbfrageAnzahlKundenGebiet = strSQLQuery
Grüße Uwe
Hallo,
Gruß,
Peter
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ürdeLeider hat strSQLQuery keinen Wert, aber warum nicht? Nach meiner Betrachtung sollte dort stehen
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
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
Peter