Sqlite und sum

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Sqlite und sum

Beitrag von Kiffi »

gnaps hat geschrieben:Beachte auch mein Post voran, hast Du eine Idee?
da werfe ich Dir einfach mal das PB - AddDate() vor die Füße.

Auf SQL-Seite kannst Du mit > (größer als) und < (kleiner als) oder BETWEEN x AND y arbeiten.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Sqlite und sum

Beitrag von HeX0R »

[OT]
Kiffi hat geschrieben:@Derren: Ich glaube, heute kommen wir nicht mehr auf einen grünen Zweig. ;-)
Ich wollte nur anmerken, dass Derren (bevor der Gute noch aus dem Fenster springt :mrgreen:) völlig Recht hatte.
Das nur am Rande, macht nur weiter ;)

[Edit]
Schnell noch was dazuschreiben, bevor das auch falsch verstanden wird:
Kiffis Umbau war aber natürlich auch korrekt.
[/OT]
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Sqlite und sum

Beitrag von Derren »

Danke Hex0R!

Warum ist das Ergebnis hier immer 0?

Code: Alles auswählen

Procedure myDumbProc(query.s)
  If query = "richtig"
    ProcedureReturn #True
  Else 
    ProcedureReturn #False
  EndIf 
EndProcedure 

myVar.i = myDumbProc("Warum geht das nicht?")
Debug myVar.i ; Immer 0... Was stimmt denn hier nicht?
Das Ergebnis sollte immer abgefragt werden

Code: Alles auswählen

If myDumbProc("Warum geht das nicht?")
  Debug "Siehste? Geht doch, Grüße Kiffi"
EndIf 


Naja, habe aber nicht den Nerv mich mit dem Datenbankgedöns in PB auseinander zu setzen solange ich es nicht selber brauche. Würde jetzt viel zu viel Zeit kosten mir genau so eine Datenbank wie gnaps sie hat zu basteln etc.
Deswegen tut es mir leid, dass ich nicht wirklich behilflich sein kann. Wollte nur anmerken, dass die Feuerwehr hier den Hydranten aufschraubt obwohl doch eigentlich eine Katze vom Baum geholt werden müsste.

edit: Ja, Kiffi's Code war natürlich korrekt und auch hilfreich. Er hat ja recht damit, dass der Rückgabe wert überprüft werden sollte. Aber das tut in dem Fall ja schon "Debug". Der Wert wird halt von Programmierer überprüft und nicht von der Software. Dafür ist die Debug Funktion ja da.
Signatur und so
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag von gnaps »

Hi Kiffi,

danke für AddDate() das bekomme ich hin.

Wenn ich dann wie du schreibst
Kiffi
Auf SQL-Seite kannst Du mit > (größer als) und < (kleiner als) oder BETWEEN x AND y arbeiten.
das ganze abfrage.

Wie bekomme ich da die Gesamtkilometer ? :D

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 nochmal,

zu früh gefreut.

Ich habe 2 Km Werte

20,50 und 20,75

berechnet werden 40

was jetzt, genug PB gemacht, ab ins Bett, morgen gehts weiter

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 »

<OT>

@HeX0R & @Derren,

ich muss zugeben, dass heute ein harter Tag für mich war und ich vielleicht
deswegen ein bisschen schwer von Kapee bin. Ich schnalle es auf jeden Fall
immer noch nicht, was Ihr mir versucht mitzuteilen.

Nochmal für mich zum Mitschreiben:

Wir haben eine Tabelle 'myTable' mit diversen Feldern.

Jetzt mache ich eine Abfrage:

Code: Alles auswählen

Result = DatabaseQuery(DB, "Select * From myTable")
-> Result ist in diesem Fall immer ungleich 0. Eben weil die Abfrage erfolgreich durchgeführt wurde. Und das unabhängig davon, ob in der Tabelle was steht oder nicht.

Code: Alles auswählen

