Archiv verlassen und diese Seite im Standarddesign anzeigen : mal wida access
Unregistered
2002-01-10, 09:48:38
guten moin zusammen
Wie kann ich in einer Abfrage einen bestimmten Zeitraum erfragen?
das antsprechende Feld in der Tabelle ist wie folgt aufgebaut:
Datum
tt.mm.jjjj hh:nn:sms
wichtig is hierbei nur dass das Datum Abfragbar ist, die Uhrzeit spielt dabei keine Rolle
thx.
schönen Gruß
der Wolf
Unregistered
2002-01-10, 12:25:24
un ich hab nochein problem ,dass ist mir erst beim test mit echten daten aufgefallen.
scheint ein bug zu sein.
ich hab in der abfrage wenn sämtliche datensätze abgefragt werden sollen gesagt nach datum aufsteigend sortieren.
das macht der in der abfrage auch wunderbar.
Aber im formular und im bericht die beide darauf basieren schmweißt access mir alles wieder durcheinander.
es is übrigens access 97 ;)
weiß zufällig jemand was man da machen kann?
bye
der wolf
Marcel
2002-01-10, 22:24:27
Mein ganzes Getippe, das hier grade noch stand, hätte ich mir sparen können, wenn ich Deine Fragen genauer gelesen hätte.
Gruß,
Marcel
Marcel
2002-01-10, 22:35:09
Originally posted by Unregistered
guten moin zusammen
Wie kann ich in einer Abfrage einen bestimmten Zeitraum erfragen?
das antsprechende Feld in der Tabelle ist wie folgt aufgebaut:
Datum
tt.mm.jjjj hh:nn:sms
wichtig is hierbei nur dass das Datum Abfragbar ist, die Uhrzeit spielt dabei keine Rolle
thx.
schönen Gruß
der Wolf
Hast du Angst vor SQL? Wenn nicht, dann mach mal sowas:
select * from MeineTabelle
where MeinDatumsfeld > #12/31/2001#
Access müsste auch das deutsche Datumsformat schlucken, wenn's auf dem aktuellen Rechner per Gebietsschema installiert ist. Weggelassene Uhrzeit wird als 0:00:00 interpretiert.
Dieses komische grafische Abfragenzusammengebastele war mir schon immer zuwider.
Gruß,
Marcel
Unregistered
2002-01-11, 10:19:06
hm, damit kann ich aber keinen Zeitraum abfragen oder?
es müsste am ende mehr so aussehn dass jemand im formular die aufforderung bekommt das anfangsdatum und das enddatum des zeitraums einzugeben, den er angezeigt haben möchte.
ich hab da mal etwas code was das anschaulich macht, nur leider funktioniert der nicht :(
select * from TABELLE where to_char(DATUMSSPALTE, dd.mm.yyyy) between 'dd.mm.yy' and 'dd.mm.yy';
Marcel
2002-01-12, 00:25:30
Originally posted by Unregistered
hm, damit kann ich aber keinen Zeitraum abfragen oder?
Doch, doch, im Beispiel habe ich ja nur eine der zwei Grenzen gesetzt.
Füg einfach eine zweite hinzu:
select * from MeineTabelle
where MeinDatumsfeld > #12/31/2001#
and MeinDatumsfeld < #12/31/2002#
oder
select * from MeineTabelle
where MeinDatumsfeld between #12/31/2001# and #12/31/2002#
Originally posted by Unregistered
es müsste am ende mehr so aussehn dass jemand im formular die aufforderung bekommt das anfangsdatum und das enddatum des zeitraums einzugeben, den er angezeigt haben möchte.
ich hab da mal etwas code was das anschaulich macht, nur leider funktioniert der nicht :(
select * from TABELLE where to_char(DATUMSSPALTE, dd.mm.yyyy) between 'dd.mm.yy' and 'dd.mm.yy'; [/B]
Dann würdest Du das Feld vom Datentyp Date in den Typ Char (Zeichenkette; nicht zu verwechseln mit dem Typ Char aus Pascal o.ä., wo es nur ein einziges Zeichen ist) umwandeln. Geht, muss aber nicht unbedingt sein. Beachte aber das Format. Du vergleichst in dem Beispiel zwei- und vierstellige Jahreszahlen. Kennt Access die Funktion "to_char"? Versuch mal den zweiten Parameter (das dd.mm.yyyy) in die passenden Anführungszeichen zu setzen. Oder lass das "casten" (Umwandeln der Typen).
HTH
Gruß,
Marcel
Razor
2002-01-12, 01:13:19
Hi nochmal, wolf...
;-)
Erst mal zu dem Datums-Eingrenzungs-Problem:
SELECT myTable.*
FROM myTable
WHERE (myTable.myDate>CDate("31.12.1999 23:59:59"))
AND (myTable.myDate<CDate("01.01.2001"));
Fischt also alle Daten heraus, die beim 1.1.2001 (0 Uhr) beginnen und beim 31.12.2000 (23:59:59 Uhr) enden...
Access legt Datumsfelder intern in einem Double-Typ ab, bei dem die Vorkommastellen den Tagen und die Nachkommastellen den Sekunden des Tages endsprechen... Und da Access viele verschiede Methoden kennt, Datumswerte umzuwandeln, ist es besser einen Vergleichswert also ebenfalls vorher in einen Accessinternen Datumswert zu wandeln. Die Parameter, die der Funktion CDate() mitgegeben werden, müssen dem aktuell eingestellten Datumsformat der Windows-Umgebung entsprechen (was eigentlich ein Nachteil ist ;-). Aber normalerweise werden solche Werte ja mit Variablen übergeben, die... das führt jetzt zu weit !
;-)
Wie schon gesagt, die Funktion CDate("< Datum >[ < Zeit >]") hilft hier in jedem Fall !
-
Was das Problem der Sortierung angeht...
Abfragen werden nur als Gerüst von Formularen und Berichten benutzt, insofern kommen hier nur Eingrenzungen und Formatierungen zum Tragen, nicht aber Sortierungen. Diese sollten dann lieber im Bericht, bzw. den Formularen gesetzt werden (im übrigen unterscheidet Access Formulare und Berichte 'kaum' ;-). Also wären da folgende Lösungen anzunehmen:
Formular
In der Eigenschaft 'Datenherkunft' (oder 'RecordSource') des Forumlars nicht die Abfrage direkt eingeben, sondern einfach:
SELECT * FROM myQuery ORDER BY myField;
wenn es aufsteigend sortiert werden soll und
SELECT * FROM myQuery ORDER BY myField DESC;
wenn eben absteigende Sortierung gewünscht ist.
Aber Vorsicht, durch bestimmte Formular-Mechaniken wie benutzerdefinierte Sortierungen oder auch Eingrenzungen (Filter o.ä.), kann die von Programmierer vorgegebene Sortierung beeinflußt werden, so ist es oft besser, dies nicht dem Bneutzer zu überlassen, sondern in Form von VBA-Code selbst im Formular zu behandeln, aber das würde hier jetzt sicher auch zu weit führen...
('unbedarften' Benutzern kann man o.g. Lösung an die Hand geben ;-)
Berichte
Im Prinzip genau so, wie bei den Formularen, besser ist es aber in den 'Gruppierungen' (Menüpunkt 'Ansicht', dann 'Sortieren und Gruppieren') die Sortierung vorzugeben, um dies dann Berichtskonform zu tun, auch, um die Ausführungsgeschwindigkeit drastisch zu erhöhen, da nun nur noch das Result-Set sortiert wird (Abfragen sortieren je nach Konstruktion oft erst und grenzen dann ein, was näturlich eigentlich Unsinn ist ;-)...
Genug geschwafelt, aber ich hoffe, daß ich Dir helfen konnte !
;-)
Bis denne und viel Erfolg !
Razor
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.