Abfrage in Access 2000

Von: , Frage gestellt am Mi, 8. Nov 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

5 Antworten zu dieser Frage

  1. Antwort von nach 7 Stunden 1 hilfreich
    Re: 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.
    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

    • Antwort von nach 2 Tagen hilfreich
      Re^2: Abfrage in Access 2000

      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

      • Antwort von nach 2 Tagen 1 hilfreich
        Re^3: Abfrage in Access 2000

        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]< [Demontagedatum]
        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?

        • Antwort von nach 9 Tagen hilfreich
          Re^4: Abfrage in Access 2000

          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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!