Neuigkeiten:

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

Mobiles Hauptmenü

Problem mit Datums Abfrage

Begonnen von J.D, Januar 24, 2020, 16:47:14

⏪ vorheriges - nächstes ⏩

J.D

Hallo Forum,
ich habe folgende abfrage...
SELECT Produktionsdaten.Datum
FROM Produktionsdaten
WHERE (((Produktionsdaten.[Datum]) Like [Forms].[Abfrage].[Datum]))
GROUP BY Produktionsdaten.Datum
ORDER BY Produktionsdaten.Datum DESC;


Dieses liefert mir jedoch nur ein ergebniss wenn ich das Datum so 22.01.2020 19:01:51 eingebe!
Das Formular ist auf Datum, kurz formatiert...

Wie bekomme ich das Datum auf kurz???

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

MzKlMu

#1
Hallo,
Du hast in Deiner Tabelle im Datum bereits die Zeit.
Wenn Du diese nicht brauchst, so solltest Du diese bereits in der Tabelle eliminieren.
Und prüfen (bzw. verhindern) dass die Zeit  geschrieben wird.

Ansonsten versuche das mal so:
SELECT Datum
FROM Produktionsdaten
WHERE Int([Datum]) = [Forms].[Abfrage].[Datum]
GROUP BY Datum
ORDER BY Datum DESC

Like macht hier keinen Sinn. Und den Tabellennamen brauchst Du bei den Feldnamen nicht.
Und die Klammerinvasion habe ich auch beseitgt.
Gruß Klaus

DF6GL

Hallo,

Du verwechselt was:  Format ist nicht Datentyp, wobei der Fehler hier wahrscheinlich darin liegt, dass

-- Ein Datum nicht mit dem "Like"-Operator verglichen werden sollte.

-- Das Datumsfeld kein reines Datum, sondern auch noch die Uhrzeit mit enthält.

-- Eine Formularreferenz in SQL-Strings (Abfragen) eher unsicher ist.

Versuch es zumindest so:

WHERE DateValue([Datum]) = [Forms].[Abfrage].[Datum]))
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

J.D

#3
Danke Franz,

das hat schon mal funktioniert...
SELECT Produktionsdaten.Datum
FROM Produktionsdaten
WHERE DateValue([Datum]) = [Forms].[Abfrage].[Datum];


kannst du mir auch zufällig sagen wie es aussehen muss
wenn ich alle datensätze der Tabele jeweils nur einmal möchte...
Zitat22.01.2020 19:01:51
22.01.2020 19:03:33
23.01.2020 11:05:44
möchte ich nur
Zitat22.01.2020 19:01:51
23.01.2020 11:05:44
angezeigt bekommen, die Uhrzeit bekomme ich ja weg, nur zeigt der mir im Formular alle einträge an.

Ich habe in der Tabele mehrere Daten, mit doppelten Datum und die sollen auf jeweil 1 eintrag reduziert werden, sodass ich dann über das Formular mit der oberen Abfrage mir dann alle einträge anziegen lassen kann...

ich hoffe ich habe mich jetzt verständlich ausgedrück :)

Grüsse J.D


PS.: Die Uhrzeit habe ich raus aus der DB, unter Formatierung in der Tabele selbst... wusste ich nicht das ich das dort auch Formatieren muss :D


Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

MzKlMu

#4
Hallo,
Du solltest auch erst mal klären, ob die Zeit in der Tabelle notwendig ist.
Siehe auch meine Antwort unter #1.
Wenn die erhalten bleiben soll musst Du nur gruppieren.
SELECT Datum
FROM Produktionsdaten
WHERE DateValue([Datum]) = [Forms].[Abfrage].[Datum]
GROUP BY Datum
ORDER BY Datum DESC

Gruß Klaus

MzKlMu

Hallo,
ZitatPS.: Die Uhrzeit habe ich raus aus der DB, unter Formatierung in der Tabele selbst...
Mit der Formatierung kriegst Du die Zeit nicht raus, das ist ein Irrtum. Du kriegst sie nur nicht angezeigt.
Wenn Du die Uhrzeit nicht brauchst, so solltest Du diese mit einer Aktualiiserungsabfrage entfernen und dafür sorgen, dass keine Zeit mehr gespeichert wird.
Gruß Klaus

J.D

Hi Klaus,

nein ich benötige die Zeit nicht in der Tabele,
diese habe ich auch erfolgreich entfernt aus der Tabele anhand deines Tips...

