Abfrage in Access 2000

Hallo,

ich habe mir eine Datenbank bei der zwei verknüpfte Tabellen existieren. In der einen Tabelle wird der Reifenbestand mit allen Angaben wie Preise, etc verwaltet, in der anderen werden alle „Bewegungen“ dieses Reifen verwaltet.
Nun möchte ich eine Abfrage erstellen, bei der ich als Ergebnis den aktuellen Lagerbestand erhalte. Das heißt ich brauche alle Datensätze aus der Tabelle Reifen, zu der entweder überhaupt kein Bewegungssatz existiert (also ein ganz neuer Reifen) oder aber bei denen alle zugehörigen Datensätze in der Tabelle Bewegung sowohl das Feld Montagedatum als auch das Feld Demontagedatum gefüllt haben.

CU

Thomas

Hallo,

ich habe mir eine Datenbank bei der zwei verknüpfte Tabellen
existieren. In der einen Tabelle wird der Reifenbestand mit
allen Angaben wie Preise, etc verwaltet, in der anderen werden
alle „Bewegungen“ dieses Reifen verwaltet.
Nun möchte ich eine Abfrage erstellen, bei der ich als
Ergebnis den aktuellen Lagerbestand erhalte. Das heißt ich
brauche alle Datensätze aus der Tabelle Reifen, zu der
entweder überhaupt kein Bewegungssatz existiert (also ein ganz
neuer Reifen) oder aber bei denen alle zugehörigen Datensätze
in der Tabelle Bewegung sowohl das Feld Montagedatum als auch
das Feld Demontagedatum gefüllt haben.

Hi Thomas,

Ich bin zwar nur mit A97 ausgerüstet, aber das Prinzip dürfte dasselbe sein!

Du machst eine Abfrage, in der die beiden Tabellen sind.
Dan verknüpst du sie so, daß alle Datensätze der Tabelle Reifen angezeigt werden.
Du wählst aus der Tabelle Reifen deine Datensätze aus, und aus der tabelle mit den Bewegungssäzten die aus, die
a) mit Tabellle Reifen verknüpft sind (sollte nur eine sein, mehrere sind aber auch nicht schlimm)
b) die Motage- und Demontagedatum enthalten.

Bei a) gibst du als Kritrium „Is Null“ ein, so werden alle DS angezeigt, die es in den Bewegungssätzen nicht gibt.
bei b) gibst du als Kriterium ein „Is Not Null“, und zwar ein beiden Spalten und in einer anderen Zeile als das Kriterium zu a).
Durch die Eingabe in derselben Zeile sind die Kriterien UND-Verknüpft, es werden also alles DS angezeigt, die ein Montage UND ein Demontage-Dateum haben.
Durch die verschiedenen Zeilen werden die Kriterien ODER verknüpft, es sind also alle DS,
die ein Montage UND ein Demontage-Dateum haben
ODER
keinen eintrga in der Verknüpfungsspalte, also auf Lager liegen.

Hoffe, das konnte dir helfen,
sonst meld dich wieder wenn’s unter A2000 nicht klappt.

bis dann,
Jan

Hallo Jan,

die Idee an sich hört sich ja ganz gut an, aber erstens habe ich auf diese Weise einen Reifen auch dann in dieser Auflistung, wenn er zwischenzeitlich einzweitesmal montiert wurde, denn dann existiert ja ein Datensatz, bei dem Montage- und Demontagedatum gefüllt sind, aber für den selben Reifen eben auch ein Datensatz, für den eben nur ein Montagedatum existiert.
Zum weiteren taucht ja dann in dieser Liste ein Reifen der mehrmals montiert und wieder demontiert wurde ja auch mehrfach auf, das darf ja auch nicht passieren.

Gruß

Thomas

Hallo Jan,

die Idee an sich hört sich ja ganz gut an, aber erstens habe
ich auf diese Weise einen Reifen auch dann in dieser
Auflistung,

1)

wenn er zwischenzeitlich einzweitesmal montiert
wurde, denn dann existiert ja ein Datensatz, bei dem Montage-
und Demontagedatum gefüllt sind, aber für den selben Reifen
eben auch ein Datensatz, für den eben nur ein Montagedatum
existiert.

2)

Zum weiteren taucht ja dann in dieser Liste ein Reifen der
mehrmals montiert und wieder demontiert wurde ja auch mehrfach
auf, das darf ja auch nicht passieren.

Zu 1)
Das kann sein, das habe ich nicht bedacht. Folgende Lösungsmöglichkeit:
Alles so, wie beschrieben, aber das Kriterium für das MontageDatum wird geschrieben
_Is Not Null UND [MontageDatum]
Der zweite Teil sollte eigentlich als ergebnis nur solche DS ausgeben, bei denen das Montagedatum früher ist, als da Demontagedatum.

Zu 2)
Heißt das, das ein Reifen mehrfach montiert und demontiert werden kann, und jedesmal wird ein Eintrag in die Tabelle gemacht??
Wenn ja, muß du das die Abfrage nach den ReifenIDs gruppieren, dann müßte eigentlich nur jede ID einmal auftreten. Das Problem ist dann nur, welche Gruppierungsfuntion haben die anderen Spalten (vielleicht letzter Wert? Maximum könnte auch interessant sein)? Da müßtest du noch ein bisschen probieren.
Aber Maximum hört sich nicht schlecht an, es sind ja Datum-Felder, da müßte das eigentlich klappen…

Ic kann dir also nur die halbe Lösung anbieten, wenn du nur die Reifen haben willst, die nur in der einen Tabelle sind, dann ist es ja kein Problem.

bis dann,
Jan

Vielleicht meldet sich noch ein anderer?_

1 Like

Hallo,

auf der Seite : http://www.accessware.de/accessware/index.html
gibt’s ein Programm mit dem Namen „Reifendb…“.
Das könnte was für Dich sein.

Grüße
Horst
http://www.horst-schulte.de

Hallo Jan,

ich habe jetzt selbst eine pfiffige Lösung gefunden. Ich baue aine Abfrage mit der Tabelle mit den Reifen mit einem berechneten Feld zusätzlich, das den Befehl „DCount“ auf die Tabelle mit den Bewegungssätzen macht und bei der Bedingung sowohl auf die Identität des Verknüpfungsfeldes als auch auf „[Demontagedatum] ist Null“. Unten in der Bedingungszeile dieses Feldes überprüfe ich auf „0“. DCount zählt nun die Anzahl der Detailsätze für jeden Reifen, bei dem das Feld „Demontagedatum“ nicht gefüllt ist. Wenn es nun mindestens einen Datensatz gibt, der dieses Kriterium erfüllt, dann ist der Reifen momentan auf einem Fahrzeug montiert.

Deine Idee mit der Verknüpften Abfrage hat mich dann auf die andere Idee gebracht.

Danke für Deine Hilfe.

Gruß

Thomas