Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mariaz3565 am September 24, 2015, 12:35:27

Titel: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: mariaz3565 am September 24, 2015, 12:35:27
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
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: el_gomero am September 24, 2015, 13:03:06
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";

Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: mariaz3565 am September 24, 2015, 13:19:18
Hallo el_gomero!

Mein Terminfeld ist ein Datum/Uhrzeit Feld. Das soll/muss auch so bleiben... :-(

lg
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: el_gomero am September 24, 2015, 13:23:02
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?
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: MzKlMu am September 24, 2015, 13:28:42
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 ?
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: DF6GL am September 24, 2015, 15:21:34
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]
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: MaggieMay am September 24, 2015, 15:46:52
Hi,

Access-SQL akzeptiert auch das Ausrufezeichen.
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: DF6GL am September 27, 2015, 09:02:02
Hi,

in der Tat     :'(
Titel: Re: Aktualisierungsabfrage DatDiff Typumwandlungsfehler
Beitrag von: mariaz3565 am September 30, 2015, 12:05:35
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