Discussion:
Aktualisieren des letzten Datensatzes
(zu alt für eine Antwort)
Lotti Kawecki
2007-08-14 13:44:02 UTC
Permalink
Hi Ng,

wie kann ich erreichen, dass immer nur der letzte Datensatz der Tabelle
aktualisiert wird?

Mit einer Auswahlabfrage lasse ich mir die zu aktualisierenden DS anzeigen.
Sobald ich jedoch die Abfrage in eine Aktualisierungsabfrage umwandle, werden
mir alle Datensätze der Tabelle aktualisiert. Das möchte ich nicht.

Könnte ich als Kriterium das ERgebnis einer ABfrage verwenden? WEnn ja, wie
geht das.

Mfg
Lotti
Mark Doerbandt
2007-08-14 14:03:05 UTC
Permalink
Hallo, Lotti,
Post by Lotti Kawecki
Mit einer Auswahlabfrage lasse ich mir die zu aktualisierenden DS anzeigen.
Sobald ich jedoch die Abfrage in eine Aktualisierungsabfrage umwandle, werden
mir alle Datensätze der Tabelle aktualisiert. Das möchte ich nicht.
poste doch bitte mal das (formatierte) SQL-Statement zu Deiner
Abfrage.

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Lotti Kawecki
2007-08-14 14:34:00 UTC
Permalink
Hi Mark,

ich verstehe nicht was Du mit formatiert meinst?

Hier der SQL String aus der Abfrage.

SELECT SBErinnerung.PatientenNr, Max(Recall.Anschreiben) AS MaxvonAnschreiben
FROM Recall INNER JOIN SBErinnerung ON Recall.PatientenNr =
SBErinnerung.PatientenNr
GROUP BY SBErinnerung.PatientenNr;

Wie du siehst, muss ich für das korrekte Ergebnis 2 Tabellen verknüpfen.

Lotti
Post by Mark Doerbandt
Hallo, Lotti,
Post by Lotti Kawecki
Mit einer Auswahlabfrage lasse ich mir die zu aktualisierenden DS anzeigen.
Sobald ich jedoch die Abfrage in eine Aktualisierungsabfrage umwandle, werden
mir alle Datensätze der Tabelle aktualisiert. Das möchte ich nicht.
poste doch bitte mal das (formatierte) SQL-Statement zu Deiner
Abfrage.
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
Mark Doerbandt
2007-08-14 14:39:58 UTC
Permalink
Hallo, Lotti,
Post by Lotti Kawecki
ich verstehe nicht was Du mit formatiert meinst?
manchmal kommen dann zwei Seiten SQL angeflogen und keiner kann's
lesen. Dein String ist ja noch uebersichtlich.
Post by Lotti Kawecki
SELECT SBErinnerung.PatientenNr, Max(Recall.Anschreiben) AS MaxvonAnschreiben
FROM Recall INNER JOIN SBErinnerung ON Recall.PatientenNr =
SBErinnerung.PatientenNr
GROUP BY SBErinnerung.PatientenNr;
ok, und in welcher Tabelle willst Du den "letzten" Datensatz
aktualisieren und was ist das genaue Kriterium, das "Letzter"
bestimmt?

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Lotti Kawecki
2007-08-14 15:08:08 UTC
Permalink
Hallo Mark,

Die Tabelle Recall soll aktualisiert werden. Das genaue Kriterium ist der
Datensatz mit dem Datum des letzten ERinnerungsschreibens.
Wie Du siehst, habe ich Max verwendet um dieses Datum in die Abfrage zu
bekommen. Das Feld ERinnerung des jeweiligen DS soll dann mit dem Akt. Datum
gefüllt werden.

Lotti
Post by Mark Doerbandt
Hallo, Lotti,
Post by Lotti Kawecki
ich verstehe nicht was Du mit formatiert meinst?
manchmal kommen dann zwei Seiten SQL angeflogen und keiner kann's
lesen. Dein String ist ja noch uebersichtlich.
Post by Lotti Kawecki
SELECT SBErinnerung.PatientenNr, Max(Recall.Anschreiben) AS MaxvonAnschreiben
FROM Recall INNER JOIN SBErinnerung ON Recall.PatientenNr =
SBErinnerung.PatientenNr
GROUP BY SBErinnerung.PatientenNr;
ok, und in welcher Tabelle willst Du den "letzten" Datensatz
aktualisieren und was ist das genaue Kriterium, das "Letzter"
bestimmt?
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
Mark Doerbandt
2007-08-14 15:16:22 UTC
Permalink
Hallo, Lotti,
Post by Lotti Kawecki
Die Tabelle Recall soll aktualisiert werden. Das genaue Kriterium ist der
Datensatz mit dem Datum des letzten ERinnerungsschreibens.
Wie Du siehst, habe ich Max verwendet um dieses Datum in die Abfrage zu
bekommen. Das Feld ERinnerung des jeweiligen DS soll dann mit dem Akt. Datum
gefüllt werden.
das waere dann etwas wie

