Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage Datumsfeld plus 30 Tage - wie geht das?

Begonnen von Neuling1, Oktober 11, 2010, 18:02:03

⏪ vorheriges - nächstes ⏩

Neuling1

Hallo,
ich habe in einer Haupttabelle ein Datumsfeld (OP_Dat) als "Datum, kurz" mit dem Access-Assistenten erstellt. Format wie "02.07.2010" In diese Tabelle kommen laufend neue Datensätze rein.
In einer täglich/wöchentlich aktualisierten Abfrage sollen alle Datensätze (Personen) aus der Haupttabelle für 10 Tage angezeigt werden, deren OP_Dat bereits 3 Monate her ist. Die da angezeigten Personen rufe oder schreibe ich an und frage bestimmte Daten ab. Danach alle drei Monate wieder, sofern nicht ein Umstand eintritt, der die Datenerhebung beendet. Also dachte ich an eine Abfrage auf das OP_Dat , plus 90 Tage und ein neues Feld, in dem ich sage, bitte in drei Monaten wieder anzeigen. Oder kann man das Datumsfeld OP_Dat so programmieren, dass es die Datensätze alle drei Monate für 10 Tage anzeigt?
Von diesen Datensätzen sollen die Stammdaten dann in eine neue Tabelle und dort die abgefragten Daten eingetragen werden. Diese Tabelle muss alle drei Monate wieder aktualisiert werden, die alten Daten dürfen aber nicht überschrieben werden.
Hat jemand dazu eine Idee? Wie muss ich mein Feld OP_Dat in der Abfrage belegen? Würdet ihr für jeden Updatezeitpunkt eine neue Tabelle erstellen oder den jeweiligen Zeitpunkt durch ein zusätzliches Feld identifizieren?
Vielen Dank schon mal
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

oma

Hallo,

ein neues Datum das 90 Tage nach einem Ausgangsdatum liegt, kann z.B. leicht in eine Abfrage in einem neuen Feld erstellt werden:

Vorlage: DatAdd("t";90;[OP_Dat])

eine Abfrage, ob die Vorlage am aktuellen Tag erreicht ist, könntest du abfragen mit:

SELECT OP_Dat, DateAdd("d",90,[OP_Dat]) AS Vorlage
FROM DeineTabelle
WHERE (((DateAdd("d",90,[OP_Dat]))=Date()));


wenn die sozusagen 10 Tage Vorlauf haben willst, benutze:

SELECT OP_Dat, DateAdd("d",10,[OP_Dat]) AS Vorlage
FROM DeineTabelle
WHERE (((DateAdd("d",10,[OP_Dat])) Between Date() And Date()-10))
ORDER BY OP_Dat



Gruß Oma
nichts ist fertig!

Neuling1

Vielen Dank, so klappt es hervorragend, ich bekomme alle Personen angezeigt, deren OP_Dat aktuell 90 Tage her ist. Doch wie löse ich das nächste Problem, wenn sich der Termin in 90 Tagen (3 Monate)wiederholt? Und 3 Monate später wieder? Und dann 3 Monate später ein weiteres Mal? Ich will ungern immer wieder neue Abfragen basteln, denn die Tabelle wird ja ständig erweitert, es kommen also immer wieder neue Datensätze dazu!
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

oma

Hallo,

dafür gibt es natürlich verschiedene Strategien!

wenn du für eine Person immer 3 Vorlagen hast, kannst du doch auch 3 Felder berechnen lassen:

Vorlage1: DatAdd("t";90;[OP_Dat])
Vorlage2: DatAdd("t";180;[OP_Dat])
Vorlage3: DatAdd("t";270;[OP_Dat])

alle drei können auch in einer Abfrage geprüft werden:


SELECT OP_Dat,
DateAdd("d",90,[OP_Dat]) AS Vorlage1,
DateAdd("d",180,[OP_Dat]) AS Vorlage2,
DateAdd("d",270,[OP_Dat]) AS Vorlage3
FROM Tabelle
WHERE (((DateAdd("d",90,[OP_Dat])) Between Date() And Date()-10))
OR (((DateAdd("d",180,[OP_Dat])) Between Date() And Date()-10))
OR (((DateAdd("d",270,[OP_Dat])) Between Date() And Date()-10))
ORDER BY OP_Dat


Evt. kannst du ja auch jeden realisierte Nachfrage dokumentieren ( DatumErledigt) und diese in die Abfrage mit übernehmen!