Result = DatabaseQuery(DB, "Select * From myTable Where 1=2")
-> auch hier ist Result immer ungleich 0, auch wenn die Abfrage eigentlich unsinnig ist (1=2) und deshalb keine Treffer liefert.


Jetzt mache ich eine andere Abfrage:

Code: Alles auswählen

Result = DatabaseQuery(DB, "Select * From myTabel")
-> Result ist in diesem Fall immer 0, weil es die Tabelle 'myTabel' nicht gibt. (DatabaseError() liefert: "no such table: myTabel")

Code: Alles auswählen

Result = DatabaseQuery(DB, "Select * From myTable Where")
-> Result ist in diesem Fall immer 0, weil die Abfrage syntaktisch unvollständig / fehlerhaft ist. (DatabaseError() liefert: "near "Where": syntax error")

Zusammengefasst: Result liefert nur eine Aussage, ob die Abfrage erfolgreich ausgeführt werden
konnte oder nicht. Result liefert keine Aussage über etwaige Treffer, die eine Abfrage erzielt.

Stimmen wir dahingehend erst einmal überein?

</OT>

Grüße ... Kiffi
a²+b²=mc²
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Sqlite und sum

Beitrag von Derren »

Darin stimmen wir überein :)
Und jetzt sagt gnaps, dass Result bei ihm immer 0 ist. Also stimmt ja was mit der Query nicht.
Also bringt das hier ja auch nichts^^

Code: Alles auswählen

If DatabaseQuery(DB, "Select * From myTable Where") ; Dein 4tes Beispiel
    ;....
Endif

@gnasp: Aus dem ganzen hin und her, jetzt folgender Code:
Was wird dir im Debugger angezeigt?

Code: Alles auswählen

If DatabaseQuery(#DB,"Select sum(km) from Besuchdaten where BesuchAdresseid = "+Str(IDAdresse.i)+" GROUP BY BesuchAdresseid" )
  NextDatabaseRow(#DB)
  GesamtkilometerAdresse = GetDatabaseLong(#DB, 0)
  Debug GesamtkilometerAdresse
Else
  Debug DataBaseError()
Endif
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 hat geschrieben:Und jetzt sagt gnaps, dass Result bei ihm immer 0 ist. Also stimmt ja was mit der Query nicht.
Gnarf! Bild

Jetzt ist der Groschen bei mir endlich gefallen.

Danke für die Aufklärung & nix für ungut ;-) ... Kiffi
a²+b²=mc²
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Sqlite und sum

Beitrag von gnaps »

Hi Leute,

Code: Alles auswählen

If DatabaseQuery(#DB,"Select sum(km) from Besuchdaten where BesuchAdresseid = "+Str(IDAdresse.i)+" GROUP BY BesuchAdresseid" )
  NextDatabaseRow(#DB)
  GesamtkilometerAdresse = GetDatabaseLong(#DB, 0)
  Debug GesamtkilometerAdresse
Else
  Debug DataBaseError()
Endif
Die Anweisung stimmt, jedoch bekomme ich nicht den richtigen Wert.

ich habe zwei Datensätze
Datensatz1 = 20.75km
Datensatz2 = 3.05km

in PB bekomme ich 23km zurück.
im SQL-Browser werden 23,8 angezeigt

was mache ich nun wieder falsch ?

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 nochmal,

Code: Alles auswählen

If DatabaseQuery(#DB,"Select sum(km) from Besuchdaten where BesuchAdresseid = "+Str(IDAdresse.i)+" GROUP BY BesuchAdresseid" )
  NextDatabaseRow(#DB)
  GesamtkilometerAdresse.f = GetDatabaseFloat(#DB, 0)
  Debug GesamtkilometerAdresse.f
Else
  Debug DataBaseError()
Endif

Debug StrF(GesamtkilometerAdresse.f,2)
jetzt kommen bei den zwei Datensätze
Datensatz1 = 20.75km
Datensatz2 = 3.05km

23.80 zurück.
:D jetzt passt es
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Antworten