Abfrage mit berechnung funzt nicht

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Antworten
yoda
Moderator
Beiträge: 645
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Nörten-Hardenberg
Kontaktdaten:

Abfrage mit berechnung funzt nicht

Beitrag von yoda » Fr 11. Aug 2023, 07:52

Hi,

in eine SQl Lite
afa1.png
afa1.png (30.78 KiB) 2158 mal betrachtet

steht Folgendes
afa2.png
afa2.png (31.22 KiB) 2158 mal betrachtet
Ich möchte nun die Summe aller Einträge die im SollJahr noch Gültigkeit haben.
Z.B. der Eintag testobjekt2 ist im Jahr 2000 angeschafft und hat eine Dauer von 2 Jahren.
also müste er in den Jahren 2000, 2001, 2002 Gültigkeit haben.
ich hab es so versucht gambas code
 hResult = $hConn.Exec("SELECT sum( teilb )  AS afaKosten FROM afa where ansch <='" & solljahr & "' and  ansch + dauer >='" & solljahr & "' ")
      If hResult!afaKosten Then 
         afaKosten = Round(hResult!afaKosten, -2)
      Else 
         afaKosten = 0
      Endif    
Lg Dirk

Benutzeravatar
PJBlack
Foriker
Beiträge: 81
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Abfrage mit berechnung funzt nicht

Beitrag von PJBlack » Sa 12. Aug 2023, 16:18

1. idee: keine ahnung wo du solljahr herholst aber lass mal die ' weg ... ansch = integer dauer = real also solltest du vllt nicht nach string suchen ...

Benutzeravatar
Honsek
Foriker
Beiträge: 516
Registriert: Do 4. Okt 2007, 18:01
Kontaktdaten:

Re: Abfrage mit berechnung funzt nicht

Beitrag von Honsek » So 13. Aug 2023, 16:13

Hallo Dirk.
Ja, der Hinweis von PJBlack ist richtig. Es kommt auf die korrekte Syntax an. Ich würde Folgendes vorschlagen:

Code: Alles auswählen

Dim sSQL As String
Dim solljahr As Integer

    sSQL = "SELECT SUM(teilb) AS afaKosten FROM"
    sSQL &= " " & DB.Current.Quote(sDBTableName, True)
    sSQL &= " " & WHERE (ansch <= " & solljahr & " AND  (ansch + dauer) >= " & solljahr)
  
    Print "SQL = ";sSQL

    hDBResult = $hConn.Exec(sSQL)

    Print "Anzahl der DS = "; hDBResult.Count

    IF hDBResult.Available Then
        If hDBResult!afaKosten > 0 Then
           afaKosten = Round(hDBResult!afaKosten, -2)
        Else
           afaKosten = 0
        Endif
    EndIf

    Print "Kosten = "; afaKosten

    Catch
    Print Error.Text & " at " & Error.Where
Außerdem ist die Logik mit den 2 Jahren, die Du auf drei hoch setzt nicht klar.
Sollte solljahr = 2023 sein, dann ist afaKosten wohl sicher 0.

Ich setze immer den Print-Befehl ein, um sichere Kenntnis von bestimmten Ausgaben zu erhalten.
Gibt es weitere Fragen oder Nachfragen zu meinem Vorschlag, dann schreibe sie konkret auf.

Mit freundlichem Gruß

Hans
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

yoda
Moderator
Beiträge: 645
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Nörten-Hardenberg
Kontaktdaten:

Re: Abfrage mit berechnung funzt nicht

Beitrag von yoda » Sa 2. Sep 2023, 09:34

Moin,

Honsek hat geschrieben:
So 13. Aug 2023, 16:13

Außerdem ist die Logik mit den 2 Jahren, die Du auf drei hoch setzt nicht klar.
Sollte solljahr = 2023 sein, dann ist afaKosten wohl sicher 0.
Hans was meinst du ?

LG Dirk

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste