Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Summe aus SQL String
Gehe zu Seite 1, 2  Weiter
zurück: Einzelne Daten zwischen Zabellen kopieren... weiter: Abfrage 2* und 200 bis 400 Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
jo_1
Gast


Verfasst am:
30. Aug 2006, 00:18
Rufname:

Summe aus SQL String - Summe aus SQL String

Nach oben
       

Hallo,
an diesem Problem beisse ich mir noch die Zähne aus (Anfänger),
für einen Tip wäre ich dankbar.
Ich brauche die Summe des berechneten Feldes "Testkonto_TZ3"
ermitteln.

Dieser Teil läuft einwandfrei!
Code:
    SQLstr2 = _
        "SELECT Zinsdatum, Testkonto_Z, Testkonto_K, " & _
               "[Testkonto_K]*[Testkonto_Z]/365 AS Testkonto_TZ, " & _
               "IIf([Zinsdatum]<= #3/31/1999#," & _
                   "([Testkonto_K])*([Testkonto_Z])/365, " & _
                   "IIf([Zinsdatum] Between #4/1/1999# And #6/30/1999#," & _
                       "(([Testkonto_K]+'" & var_quart1 & "')*" & _
                                                    "[Testkonto_Z])/365, " & _
                       "IIf([Zinsdatum] Between #7/1/1999# " & _
                                           "And #9/30/1999#," & _
                           "(([Testkonto_K]+'" & var_quart2 & "')*" & _
                                                    "[Testkonto_Z])/365, " & _
                           "IIf([Zinsdatum] Between #10/1/1999# " & _
                                              "And #12/31/1999#," & _
                               "(([Testkonto_K]+'" & var_quart3 & "')*" & _
                                              "[Testkonto_Z])/365, 0)))) " & _
               "AS Testkonto_TZ3 " & _
          "FROM KontotageszinssatzT " & _
         "WHERE [Zinsdatum] between #4/1/1999# And #6/30/1999#;"
' Bis hierher ausgetestet  - EINWANDFREI -
    SQLstr3 = "SELECT Sum(Testkonto_TZ3) " & _
                "FROM '" & SQLstr2 & "' " & _
               "WHERE [Zinsdatum] Between #4/1/1999# And #6/30/1999#;"
    Set rs3 = CurrentDb.OpenRecordset(SQLstr3, dbOpenDynaset)
Ab hier läuft es nicht mehr! "Unzulässige Klammern".
lothi
c#, .Net


Verfasst am:
30. Aug 2006, 07:57
Rufname:
Wohnort: Birgisch


AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo

Was gibt denn die SQL2 zurück einen Tabellenname?

Denn dort wo du die Variable einsetzt kommt der TAbellenname hinein.

Wenn du dort wirklich ein Tabellenname einsetzen willst brauchst du die '' nicht.
Code:
    SQLstr3 = "SELECT Sum(Testkonto_TZ3) " & _
                "FROM " & SQLstr2 & " " & _
               "WHERE [Zinsdatum] Between #4/1/1999# And #6/30/1999#;"
Heisst dein Feld nach dem WHERE wirklich so?

mach doch vor dem dem öffnen des Recordset eine MSG box rein und dann siehst du was das Resultat ist.

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
Gast



Verfasst am:
30. Aug 2006, 09:35
Rufname:

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo lothi, vielen Dank für Deine Antwort,
ich habe eine Tabelle "KontotageszinssatzT" mit tagesdatum, Zinssatz und Kapital!

Zinsdatum Testkonto_Z Testkonto_K
01.01.1999 3,500% 10000€
02.01.1999 3,500% 10000€
03.01.1999 5,500% 20000€
..... ..... ......
31.12.2015 2,500% 10000€

