aximand
Goto Top

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:

1
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))
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'

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

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:
1
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
1
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
Gruß,
Peter
Aximand
Aximand 26.09.2016 um 10:10:12 Uhr
Goto Top
Danke, perfekt face-smile