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:

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'

Content-Key: 316067

Url: https://administrator.de/contentid/316067

Printed on: April 20, 2024 at 14:04 o'clock

Member: colinardo
Solution colinardo Sep 23, 2016 updated at 11:36:10 (UTC)
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
Member: Pjordorf
Pjordorf Sep 23, 2016 at 11:29:30 (UTC)
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
Member: Aximand
Aximand Sep 26, 2016 at 08:10:12 (UTC)
Goto Top
Danke, perfekt face-smile