Die Abfrage erstellt 2 Felder
1. ((Testkonto_Z * Testkonto_K)/365) AS Testkonto_TZ -Zinsen je Tag
2. IIF .......... AS Testkonto_TZ3 - Zinsen + Zinseszinsen je Tag, wenn die Zinsen jeweils am 01.04./ 01.07./ 01.10./ 01.01. dem kapital zugeschlagen werden.
Soll heissen im Zeitbereich 1.4. bis 1.7 steht im Feld Testkonto_TZ3 der Tageszins + die Summe der Zinsen vom 1.1. bis 31.3. u.s.w.

SQLstr2 gibt alle Felder im abgefragten Zeitbereich zurück.
Soweit funktioniert die Abfrage einwandfrei .

Die Aufgabe ist jetzt, die Zinsen an beliebigen Zeitpunkten abzufragen und in einem Formular auzugeben.
Dazu soll mit sum (Testkonto_TZ ) between datum1 datum2 der Zins ermittel werden (Konto ohne Zinseszins).
Oder der Zins z.B. am 01.04.2006 (Testkonto_TZ3) (Konto mit Zinseszins)

Das sind vermutlich alles Anfängerlösungen, aber mit meinem Zehntelwissen gehts halt nicht besser.

Wenn ich aus der Zeile WHERE den Tabellennamen herausnehme, ändert sich nichts. Tabellennamen für die berechneten Felder weiss ich auch nicht ?
lothi
c#, .Net


Verfasst am:
30. Aug 2006, 11:04
Rufname:
Wohnort: Birgisch

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo

Die Abfrage 1 funktioniert ja hast du gesagt.

Was nicht stimmt ist die zweite Abfragen was willst du denn mit der machen?
Du baust da mitten in einen SQL eine neue SQL rein das geht nicht.
Wenn du mit der Abfrage in deiner Variablen weiterarbeiten willst musst du die erste zuerst speichern dann kannst du diese gespeicherte Abfrage in deine 2. aufnehmen.

Ich verstehe nicht was du mit SQLstr3 meinst.

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
jo_1
Gast


Verfasst am:
30. Aug 2006, 15:32
Rufname:


AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo lothi vielen Dank,
die 2. Abfrage ist eigentlich nur der untaugliche Versuch irgendwie an die Summe aus der ersten zu kommen. Wenn alle Stricke reissen würde ich versuchen, über eine Schleife im Recordset der ersten Abfrage die Summe zu ermitteln. Eigentlich müsste sich die Summe aber über eine Aggregatfunktion in der Abfrage ermitteln lassen. Leider bin ich dieser Kunst nicht mächtig.
Wie kann man die erste speichern um dann darauf zuzugreifen?
Gruss jo
lothi
c#, .Net


Verfasst am:
30. Aug 2006, 15:55
Rufname:
Wohnort: Birgisch

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Lieber Jo

Du kannst direkt die erste Abfrage nehmen für dein recordset.
Code:
    SQLstr2 = _
        "SELECT Zinsdatum, Testkonto_Z, Testkonto_K, " & _
               "[Testkonto_K]*[Testkonto_Z]/365 AS Testkonto_TZ, " & _
               "IIf([Zinsdatum]<= #3/31/1999#," & _
                   "([Testkonto_K])*([Testkonto_Z])/365, " & _
                   "IIf([Zinsdatum] Between #4/1/1999# And #6/30/1999#," & _
                       "(([Testkonto_K]+" & var_quart1 & ")*" & _
                                                    "[Testkonto_Z])/365, " & _
                       "IIf([Zinsdatum] Between #7/1/1999# " & _
                                           "And #9/30/1999#," & _
                           "(([Testkonto_K]+" & var_quart2 & ")*" & _
                                                    "[Testkonto_Z])/365, " & _
                           "IIf([Zinsdatum] Between #10/1/1999# " & _
                                              "And #12/31/1999#," & _
                               "(([Testkonto_K]+" & var_quart3 & ")*" & _
                                              "[Testkonto_Z])/365, 0)))) " & _
               "AS Testkonto_TZ3 " & _
          "FROM KontotageszinssatzT " & _
         "WHERE [Zinsdatum] Between #4/1/1999# And #6/30/1999#;"
    Set rs = CurrentDb.OpenRecordset(SQLstr2)
