UPDATE ohne Extras --> SQL

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: UPDATE ohne Extras --> SQL

Re: UPDATE ohne Extras --> SQL

von F3K Total » Do, 15.03.2012 18:29

Hallo Calabrese,
wenn Du die Arbeitszeit in die Tabelle hineinschreiben möchtest, geht das per Makro.
Angenommen die Spalte 3 Deiner Tabelle ist die Spalte mit dem Arbeitsbeginn [TIMESTAMP], Spalte 4 das Arbeitsende [TIMESTAMP] und Spalte 5 [TIME] soll die Dauer zeigen, dann geht, wenn du ohne Unterformular arbeitest und dein Hauptformular im Entwurfsmodus den Namen MainForm hat:

Code: Alles auswählen

Sub S_Save_Row
dim h as integer
dim m as integer
dim sh as string
dim sm as string
oform = thiscomponent.drawpage.Forms.MainForm
if oform.isnew then oform.insertrow else oform.updaterow
otstmpstart = oform.getstring(3) 'Spalte 3
otstmpend = oform.getstring(4)'Spalte 4
otimeperiodMin = DateDiff("n", CDate(otstmpstart), CDate(otstmpend))
h = (otimeperiodMin-(otimeperiodMin mod 60))/60
m = otimeperiodMin mod 60
if h < 10 then sh="0"+h else sh=h
if m < 10 then sm="0"+m else sm=m
oform.updatestring(5,sh+":"+sm+":00")'Spalte 5
oform.updaterow
End Sub
Dieses Makro hängst Du an "Aktion ausführen" eines Buttons.
Nicht getestet: Du kannst ja versuchen das Makro für Deine o.a. Lösung ohne Timestamp umzubauen.
Gruß R

Re: UPDATE ohne Extras --> SQL

von calabrese » Mi, 14.03.2012 11:12

Hallo Robert,

du meinst also, Berechnungen sollte ich niemals in die Datenbank eintragen, sondern immer durch Abfragen berechnen lassen? Gibt das nicht irgendwann einen Performanzverlust? Ich dachte, wenn ich alle Dienste, die es gibt in einer Tabelle einmal deklariere und die Dauer berechne, könnte die Tabelle mit den Einsatzzeiten ja immer darauf zurückgreifen...

Zu deinem "Problem" mit Mitternacht (auch ich muss über Mitternacht gehen...). Probier es mal so (ganz einfach):

Code: Alles auswählen

SELECT 
"Anfang", "Ende", DATEDIFF( 'mi', "Anfang", "Ende" ) AS "Minuten", 
CASE 
WHEN 
DATEDIFF( 'mi', "Anfang", "Ende" ) < 0 
THEN 
DATEDIFF( 'mi', "Anfang", "Ende" ) / 60.00 + 24 
ELSE 
DATEDIFF( 'mi', "Anfang", "Ende" ) / 60.00 
END 
AS "Stunden" FROM "Dienste_gesamt"
Dann brauchste auch keinen Zeitstempel. Wenn das Ergebnis kleiner 0 ist, werden einfach 24 Stunden draufgepackt!

Aber achte auf den richtigen Teiler: DATEDIFF liefert ein Integer zurück. Und Integer/Integer=Integer! Aber wenn du 60.00 nimmst, dann kriegste auch bsp. 6,25 Stunden geliefert...

Schönen Gruß

Calabrese

UPDATE ohne Extras --> SQL

von calabrese » Di, 13.03.2012 14:12

Schönen Tag Ihr alle,

ich sitz hier und möchte für meine Kollegen eine Dienstabrechnung erstellen. Soll für Windows und Mac funktionieren, deshalb Base.
Nun sind die meisten der Kollegen schon beim Thema Datenbank komplett überfordert und denken sowieso immer nur an eine Art Excel. Daher kann ich die Leute nicht mit irgendwelchen manuellen SQL-Aufrufen erschrecken.

Nun also meine Frage ganz allgemein: Gibt es irgendeine Möglichkeit, in einer Tabelle die Dauer eines Dienstes automatisch zu berechnen OHNE das ich die UPDATE Aufruf manuell über Extras --> ... vornehmen muss? Ich mein, was ist das für eine Datenbank, wenn ich nur SELECT-Abfragen stellen kann?

Ich wünsche mir, dass die Kollegen einfach nur ihren Dienstbeginn und Dienstende eintragen müssen und auf Knopfdruck der UPDATE Befehl ausgeführt wird.

Oder anders gefragt: Ich kann ja eine Anfrage der Art "Dienstende"-"Dienstbeginn" AS "Dauer" erstellen und anschauen. Aber wie kriege ich die "Dauer" dann auch in den Datensatz rein?

Wenn es nicht geht: Was habt ihr noch für Vorschläge für Datenbanken, die auf Mac und Windows laufen?

Vielen Dank für fleißige Mithilfe

Calabrese

Nach oben