Hallo
Das Feld dasDatum der Tabelle TABLA ist als Standarddatum definiert.
Im Formular F habe ich das Textfeld DAT mit Format Standarddatum.
Ich muss sicher stellen, dass das in DAT eingegebene Datum nicht in der Tabelle zu finden ist.
Mein Lösungsansatz mit:
dcount("*", "[TABLA]", "dasDatum = #" & format(DAT, "MM/DD/YYYY hh_mm_ss") & "# ")
funktioniert nicht: ich erhalte den LZ 13 - Typen unverträglich
Ich vermute, es liegt an der Zeit-Formatierung; habe es auch (erfolglos) mit "hh.mm.ss" versucht.
Kann mir jemand bitte helfen?
Walter
Hallo,
siehe hierzu:
https://www.donkarl.com?FAQ6.8
Dass hier wirklich ein Sekundenvergleich sinnvoll ist kann ich fast nicht glauben.
Außerdem sprichst Du von einem Datum und nicht Datum mit Zeit.
ich dachte das sei klar: Standarddatum ist doch Datum mit Zeit?
Auch wenn nur die Stunde berücksichtig wäre,, habe ich keine Lösung...
Hallo,
ist sicher, dass auch die Uhrzeit mit erfasst wird und berücksichtigt werden soll?
Dcount("*", "TABLA", "dasDatum = " & Format(Me!DAT, "\#mm/dd/yyyy hh:nn:ss\#"))
"Standarddatum" ist lediglich ein Format und kein Datentyp (Datum/Uhrzeit)
Hallo,
Du schreibst doch, dass Du ein
Datum eingibst.
Zitat von: undefinedIch muss sicher stellen, dass das in DAT eingegebene Datum
Wo kommt da die Zeit her, wenn Du ein Datum eingibst?
Deine Angaben sind eher verwirrend.
Prüfe mal beide Tabellen, ob überhaupt eine Zeit vorhanden ist. Standarddatum erzeugt nicht automatisch die Zeit.
(Meine Antwort wurde wegen TimeOut ins Nirvana geschickt. Ich versuche es nochmals)
Danke Klaus.
Die Eingabe in DAT wird schon geprüft, es ist ein Datum.
Die Zeit kann auch eigegeben werden: >5.3.21 12:05< funktioniert (wird beim Feld-Verlassen in >05.03.2021 12:05:00< umgewandelt).
Danke Klaus.
Habe dein Vorschlag im Direktfenster ausprobiert:
datum = 05.03.2022 16:29:19
?dcount("*",[TABLA], "dasDatum = " & format(datum, "\#mm/dd/yyyy hh:mm:ss\#") )
gleicher Fehler...
Ja, die Uhrzeit ist wichtig, vielleicht nicht auf die Sekunde genau, aber die Stunde auf jeden Fall; das Problem besteht trotzdem, oder?
Hallo,
Wie heißt das Tabellenfeld nun? Jetzt nennst Du es "datum".
Und: Welchen "Datentyp" hat das Datums-Feld in der Tabelle?
Sorry, es sollte natürlich dasDatum heissen, wo heisst auch das Datum/Uhrzeit-Feld mit Format Standarddatum in der Tabelle
Hallo,
mit dem Format kannst du hier nicht arbeiten.
Du musst das reine Datum vergleichen und die Stunde. Und zwar für beide Tabellenfelder.
Die Datumszuweisung in #9 ist falsch.
Und zeige den Code immer vollständig und keine Schnipsel.
Wie erhalte ich in der Bedingung die Stunde von Tabellen-Feld? Mit CHour(dasDatum) oder ähnlich? Welche Funktionen stehen mir im sql zur Verfügung? Im vba ist das alles machbar
Hallo,
wenn schon so, dann:
Dim datDatum as Date
datDatum = #03/05/2022 16:29:19#
?dcount("*","TABLA", "dasDatum = " & Format(datDatum, "\#mm/dd/yyyy hh:nn:ss\#") )
Wenn Minuten und Sekunden ignoriert werden sollen, dann so (quick& dirty, nicht empfohlen):
?dcount("*","TABLA", "Format(dasDatum,'mm/dd/yyyy hh') = '" & Format(datDatum, "mm/dd/yyyy hh") & "'" )
Ich versuch es später. melde mich Morgen.
Danke.
Vermutlich solltest Du genauer beschreiben, wie es zu den Werten in Deiner Tabelle und im Formulartextfeld kommt.
Abgesehen von einer richtigen Syntax, die verwenden wäre, ist es schwierig,
- zwei DateTime-Werte mit Sekundengenauigkeit zum Vergleich auf Gleichheit zu bringen (oder bei guter Trefferwahrscheinlichkeit Lotto spielen)
- Zeitanteile unterliegen der Fließkommaproblematik. Was optisch gleich aussieht, kann mathematisch unterschiedlich sein.
ZitatIch muss sicher stellen, dass das in DAT eingegebene Datum nicht in der Tabelle zu finden ist.
Ein sinnvoller Weg könnte sein, auf Freieingabe zu verzichten und über eine Auswahl noch nicht vorhandene und gewünschte Werte anzubieten.
Also:
Dim datDatum as Date
datDatum = #03/05/2022 16:29:19#
geht gar nicht: Kompilationsfehler: Syntaxfehler
Aber bei der Eingabe von >datDatum = #2022/03/05 16:29:15#<
entstand (beim FocusVelust) >#5/3/2022 4:29:19 PM#< - und das wird akzeptiert! (Ob März oder Mai gemeint ist, lasse ich mal sein)
Habe es mit record sets versucht:
Dim datDatum As Date
Dim rsTab As DAO.Recordset
Set rsTab = CurrentDb.OpenRecordset("TABLA", dbOpenDynaset)
datDatum = #3/5/2022 4:29:15 PM#
rsTab.FindFirst ("Datum = " & datDatum)
Debug.Print rsTab!Meldungsnummer 'ein Feld aus der Tabelle
und ich weis, dass es ein Satz gibt mit dieser DatumZeit - aber ich erhalte wieder ein Fehler, diesmal LZ3077 "Syntaxfehler in Zahl in Ausdruck" - beim Ausführen der Zeile >rsTab.FindFirst ("Datum = " & datDatum)<...
JuHui! Habe einen Erfolg erzielt:
rsTab.FindFirst ("format(Datum, 'MM/DD/YYYY hh:mm') = '" & "3/5/2022 4:29" & "' ")
bringt keinen Fehler mehr, also muss ich nur noch mit dem Text des Textfeldes im Format vergleichen (auch mit den Sekunden klappt es, aber das ist ja, wie ihr alle bemerkt habt, unsinnig,
Also, nochmals Danke Klaus und Franz
P.S. Wo ist der Knopf "Gelöst"? (Da habe ich offensichtlich einen Knopf, wie man eidgenössisch sagt)
Hallo,
für den direkten Vergleich kannst Du die Formatsonderzeichen weg lassen.
rsTab.FindFirst ("format(Datum, 'MMDDYYYYhhmm') = '" & "030520220429" & "'")
Der von Dir in #14 gezeigte Ausdruck kann nicht funktionieren. Du hast ja jetzt Textvergleich und wenn vorn der Monat, Tag und Stunde 2stellig sind, muss es im Vergleich auch 2stellig sein.
Mit "3/5/2022" wird der "03/05/2022" nicht gefunden.