Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Walterio am März 05, 2022, 18:45:02

Titel: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 18:45:02
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
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: MzKlMu am März 05, 2022, 18:54:25
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.
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 18:57:06
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...
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: DF6GL am März 05, 2022, 19:00:54
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)


Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: MzKlMu am März 05, 2022, 19:02:30
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.
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 19:35:13
(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?
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: DF6GL am März 05, 2022, 19:42:35
Hallo,


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

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


Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 19:47:17
Sorry, es sollte natürlich dasDatum heissen, wo heisst auch das Datum/Uhrzeit-Feld mit Format Standarddatum in der Tabelle
 
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: MzKlMu am März 05, 2022, 19:48:59
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.
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 19:54:53
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
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: DF6GL am März 05, 2022, 20:01:00
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") & "'"  )
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 20:07:14
Ich versuch es später. melde mich Morgen.

Danke.
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: ebs17 am März 05, 2022, 21:34:18
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.
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 21:58:03
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)<...
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: Walterio am März 05, 2022, 22:32:33
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)
Titel: Re: DatumZeit-Feld in sql-Vergelich
Beitrag von: MzKlMu am März 06, 2022, 00:49:51
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.