UPDATE Recall SET ERinnerung = Date()
WHERE Anschreiben IN (SELECT MAX(Anschreiben) FROM Recall)

Aber dabei ist natuerlich unklar, fuer welchen Patienten das passieren soll.
Und warum Du noch die zweite Tabelle brauchst.

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Lotti Kawecki
2007-08-14 15:56:01 UTC
Permalink
Hallo Mark,

es ist so, dass alle Patienten die eine Erinnerung erhalten sollen
angeschrieben werden. Dazu erstelle ich per Tabellenerstellungsabfrage die
Tabelle SBErinnerung. Diese wird dann als Datenquelle (Adressen) für den
Serienbrief verwendet. Ich verknüpfe dann diese Tabelle mit der Recall
Tabelle um halt die Patientennummern zu erhalten, die das
ERinnerungsschreiben bekommen haben.

Ziel ist, das Datum des ERinnerungsschreibens in die Tabelle Recall zu
übernehmen.

Hast Du vielleicht eine bessere Idee?
Post by Mark Doerbandt
Hallo, Lotti,
Post by Lotti Kawecki
Die Tabelle Recall soll aktualisiert werden. Das genaue Kriterium ist der
Datensatz mit dem Datum des letzten ERinnerungsschreibens.
Wie Du siehst, habe ich Max verwendet um dieses Datum in die Abfrage zu
bekommen. Das Feld ERinnerung des jeweiligen DS soll dann mit dem Akt. Datum
gefüllt werden.
das waere dann etwas wie
UPDATE Recall SET ERinnerung = Date()
WHERE Anschreiben IN (SELECT MAX(Anschreiben) FROM Recall)
Aber dabei ist natuerlich unklar, fuer welchen Patienten das passieren soll.
Und warum Du noch die zweite Tabelle brauchst.
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
Mark Doerbandt
2007-08-14 16:32:41 UTC
Permalink
Hallo, Lotti,
Post by Lotti Kawecki
es ist so, dass alle Patienten die eine Erinnerung erhalten sollen
angeschrieben werden. Dazu erstelle ich per Tabellenerstellungsabfrage die
Tabelle SBErinnerung. Diese wird dann als Datenquelle (Adressen) für den
Serienbrief verwendet. Ich verknüpfe dann diese Tabelle mit der Recall
Tabelle um halt die Patientennummern zu erhalten, die das
ERinnerungsschreiben bekommen haben.
ah, ok, dann probiere mal

UPDATE Recall R SET R.ERinnerung = Date()
WHERE R.Anschreiben IN (SELECT MAX(Anschreiben) FROM Recall A
WHERE A.PatientenNr=R.PatientenNr)
AND R.PatientenNr IN (SELECT PatientenNr FROM SBErinnerung)

Besser waere allerdings, wenn die Datensaetze eine ID haetten, um
mehrdeutige Anschreiben zu umgehen.

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Josef Poetzl
2007-08-14 16:52:23 UTC
Permalink
Hallo!

[TOFU entsorgt]
Post by Lotti Kawecki
Post by Mark Doerbandt
Post by Lotti Kawecki
Die Tabelle Recall soll aktualisiert werden. Das genaue Kriterium ist der
Datensatz mit dem Datum des letzten ERinnerungsschreibens.
Wie Du siehst, habe ich Max verwendet um dieses Datum in die Abfrage zu
bekommen. Das Feld ERinnerung des jeweiligen DS soll dann mit dem Akt. Datum
gefüllt werden.
das waere dann etwas wie
UPDATE Recall SET ERinnerung = Date()
WHERE Anschreiben IN (SELECT MAX(Anschreiben) FROM Recall)
Aber dabei ist natuerlich unklar, fuer welchen Patienten das passieren soll.
Und warum Du noch die zweite Tabelle brauchst.
es ist so, dass alle Patienten die eine Erinnerung erhalten sollen
angeschrieben werden. Dazu erstelle ich per Tabellenerstellungsabfrage die
Tabelle SBErinnerung. Diese wird dann als Datenquelle (Adressen) für den
Serienbrief verwendet. Ich verknüpfe dann diese Tabelle mit der Recall
Tabelle um halt die Patientennummern zu erhalten, die das
ERinnerungsschreiben bekommen haben.
Ziel ist, das Datum des ERinnerungsschreibens in die Tabelle Recall zu
übernehmen.
Fall die Tabelle Recall als Datenbasis für die Temp-Tabelle
SBErinnerung dient, so könntest du in die Tabelle SBErinnerung die ID
von Recall speichern. Damit wäre eine eindeutige Zuordnung zum
Recall-DS gegeben und eine Aktualisierung mit einem einfachen inner
join möglich.

Sollte Recall nicht als Basis für SBErinnerung dienen, dann verstehe
ich den Aktualisierungsbedarf nicht. ;-)

mfg
Josef

Loading...