Hallo!
Ich brauche eure Hilfe! Bin gerade dabei eine Aktualisierungsabfrage zu basteln. Diese soll mein Feld "Termin" in der Tabelle mit dem Datum Jetzt() vergleichen und die Differenz der Tage neu berechnen. Dafür habe ich eigene Felder in der Tabelle (im Plan, bald fällig, überfällig).
Meine Formel dafür ist
DatDiff("t";[Logbuch]![Termin];Jetzt();7;"vbFirstJan1")
So sieht die SQL Anweisung aus
UPDATE Logbuch SET Logbuch.im_Plan = DateDiff("t",[Logbuch]![Termin],Now(),7,"vbFirstJan1")
WHERE (((Logbuch.Status)<>"Erledigt"));
Aber leider bekomme ich eine Fehlermeldung:
Typumwandlungsfehler
Ich verstehe leider nicht warum. Mein Zielfeld ist ein Zahlenfeld/Eingabe erforderlich NEIN
Woran könnte es sonst noch liegen?
Danke im Voraus für eure Rückmeldungen.
lg
Mary
Hallo,
die Fehlermeldung sagt ja aus, dass der Typ nicht umgewandelt werden kann. Welcher Wert steht denn in [Logbuch]![Termin]?
Dann fällt auf, dass die SQL-Syntax so nicht stimmen kann, darin wird immer die englische Notation verwendet, also d für Tag, nicht t. Und beim Vergleich würde ich ohne die Uhrzeit arbeiten also mit Date. Und die letzten Argumente ohne Anführungszeichen.
Wolltest du wirklich den Samstag als 1. Wochentag nehmen (7)? Für Montag gilt die 2.
UPDATE Logbuch
SET Logbuch.im_Plan = DateDiff("d",[Logbuch]![Termin],Date(),2,2)
WHERE Logbuch.Status<>"Erledigt";
Hallo el_gomero!
Mein Terminfeld ist ein Datum/Uhrzeit Feld. Das soll/muss auch so bleiben... :-(
lg
Zitat
Mein Terminfeld ist ein Datum/Uhrzeit Feld. Das soll/muss auch so bleiben... :
Da spricht ja auch nix gegen, trotzdem beantwortet das meine Frage nicht wirklich. Welcher Wert steht zB im ersten DS, der zu aktualisieren ist? Kann das Feld auch leer sein?
Hallo,
wie definiert sich denn im Plan, bald fällig, überfällig ?
Die Tabellenfelder dafür sind überflüssig, so etwas rechnet man immer über eine Abfrage ohne Tabelleneintrag. Die Tabelle müsste ja jeden Tag aktualisiert werden und das kann es nicht sein.
Was genau willst Du denn sehen bzw. eintragen ?
Hallo,
ungeachtet der begründeten Einwände:
Wenn
[Logbuch]![Termin]
die Referenz auf ein Tabellenfeld sein soll, muss in SQL der Punkt verwendet werden:
[Logbuch].[Termin]
oder hier in diesem Beispiel den Tabellennamen einfach weglassen:
[Termin]
Hi,
Access-SQL akzeptiert auch das Ausrufezeichen.
Hi,
in der Tat :'(
Hallo und danke an ALLE Beteiligten!
Ich habe es jetzt wie folgt gelöst:
UPDATE Logbuch SET Logbuch.im_Plan = DateDiff("d",Now(),[Termin]), Logbuch.bald_fällig = DateDiff("d",Now(),[Termin]), Logbuch.überfällig = DateDiff("d",Now(),[Termin])
WHERE (((Logbuch.Status)<>"erledigt"));
Danke für den Hinweis mit der Berechnung mittels Abfrage (im_Plan, usw.). Habe es (leider) anders gelöst mit einer VBA Berechnung direkt im Formular, welches bei speichern alle Werte in die Tabelle einträgt.
lg
Mary