Also ich konnte keinen Fehler im SQL finden ausser var_quart1 - 3 hast du als Text eingebunden sollten doch Zahlen sein also ohne ' '.

Mache jetzt direkt nach dem SQL ein:
Code:
    Debug.Print SQLstr2
Den Text aus dem Direktfenster kannst du dann in eine Abfrage kopieren und schauen ob das ganze auch funktioniert.
_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
Gast



Verfasst am:
30. Aug 2006, 17:36
Rufname:

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

.
Hallo lothi, VIELEN VIELEN herzlichen Dank, jetzt ist der Groschen gefallen.
funktioniert wunderbar.

Aber nicht ohne Hochkomma, da reisst der String nach dem ersten + ab.
Code:
SELECT Zinsdatum, Testkonto_Z, Testkonto_K,
       ([Testkonto_K]*[Testkonto_Z])/365 AS Testkonto_TZ,
       IIf([Zinsdatum]<= #3/31/1999#,[Testkonto_K]*[Testkonto_Z]/365, 
           IIf([Zinsdatum] Between #4/1/1999# And #6/30/1999#,(([Testkonto_K] +
An dem Inhalt der Variablen kann es ja wohl nicht liegen.
Code:
    var_quart1 = DSum("([Testkonto_K]*[Testkonto_Z])/365 ", _
                      "[KontotageszinssatzT]", _
                      "[Zinsdatum] Between  #01/01/1999# And #03/31/1999#")
    var_quart2 = DSum("([Testkonto_K]*[Testkonto_Z])/365 ", _
                      "[KontotageszinssatzT]", _
                      "[Zinsdatum] Between  #01/01/1999# And #06/30/1999#")
    var_quart3 = DSum("([Testkonto_K]*[Testkonto_Z])/365 ", _
                      "[KontotageszinssatzT]", _
                      "[Zinsdatum] Between  #01/01/1999# And #09/30/1999#")

Beste Grüsse jo
lothi
c#, .Net


Verfasst am:
31. Aug 2006, 08:22
Rufname:
Wohnort: Birgisch

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo

Wieso nicht?

Wie sieht die Deklaration der Variablen aus?
Code:
    Dim var_quart1 As ????
Kann sein wenn die Variable als Variant deklariert und du Dezimalzahlen hast dies als String zurückgegeben wird.
_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
jo_1
Gast


Verfasst am:
31. Aug 2006, 09:00
Rufname:

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

.
Hallo lothi,

sollte wohl Variant sein.
Code:
    Dim var_quart1
    Dim var_quart2
    Dim var_quart3
habe ich geändert
Code:
    Dim var_quart1 As Single
    Dim var_quart2 As Single
    Dim var_quart3 As Single
hilft aber nicht!
Wenn ich versuche ein Recordset zu setzen,
Code:
    Set rs2 = CurrentDb.OpenRecordset(SQLstr2, dbOpenDynaset)
Zitat:
Laufzeitfehler 3075 (Komma) in Abfrageausdruck
gleiche Fehlermeldung wie bei Deklaration als Variant.

mfg jo
Willi Wipp
Moderator


Verfasst am:
31. Aug 2006, 12:08
Rufname:
Wohnort: Raum Wiesbaden

Re: Summe aus SQL String - Re: Summe aus SQL String

Nach oben
       

Hi jo_1,

deklariere die Variablen mal als String und setze dann
Code:
    var_quart1 = Str(DSum("([Testkonto_K]*[Testkonto_Z])/365 ", _
                          "[KontotageszinssatzT]", _
                          "[Zinsdatum] Between #01/01/1999# " & _
                                          "And #03/31/1999#"))
    var_quart2 = Str(DSum("([Testkonto_K]*[Testkonto_Z])/365 ", _
                          "[KontotageszinssatzT]", _
                          "[Zinsdatum] Between #01/01/1999# " & _
                                          "And #06/30/1999#"))
    var_quart3 = Str(DSum("([Testkonto_K]*[Testkonto_Z])/365 ", _
                          "[KontotageszinssatzT]", _
                          "[Zinsdatum] Between #01/01/1999# " & _
                                          "And #09/30/1999#"))

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
lothi
c#, .Net


Verfasst am:
31. Aug 2006, 12:16
Rufname:
Wohnort: Birgisch

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo

@Willi ist es nicht genau das Problem , dass die Variable ein String ist? Er will ja nachher weiterrechnen.
Code:
                       IIf([Zinsdatum] Between #7/1/1999# " & _
                                           "And #9/30/1999#," & _
                           "(([Testkonto_K]+'" & var_quart2 & "')*" &
Da wir in der Scheiz immer einen Punkt als Dezimalzeichen haben, hatte ich das Problem noch nie mit dem Komma.

Wird denn das Dezimalzeichen nicht automatisch in ein . geändert?

Vielleicht so?:
Code:
                       IIf([Zinsdatum] Between #7/1/1999# " & _
                                           "And #9/30/1999#," & _
                           "(([Testkonto_K]+" & CDbl(var_quart2) & ")*" &

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
Willi Wipp
Moderator


Verfasst am:
31. Aug 2006, 14:20
Rufname:
Wohnort: Raum Wiesbaden

Re: Summe aus SQL String (II) - Re: Summe aus SQL String (II)

Nach oben
       

@lothi,

aber genau das macht die Funktion Str aus dem nationalen Dezimalen-Trennzeichen
wird das VBA-Decimal-Trennzeichen => der Punkt.
In Code duerfen dann natuerlich keine Hochkomma ' mehr verwendet werden.
Den SQL-String kann man aber doch ruhig aus mehreren Strings zusammensetzen Wink
Ich denke aber das der SQLstr2-Teil tatsaechlich funktionierte.
Access setzt dann den Zahlen-String in eine Zahl um. Versuch mal
Code:
SELECT DeineZahl, DeineZahl+'2,5' AS Ausdr1
FROM   [Deine Tabelle];
Geht aber eventuell nur mit deutschem Access (+Laendereinstellung).
Die Variante mit dem Str sollte aber ueberall funktioniern.

Hi jo_1,

das eigentliche Problem ist aber in jedem Fall der 2. SQL-String SQLstr3.
Versuch das mal so
Code:
    SQLstr3 = "SELECT Sum(Testkonto_TZ3) " & _
                "FROM (" & SQLstr2 & ") " & _
               "WHERE [Zinsdatum] Between #4/1/1999# And #6/30/1999#;"
    Set rs3 = CurrentDb.OpenRecordset(SQLstr3, dbOpenDynaset)

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
lothi
c#, .Net


Verfasst am:
31. Aug 2006, 15:00
Rufname:
Wohnort: Birgisch

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo Willi

Die () hast du aber später reingesetzt oder Wink Twisted Evil
Ist es nicht schneller auf eine gespeicherte Abfrage zurückzugreifen? Anstatt 2 zu verketten?

Bei mir geht das so nicht '2,5', da bekomme ich #Fehler mit Str('2,5') bekomme ich Datentypen in Kriterienausdruck falsch.
'2.5' geht wegen Schweiz. Very Happy
In Deutschland geht der Punkt doch auch oder etwa nicht?

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
Gast



Verfasst am:
31. Aug 2006, 15:35
Rufname:

AW: Summe aus SQL String - AW: Summe aus SQL String

Nach oben
       

Hallo lothi und Willi Wipp,

nach der Deklaration der Variablen als String und der Änderung der Zuweisung konnte ich die Hochkommata problemlos entfernen.

Aber hier klemmt es.
Code:
    SQLstr3 = "SELECT Sum(Testkonto_TZ3) " & _
                "FROM (" & SQLstr2 & ") " & _
               "WHERE [Zinsdatum] Between #4/1/1999# And #6/30/1999#;"
    Set rs3 = CurrentDb.OpenRecordset(SQLstr3, dbOpenDynaset)
Syntaxfehler in FROM Klausel

Gruss jo
Willi Wipp
Moderator


Verfasst am:
31. Aug 2006, 18:50
Rufname:
Wohnort: Raum Wiesbaden


Re: Summe aus SQL String (III) - Re: Summe aus SQL String (III)

Nach oben
       

@lothi,

eigentlich nicht, dann wuerde ja das Edit beim Beitrag auftauchen
(wie Du weisst taucht das bei eigenen Beitraegen ja immer auf Wink)
Und natuerlich ist es schneller auf eine gespeicherte Abfrage zuzugreifen,
aber die Variablen sind ja in der 1. Abfrage.
Das das mit dem Komma in der Schweiz nicht geht, habe ich mir schon gedacht.
Daher ja auch der Hinweis mit dem Dezimaltrennzeichen und der Systemeinstellung.

Hi jo_1,

hast Du denn mal
Code:
    Debug.Print SQLstr2
gemacht und den SQL-Code dann in einer Abfrage getestet?
Funktioniert der ohne Probleme?
Was soll eigentlich der ganze Aufwand, wenn Du dann eh nur auf die Daten des 1. Quartals zugreifst?
Dann kannst Du doch auch gleich nur diese abfragen.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle per SQL umbennen (Access 2000) 2 DerPater 1084 09. Dez 2004, 14:02
Gast Tabelle per SQL umbennen (Access 2000)
Keine neuen Beiträge Access Tabellen & Abfragen: Access SQL auskommentieren 2 excalibur 7156 21. Nov 2004, 20:24
excalibur1 Access SQL auskommentieren
Keine neuen Beiträge Access Tabellen & Abfragen: Kombinationsfeld Datensatzherkunft VBA SQL 2 JensM 8920 17. Nov 2004, 19:57
JensM Kombinationsfeld Datensatzherkunft VBA SQL
Keine neuen Beiträge Access Tabellen & Abfragen: Absturz bei Abfrageänderung von Ausdruck in Summe 5 Nahetor 605 10. Nov 2004, 17:28
Skogafoss Absturz bei Abfrageänderung von Ausdruck in Summe
Keine neuen Beiträge Access Tabellen & Abfragen: zeilenumbruch in sql abfrage 6 uweberli 18230 10. Nov 2004, 16:42
uweberli zeilenumbruch in sql abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit sum, max Wert und verhätnis summe/max anzeigen? 1 IV 2531 04. Nov 2004, 18:14
Skogafoss Abfrage mit sum, max Wert und verhätnis summe/max anzeigen?
Keine neuen Beiträge Access Tabellen & Abfragen: Wenn-Dann-Sonst in SQL??? mit SQL-String :-) 11 SCHNEEMANN 7515 20. Okt 2004, 16:33
SCHNEEMANN Wenn-Dann-Sonst in SQL??? mit SQL-String :-)
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Wenn-Dann-Sonst in SQL??? 2 SCHNEEMANN 998 18. Okt 2004, 17:26
Willi Wipp Wenn-Dann-Sonst in SQL???
Keine neuen Beiträge Access Tabellen & Abfragen: SQL - Abfrage ob ein Wert in der Tabelle enthalten ist 1 notausgang 1301 23. Sep 2004, 09:42
stpimi SQL - Abfrage ob ein Wert in der Tabelle enthalten ist
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrfachauswahl aus Listenfeld kombiniert mit SQL IN (...) 2 SMArmageddon 2417 01. Sep 2004, 15:07
SMArmageddon Mehrfachauswahl aus Listenfeld kombiniert mit SQL IN (...)
Keine neuen Beiträge Access Tabellen & Abfragen: Summe wenn Abfrage + prozentuale Auswertung 4 Aylah 706 09. Aug 2004, 13:35
Aylah Summe wenn Abfrage + prozentuale Auswertung
Keine neuen Beiträge Access Tabellen & Abfragen: Summe über mehrere Spalten ermitteln 6 WaterMan 1409 26. Jul 2004, 13:44
lothi Summe über mehrere Spalten ermitteln
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln