Zeiten aus DB verrrechnen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Doda2013.

    Zeiten aus DB verrrechnen

    Hallo,

    ich sitzte zurzeit an folgender Aufgabenstellung:

    Ich muss aus einer vorhandenen Datenbank (diese ist auch als mdb vorhanden) zwei Zeiten (Zeitpunkt A, Termin) miteinander Verrechnen.

    Wie schaffe ich es nun beide Zeiten per VB (button.click) miteinander zu subtrahieren. Dabei sind die Werte in folgender Form angegeben: TT.MM.JJJJ H:mm:ss (bsp: 21.02.2013 14:00:00). Die daten muss das Programm aus den Spalten rausziehen => Verrechnen => und in eine 3 Spalte (VorZeit) einfügen.

    Ich arbeite nicht oft mit VB und wäre über jede hilfe sehr dankbar.

    Viele Grüße

    Doda2013
    Was soll denn raus kommen? Access selber hat ja schon die Funktion DateDiff(intervall, DatumA, DatumB) integriert.

    Sprich bei ner Tabelle namens Tabelle1 mit den Spalten ZeitA und ZeitB:

    SQL-Abfrage

    1. SELECT DateDiff("d", ZeitA, ZeitB) As Differenz
    2. FROM Tabelle1;


    wirft dir als Beispiel die Differenz in Tagen aus.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Willkommen im Forum. :thumbup:
    Konvertiere beide Datum-Werte in DateTime-Werte, die kannst Du dann wie Zahlen voneinander subtrahieren, das Ergebnis ist ein TimeSpan-Wert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also als Ergebniss in Spalte 3 soll die differenz in Minuten sein. Es ist dabei wichtig das auch Negative werte angezeigt werden.

    Hier ein Beispiel

    A B Erg

    22.01.2013 14:00 22.01.2013 14:30 30

    22.01.2013 15:00 22.01.2013 14:30 -30



    Wie schaffe ich es also die Werte zu berechnen und abzuspeichern?

    SELECT datadiff("d", A, B) as Diff FROM tabelle

    "INSERT INTO Tabelle " &"(C) VALUES (datadiff)"

    so in der Art?
    Ich würds ganz simpel machen:

    SQL-Abfrage

    1. UPDATE Tabelle1 SET Tabelle1.ZeitC = DateDiff("n", Tabelle1.ZeitA, Tabelle1.ZeitB);


    "n" ist der Kenner für Minuten.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Ab Access 2007 kannst sogar logische Datenbankfelder hinterlegen ;)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    ich hab nun folgendes auf ein button.click event gelegt.



    cmd.CommandText =
    "UPDATE WKZ_Anfrage SET WKZ_Anfrage.WKZ_VORLAUF = DateDiff("n", WKZ_Anfrage.WKZ_ANTRAGSZEITPUNKT, WKZ_Anfrage.WKZ_WUNSCHTERMIN)"

    Dabei Zeigt mir der Kompilier bei "n" ein fehler an = end of erwartet.
    Ich doch auch nicht verwunderlich ;)

    Wenn du in VB nen Text übergibst, dann ist der in ""... Ich würd in der SQL Abfrage einfach mal auf ' umstellen :D
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Wat haste denn gebastelt?
    Der SQL Befehl ist bei ner normalen mdb so völlig in Ordnung.
    Obs Sinn macht oder nicht, sei mal dahin gestellt.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    PrivateSub Button1_Click(sender AsObject, e AsEventArgs) Handles Button1.Click

    Conn.Open()

    cmd.CommandText =
    "UPDATE WKZ_Anfrage SET WKZ_Anfrage.WKZ_VORLAUF = DateDiff('n', WKZ_Anfrage.WKZ_T_ANTRAGSZEITPUNKT, WKZ_Anfrage.WKZ_T_WUNSCHTERMIN)"
     Conn.Close()
    EndSub

    Er soll halt beim Button.Click die berechnung der diff erledigen und in die Spalte speichern
    ne doofe Frage... Aber wo führst du denn den Command aus? ;)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D