Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

DatumZeit-Feld in sql-Vergelich

Begonnen von Walterio, März 05, 2022, 18:45:02

⏪ vorheriges - nächstes ⏩

Walterio

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

MzKlMu

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.
Gruß Klaus

Walterio

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...

DF6GL

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)


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

#4
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.
Gruß Klaus

Walterio

(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?

DF6GL

Hallo,


Wie heißt das Tabellenfeld nun? Jetzt nennst Du es "datum".

Und: Welchen "Datentyp" hat das Datums-Feld in der Tabelle?


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Walterio

Sorry, es sollte natürlich dasDatum heissen, wo heisst auch das Datum/Uhrzeit-Feld mit Format Standarddatum in der Tabelle
 

MzKlMu

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.
Gruß Klaus

Walterio

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

DF6GL

#10
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") & "'"  )
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Walterio

Ich versuch es später. melde mich Morgen.

Danke.

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

Walterio

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)<...

Walterio

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)