Seite 2 von 4

Re: Sqlite und sum

Verfasst: 27.12.2013 22:12
von STARGÅTE
was ist OP?

Re: Sqlite und sum

Verfasst: 27.12.2013 22:17
von gnaps
Hallo Leute,

habe immer noch 0.

bei folgendem Code

Code: Alles auswählen

    If DatabaseQuery(#DB,"Select sum(km) from Besuchdaten where BesuchAdresseid = "+Str(IDAdresse.i)+" GROUP BY BesuchAdresseid" )
      NextDatabaseRow(#DB)
      GesamtkilometerAdresse.l=GetDatabaseLong(#DB,0)
      Debug "OK"
      Debug GesamtkilometerAdresse.l
    Else
      Debug DatabaseError()
    EndIf 

Debugfenster zeigt OK und 0.

Stargate: ich habe die Spalte IDAdresse auf BesuchAdresseid geändert.

Re: Sqlite und sum

Verfasst: 27.12.2013 22:21
von Kiffi
Derren hat geschrieben:Kiffi: Ja, eben. Den Rückgabewert "debuggen" ist doch ein logischer Schritt, wenn die Auswertung fehl schlägt.

"Debug DatabaseQuery()" gibt doch ganz offensichtlich "0" aus. Von daher ist dein Code natürlich lieb gemeint, hilft ihm aber auch nicht weiter. Weil er gar nicht ausgeführt wird.
:lol: verstehe ich noch immer nicht. Wo habe ich denn was von "Debug DatabaseQuery()" geschrieben?

gnaps ging ja davon aus, dass DatabaseQuery() die Summe der Kilometer zurückgibt. In meinem Posting habe ich darauf hingewiesen, dass dem nicht so ist.

Grüße ... Kiffi

Re: Sqlite und sum

Verfasst: 27.12.2013 22:30
von gnaps
Hi Leute,

was mich hier stutzig macht ist

Code: Alles auswählen

GesamtkilometerAdresse.l=GetDatabaseLong(#DB,0)
Speziell die GetDatabaseLong(#DB,0) Anweisung auf die Spalte 0.
Wiso 0. Welche Spalte 0.

Sorry, verstehe das nicht.

Gruß
gnaps

Re: Sqlite und sum

Verfasst: 27.12.2013 22:36
von Derren
OP = Original Poster in dem Fall gnaps.
Kiffi, DU hast nichts von Debug geschrieben, aber gnaps schon.
ich habe jetzt folgenden Code

Code: Alles auswählen

    GesamtkilometerAdresse.i=DatabaseQuery(#DB,"Select sum(km) from Besuchdaten where BesuchAdresseid = "+Str(IDAdresse.i)+" GROUP BY BesuchAdresseid" )
    Debug GesamtkilometerAdresse.i
Das Ergebiss ist aber immer 0. Was mache ich jetzt noch falsch ?
Was gibt's daran nicht zu verstehen? Der Rückgabewert von DatabaseQuery ist NULL. Also wird alles was nach

Code: Alles auswählen

If DatabaseQuery(
steht überhaupt nicht ausgeführt.
Du hast ja selber die Hilfe zitiert. Gibt bei Erfolg einen Wert ungleich 0 zurück. Falls die Funktion fehlschlägt wird 0 zurückgegeben. Und das scheint hier der Fall zu sein. Also ist die Query einfach nicht richtig.

Stargate hat das Problem erkannt, aber an mich adressiert und nicht an gnaps.
@Derren
Du musst natürlich die SQL Abfrage an deine Tabelle anpassen.
Heißt die eine Spalte wirklich "BesuchAdresseid" ??

Re: Sqlite und sum

Verfasst: 27.12.2013 23:02
von Kiffi
@Derren: Ich glaube, heute kommen wir nicht mehr auf einen grünen Zweig. ;-)

@gnaps: Habe mal folgenden Beispielcode zusammengebastelt. Bei mir wird '90' (Kilometer) ausgegeben. Vielleicht hast Du noch einen Knoten in Deinem Code?

Code: Alles auswählen

EnableExplicit

Define DB
Define IDAdresse
Define GesamtkilometerAdresse

UseSQLiteDatabase()

DB = OpenDatabase(#PB_Any, ":memory:", "", "", #PB_Database_SQLite)

DatabaseUpdate(DB, "Create Table Besuchdaten (ID INTEGER, BesuchAdresseid INTEGER, Datum TEXT, km INTEGER)")

DatabaseUpdate(DB, "Insert Into Besuchdaten (ID, BesuchAdresseid, Datum, km) Values (1, 1, '01.01.2013', 10)")
DatabaseUpdate(DB, "Insert Into Besuchdaten (ID, BesuchAdresseid, Datum, km) Values (2, 1, '02.01.2013', 20)")
DatabaseUpdate(DB, "Insert Into Besuchdaten (ID, BesuchAdresseid, Datum, km) Values (3, 1, '03.01.2013', 30)")
DatabaseUpdate(DB, "Insert Into Besuchdaten (ID, BesuchAdresseid, Datum, km) Values (4, 2, '04.01.2013', 40)")
DatabaseUpdate(DB, "Insert Into Besuchdaten (ID, BesuchAdresseid, Datum, km) Values (5, 2, '05.01.2013', 50)")

IDAdresse = 2

If DatabaseQuery(DB, "Select Sum(km) From Besuchdaten Where BesuchAdresseid = " + Str(IDAdresse))
	NextDatabaseRow(DB)
	GesamtkilometerAdresse = GetDatabaseLong(DB, 0)
	Debug "OK"
	Debug GesamtkilometerAdresse
Else
	Debug DatabaseError()
EndIf 

Re: Sqlite und sum

Verfasst: 27.12.2013 23:14
von gnaps
Hi Leute,

es war mein Fehler !

Ich habe die Spalten meiner Tabelle ohne klare Deklaration (String,Integer usw.) erstellt.

Habe das ganze nun gerichtet und schon klappt es

Danke Kiffi, dein Code hat mich geweckt.

Sorry und Danke an alle.

Gruß gnaps

Re: Sqlite und sum

Verfasst: 27.12.2013 23:22
von Kiffi
gnaps hat geschrieben:Ich habe die Spalten meiner Tabelle ohne klare Deklaration (String,Integer usw.) erstellt.
daran kann es nicht gelegen haben. SQLite ist ein DB-System,
bei dem man die Deklaration auch weglassen kann. Deswegen
gefällt mir SQLite auch so sehr. ;-)

Code: Alles auswählen

DatabaseUpdate(DB, "Create Table Besuchdaten (ID, BesuchAdresseid, Datum, km)")
... funktioniert genauso gut.

Aber egal! Wenn es jetzt funktioniert, dann :allright:

Grüße ... Kiffi

Re: Sqlite und sum

Verfasst: 27.12.2013 23:28
von gnaps
Hi Leute,

ich muss hier noch einmal eine Frage stellen, hat aber mit dem vorhergehenden nichts zu tun.

Ich habe in meiner Tabelle Besuchdaten ja die Spalte Datum.
Das Datum speichere ich als ganze Zahl z.B. 1385769600 = 30.11.2013.

Ich möchte Auswertungen definieren die mir folgendes auswerfen.

Besuche aktuelle Woche
Besuche letzte Woche
Besuche aktueller Monat
Besuche letzter Monat
Besuche aktuelles Quartal
Besuche letztes Quartal

ist das möglich ?

Gruß
Gnaps

Re: Sqlite und sum

Verfasst: 27.12.2013 23:33
von gnaps
Hi Kiffi,

das dachte ich auch, desshalb habe ich nie eine Deklaration angegeben.

Komisch ist, ich habe den Code nicht geändert sondern nur mit einem SQL-Browser
meiner Km Spalte den "Integer" gegeben und dann ging es.

Danke nochmals, Du hast mir sehr geholfen.

Beachte auch mein Post voran, hast Du eine Idee?

Gruß
gnaps