Guten Abend!
Ich bin mir sicher, dass man mir hier im Forum helfen kann.
Ich suche ein SQL-Statement, welches in die dritte Spalte meiner
SQL-Tabelle "Test" einen Wert schreibt, sofern der Wert in Spalte "1"
beträgt:
Die Tabelle besteht aus drei Spalten:
- Datum
- Uhrzeit_1
- Uhrzeit_2
Sofern "Datum" dem heutigen Datum entspricht, soll in den jeweiligen
Eintrag in "Uhrzeit_2" die jetzige Uhrzeit eingetragen werden.
So habe ich zumindest die Tabelle generiert:
1
CREATE TABLE IF NOT EXISTS Test(Datum DATE, Uhrzeit_1 TIME, Uhrzeit_2 TIME);
Nun muss zum Schreiben in die Datenbank aber wie beschrieben noch ein
Statement angefügt werden, damit überhaupt in die Datenbank geschrieben
werden kann...
Ich habe zwei Button...
Um die GUI etwas zu erläutern:
Button-1 macht folgendes:
Schreibe in Spalte-1 das jetzige Datum,
Schreibe in Spalte-2 die jetzige Uhrzeit;
Button-2 soll folgendes machen:
Schreibe in Spalte-3 die jetzige Uhrzeit, ohne Spalte-1 und Spalte-2 zu
überschreiben, sofern Spalte-1 dem heutigen Datum entspricht.
Nach dem Drücken auf Button-2 sollen also 3 Werte vorliegen.
SQElitär schrieb:> Button-2 soll folgendes machen:> Schreibe in Spalte-3 die jetzige Uhrzeit, ohne Spalte-1 und Spalte-2 zu> überschreiben, sofern Spalte-1 dem heutigen Datum entspricht.
OnButton
update Test set Spalte-3 = {aktuelle Zeit} where Spalte-1 = {aktuelles
Datum}
versteht das Problem scheinbar nicht.
>Konkreter bitte
Beim Drücken auf "Kommen" kommt folgende Meldung in der IDE:
1
E/SQLiteLog: (1) near "now": syntax error
2
12-24 09:42:45.171 7790-7790/com.example.jk.zeiterfassung D/AndroidRuntime: Shutting down VM
3
12-24 09:42:45.181 7790-7790/com.example.jk.zeiterfassung E/AndroidRuntime: FATAL EXCEPTION: main
4
Process: com.example.jk.zeiterfassung, PID: 7790
5
android.database.sqlite.SQLiteException: near "now": syntax error (code 1): , while compiling: INSERT INTO Zeiterfassung VALUES('DATE('now'),TIME('now')';
Die Datenbank wäre sicher dankbar darüber zu wissen, in welche Felder
(Spalten) sie denn die Werte schreiben soll. Verschachtelte einfache
Hochkomma wird sie wahrscheinlich auch nicht mögen.
Achtung: Wenn du Datum und Uhrzeit in zwei Spalten speicherst, solltest
du auch die zugehörige Zeitzone dazu abspeichern.
Oder wie willst du erkennen ob bei einem Eintrag von 30.10.2016 02:30:00
Sommerzeit oder Winterzeit war?
Falls mit den Zeitpunkten gerechnet werden soll (wovon ich ausgehe)
würde ich empfehlen alles auf GMT-Timestamps zurück zu führen und bei
der Anzeige passend umrechnen.
VG
Roland
Hallo zusammen,
>db.execSQL("UPDATE Zeiterfassung SET Gehen = TIME(\'now\') WHERE Datum = >DATE(\'now\');");
Ok, jetzt funktioniert das! Danke!
>Achtung: Wenn du Datum und Uhrzeit in zwei Spalten speicherst, solltest>du auch die zugehörige Zeitzone dazu abspeichern.
Ja, dieses Problem versuchte ich mit folgender Zeile Code zu lösen.
Leider erscheinen die beiden Uhrzeiten nicht in der richtigen Zeitzone
(1 Stunde zu früh).
Wisst ihr, warum trotz dieser Zeile die Uhrzeit falsch gezeigt wird?
1
db.execSQL("CREATE TABLE IF NOT EXISTS Zeiterfassung(Datum DATETIME DEFAULT (DATETIME(CURRENT_TIMESTAMP, \'LOCALTIME\')), Kommen DATETIME DEFAULT (DATETIME(CURRENT_TIMESTAMP, \'LOCALTIME\')), Gehen DATETIME DEFAULT (DATETIME(CURRENT_TIMESTAMP, \'LOCALTIME\')), Arbeitszeit TEXT);");
Außerdem liefert mir beim Drücken auf "Zeiten ausgeben" die Textbox
nicht ALLE Einträge der Datenbank zurück sondern immer nur den letzten
:-(
SQElitär schrieb:> txt_zeitnachweis.setText(buffer.toString());
Das überschreibt den gesamten Text in "txt_zeitnachweis".
Wie wäre es mal probeweise damit, Dokumentation zu lesen?
Rufus Τ. F. schrieb:> Das überschreibt den gesamten Text in "txt_zeitnachweis".>> Wie wäre es mal probeweise damit, Dokumentation zu lesen?
das stimmt zwar, aber der string c sollte immer länger werden. (ist ja
eine schleife über die Zeilen der DB).
Ist also nur unsauber umgesetzt.
Also ich habe jetzt noch zwei Probleme:
- Die Zeitzone lässt sich nicht ändern bzw. die Uhrzeiten sind um eine
Stunde zu früh
- Die Datenbank-Entries werden nicht alle in der TextView angezeigt.
Wisst ihr, woran es liegen kann?
Danke schonmal und ein frohes Fest!