Gruß Oma
nichts ist fertig!

Neuling1

Dankeschön, eine gute Idee....Ein neues Feld generieren, das anzeigt, ob der Datensatz bearbeitet ist oder nicht...hm, über 5 Jahre muss ein Datensatz immer aktualisiert werden, zuerst vierteljährlich, dann halbjährlich, dann jährlich. Es ist auch sehr realistisch, dass ein Datensatz irgendwann raus fällt, also nicht weitergeführt werden muss.....Würdest du dafür ein drittes Feld generieren, in dem ein Abschlussdatum steht? Und könnte man dann gleichzeitig programmieren, dass die abgeschlossenen Datensätze nicht mehr angezeigt werden sollen?

Auch was die Tabelle angeht, bin ich noch nicht sicher, wie ich das mache. Für alle Zeitpunkte je 1 Tabelle oder alle Zeitpunkte in eine Tabelle, zu unterscheiden an Datum?
Später werde ich so jährlich um die 100 Datensätze haben, wobei aber immer einige rausfallen. Es addiert sich aber schon um jährlich schätzungsweise 70 Datensätze.
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

oma

Hallo,

ZitatWürdest du dafür ein drittes Feld generieren, in dem ein Abschlussdatum steht?

Ja, z.B ein Datumsfeld

ZitatUnd könnte man dann gleichzeitig programmieren, dass die abgeschlossenen Datensätze nicht mehr angezeigt werden sollen?

Ja, könnte man einfach machen

ZitatFür alle Zeitpunkte je 1 Tabelle oder...

um Gottes willen, warum den dieses?

ZitatSpäter werde ich so jährlich um die 100 Datensätze haben, wobei aber immer einige rausfallen. Es addiert sich aber schon um jährlich schätzungsweise 70 Datensätze

das ist doch keine Schwierigkeit, mehrere 10.000 Datensätze machen keine Probleme, wenn nicht in einer Multi-User - Umgebung nicht auch gerade 10.000 User aud die DB zugreifen ;D

Gruß Oma
nichts ist fertig!

Neuling1

Zunächst einmal vielen Dank, dass du dich so um mein Problem bemühst.
Ich überlege halt immer, wie ich es am simpelsten anfange, ich habe ja vom Programmieren keine Ahnung, versuche es mir immer abzuleiten, wenn mal was klappt.
ZitatUnd könnte man dann gleichzeitig programmieren, dass die abgeschlossenen Datensätze nicht mehr angezeigt werden sollen?

Ganz einfach? Wie denn? Ich finde es auch sehr kompliziert, eine Abfrage zu generieren, in der alle Zeitpunkte abgegriffen werden. Da führt der Programmiersatz ja schon ins Unendliche.

Und du würdest alle die Datenabfragezeiten für mehrere hundert Personen tatsächlich in einer Tabelle führen? Darüber mache ich mir noch meine Gedanken....und komme sicher noch mal auf dich zu. Wenn du mir die Syntax verraten könntest, wie ich ein noch nicht vorhandenes, völlig unabhängiges Feld in eine Abfrage reinbringe, wäre ich schon sehr glücklich.
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

oma

Hallo,

vielleicht verstehen wir uns auch falsch mit den Tabellenaufbau, da ich nicht genau weiss, was du alles speichern willst

Ich stelle mir das so vor:


Zur Speicherung aller Personen
tblPersonen:Person_ID(Primärschlüssel), Nachname, Vorname, DatumGeburt, DatumGelöscht.... OP_Dat......

zum Speichern der Befragungen

tblPersonenAntworten
Antwort_ID; Person_ID(Fremdschlüssel), Feld1, Feld2......

ZitatVon diesen Datensätzen sollen die Stammdaten dann in eine neue Tabelle und dort die abgefragten Daten eingetragen werden. Diese Tabelle muss alle drei Monate wieder aktualisiert werden, die alten Daten dürfen aber nicht überschrieben werden.

Das ist überhaupt nicht notwendig, du legst mit Formular frmPersonen immer neue Personen an und mit Formular frmPersonenAntwort gibst du die Ergebnisse der Befragung ein. In diesem Formular kannst du mit einem Kombi-Feld leicht die Person der Befragung eingeben (Fremdschlüssel Person_ID)

Gruß Oma

nichts ist fertig!