Sqlite und sum

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Sqlite und sum

Beitrag von STARGÅTE »

was ist OP?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag 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.
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Sqlite und sum

Beitrag 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
a²+b²=mc²
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag 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
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Sqlite und sum

Beitrag 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" ??
Signatur und so
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Sqlite und sum

Beitrag 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 
a²+b²=mc²
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag 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
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Sqlite und sum

Beitrag 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
a²+b²=mc²
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag 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
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag 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
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Antworten