German SQL Abfrage SUM Funktion

Paulsche

Well-Known Member
Licensed User
Longtime User
Hallo,

warum funktioniert diese Funktion nicht ?

B4X:
      Dim jahrliter As Int
      SQLtnk.ExecQuery("select sum(tachostand) as jahrliter from Tankdaten")
      Msgbox(jahrLiter,"")

Jahrliter hat immer den Wert 0

Tachostand ist die Spalte, Tankdaten die DB.
 

corwin42

Expert
Licensed User
Longtime User
Die Variable jahrliter wird ja auch nirgendwo gefüllt.

ExecQuery liefert einen Cursor, mit dem Du auf die Daten zugreifen kannst und schreibt nirgends direkt in irgendwelche Variablen rein.

Für diesen speziellen Fall ist es einfacher, ExecQuerySingleResult zu benutzen:

B4X:
Dim jahrliter As Int
jahrliter = SQL1.ExecQuerySingleResult("select sum(tachostand) as jahrliter from Tankdaten")

Das funktioniert aber nur, wenn der Select nur exakt einen Wert zurückliefert, was er hier ja tut.

PS: Vermutlich hast Du recht wenig Erfahrung mit SQL. Ich würde Dir empfehlen, so ein Tool wie SQLiteAdmin zu benutzen, um mal ein wenig Erfahrung mit SQL zu bekommen. Mit dem Tool kannst Du eine SQLite Datenbank erstellen, Tabellen anlegen, mit Daten befüllen und Select-Statements absetzen. Da kann man dann schön mit rumprobieren. Du kannst dann auch Deine Datenbank von Deiner Anwendung öffnen und damit arbeiten und testen.
 

Paulsche

Well-Known Member
Licensed User
Longtime User
Hallo Markus,

danke, ja du hast Recht, mit SQL hatte ich bis jetzt keine Erfahrung.
Werd mir mal das Admintool runterladen und mit Abfragen rumspielen.

Dein Beispiel funktioniert soweit, ich denke mit dieser SUM Funktion ist es einfacher und schneller Summen aus der DB zu erzeugen als mit einer Schleife
wo ich alle Datensätze durchlaufe.
 

corwin42

Expert
Licensed User
Longtime User
Dein Beispiel funktioniert soweit, ich denke mit dieser SUM Funktion ist es einfacher und schneller Summen aus der DB zu erzeugen als mit einer Schleife wo ich alle Datensätze durchlaufe.
Auf jeden Fall.
 
Top