Neuigkeiten:

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

Mobiles Hauptmenü

Anfängerfrage

Begonnen von hajott, April 25, 2020, 11:42:26

⏪ vorheriges - nächstes ⏩

hajott

Hallo Leute,

ich war länger nicht mehr in Access unterwegs und habe mangels Routine viel vergessen. Ich habe - vereinfacht - zwei Tabellen:

tbl1_Kunden mit den Textfeldern Referenz (Primary) und Name (Text). Weitere Basisdaten des Kunden sollen hier keine Rolle spielen.

Referenz   Name
KD001       Meier
KD002       Schulze
KD003       Peters

tbl2_Status soll nun die Möglichkeit bieten, nacheinander Statusveränderungen zu erfassen, und zwar mit ÄnderungsID (Autowert), Referenz und Status, also

ÄnderungsID    Referenz   Status
1                      KD001      Aktiv
2                      KD002      Aktiv
3                      KD003      Aktiv
4                      KD002      ruhend
5                      KD001      hyperaktiv
6                      KD002      wieder da

Ihr ahnt vielleicht, was ich möchte: Eine Query mit den Kundendaten und dahinter den letzten Status.

Mir ist auch klar, dass ich von der tbl2 das Referenzfeld gruppieren muss als weiteres Feld die ID mit MAX() nehmen muss. Aber wie bastele ich die Statusbezeichnung dieser letzten ID an die Stammdaten?

Vielen Dank im voraus

hajott

PhilS

Schau dir mal meinen Text zur Darstellung von aggregierten Daten an. Insbesondere der zweite Teil sollte zu deinen Anforderungen passen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

Und, als PK ist der Datentyp "Text" nicht so gut geeignet, nimm besser Zahl
(LongInteger, -> AutoWert). Die Anzeige von "KDnnnn" kannst du über eine
Abfrage realisieren.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

und nochmal "und":

Den inkrementellen Autowert als Kriterium für einen zeitlichen Ablauf heranzuziehen, kann zu Fehlergebnissen führen. Ein Datumsfeld ist dafür besser geeignet.

Für die Lösung (zu dieser Aufgabe) muss auch nicht unbedingt gruppiert werden:

SELECT S.Referenz, S.Status
FROM tbl2_Status As S
WHERE  S.ÄnderungsID=(Select Max(ÄnderungsID) From tbl2_Status as M Where M.Referenz = S.Referenz )
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