nun möchte ich sämtliche einträge in der Datenbank folgendermassen anzeigen, also jedes Datum nur 1 x
22.01.2020
22.01.2020
23.01.2020
soll so
22.01.2020
23.01.2020

mein mehrfach elemente Form zeigt mir die alle einträge an auf dem anderen Form kommt ja dann die abfrage
SELECT Produktionsdaten.Datum
FROM Produktionsdaten
WHERE DateValue([Datum]) = [Forms].[Abfrage].[Datum];

welche ja bereits funktioniert... :D
Damit kann ich mir ja dann den Tage genauer anschauen...

Grüsse JD
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

DF6GL

Hallo,

dann gruppiere halt, wie es Klaus gezeigt hat.

Alternativ ginge in diesem Fall auch:

SELECT Distinct Produktionsdaten.Datum
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

J.D

hmmm,

SELECT DISTINCT Produktionsdaten.Datum
FROM Produktionsdaten
GROUP BY Datum
ORDER BY Datum DESC;


sowie
SELECT Produktionsdaten.Datum
FROM Produktionsdaten
GROUP BY Datum
ORDER BY Datum DESC;

zeigt mir immernoch alle einträge an...

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

DF6GL

Hallo,

Hast Du die Format-Angaben überall herausgenommen?

Was lautet dann das Ergebnis ?



Bei Group brauchst Du Distinct dann nicht, bzw. umgekehrt.

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

Hallo,
irgendwie verstehe ich das gerade nicht.
Wie hast Du denn die Zeit entfernt ?
Da habe ich doch gar keinen Tip dazu abgegeben.
Wie kommt überhaupt die Zeit in das Feld wenn diese nicht benötigt wird.
Du solltest auch verhindern, dass bei neuen Datensätzen die Zeit wieder dabei ist.

Wenn die Zeit wirklich nicht in im Tabellenfeld enthalten ist, braucht es auch DateValue nicht mehr.
Gruß Klaus

J.D

Ich habe in der Entwurfansicht der Tabele den Feldtypen Datum/Uhrzeit, und unter allgemein habe ich Datum ,kurz gewählt sehe aber gerade das es leider wirklich so ist, das es zwar nicht mehr angezeigt wird... Klicke ich aber auf einen eintrag in der Datenbank übersicht, zeigt er die Uhrzeit auch an  :-\

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

J.D

Die eingabe ist auch Datum ,kurz Formatiert... wie bekomme ich das da weg?
Wenn ich das als text feld mache???

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2

PhilS

Zitat von: J.D am Januar 24, 2020, 18:04:08
Die eingabe ist auch Datum ,kurz Formatiert... wie bekomme ich das da weg?
Wenn ich das als text feld mache???
Einfach in der Entwurfsansicht der Tabelle die Formatvorgabe oder Eingabemaske markieren und [Entf] drücken.
Nicht den Datentyp zu Text ändern. Damit handelst du dir nur zahllose Probleme ein.

Zur Weiterbildung: Datum/Uhrzeit Datentyp in VBA und Access
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

#14
Hallo,
"Datum ,kurz" ist die Formatierung ohne Uhrzeit, das kannst Du also drin lassen.
Das Format ist hier auch völlig bedeutungslos.
Die Frage ist, wie kommt die Uhrzeit in das Feld. Die muss entweder bewusst jemand eintragen, oder Du verwendest z.B. irgendwo den Standardwert "Jetzt()" der die Uhrzeit beinhaltet. "Datum()" ist ohne Uhrzeit. Das musst Du prüfen.

Um die Zeit aus den bisherigen Datensätzen raus zu kriegen bedarf es einer Aktualisierungsabfrage, über Formateinstellungen geht das nicht.
UPDATE Produktionsdaten SET Datum = DateValue([Datum])

@Philipp
Sehr schöner Artikel im Link oben.
Aber trotzdem finde ich die Aussage
Zitatin diesem Datentyp immer Datum und Uhrzeit gespeichert ist.
zu absolut formuliert und auch etwas irreführend.
Die Funktion Datum() beinhaltet z.B. keine Uhrzeit.
Aus dem Direktbereich
?cdbl(date)
43854

Da ist nix von Zeit zu sehen. Wenn ich in ein Datumsfeld das reine Datum eintrage ist da auch keine Uhrzeit dabei. Es sei denn, man interpretiert nix als 00:00 Uhr.
Wenn man sich sicher ist (ggf. über eine Gültigkeitsregel), dass keine Zeit dabei ist, kann man bei Datumsvergleichen auf die Uhrzeit verzichten.


Gruß Klaus