Office: (Office 2016) Abfrage

Helfe beim Thema Abfrage in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen Ich bräuchte mal eure Hilfe, komme alleine da nicht weiter. Und zwar habe möchte ich eine Leihgeräteverwaltung realisieren, dazu habe... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Mike2020, 27. Juli 2020.

  1. Abfrage


    Hallo zusammen

    Ich bräuchte mal eure Hilfe, komme alleine da nicht weiter.
    Und zwar habe möchte ich eine Leihgeräteverwaltung realisieren, dazu habe ich 2 Tabellen angelegt (es gibt auch noch weitere Tabellen mit den Kundendaten und Gerätearten, das ist aber nicht das Problem). Einmal tblInventar, dort werden alle Geräte aufgenommen mit Seriennummer, Baujahr, Inventarnummer, Gerätetyp usw. und zum 2. die Tabelle tblInventarUmlauf wo die Verleihdaten drin stehen wie Inventar ID, Datum Ausgang, Datum zurück, Kunden ID, Gerätezubehör usw.
    Die beiden Tabellen wollte ich über die Inventar ID verknüpfen. So weit so gut.

    In einem Formular möchte ich jetzt eine Listenansicht haben,die ich verschieden sortieren kann. Einmal mein gesamtes Inventar, einmal das Inventar was im Lager ist und einmal das was unterwegs ist.

    Zum besseren Verständniss:
    inventar.JPG

    Mein Problem ist jetzt das ich es nicht schaffe die Abfrage so zu gestalten das die verschiedenen Ansichten korrekt sind. Wenn ein Gerät mehrmals verliehen war taucht die Inventar ID über die ich die Tabellen miteinander verknüpfe ja in der Umlauf Tabelle mehrfach auf. So wird das Gerät mehrfach angezeigt wenn ich auf Inventaransicht klicke....

    Code:
    Ich danke schon mal für eure Hilfe,
    Mike

    :)
     
    Mike2020, 27. Juli 2020
    #1
  2. Schau Dir doch Deine Filterkriterium noch mal genau an.
    Und auch die Verknüpfung.

    Ein Artikel, der noch nie ausgeliehen wurde, hat keine Detailsätze in der Umlauf-Tabelle.
    Da bringt INNER JOIN nichts, denn solche Artikel würden überhaupt nicht angezeigt.
    ausgang IS NULL AND zurueck IS NULL bekommst DU also nur zu sehen, wenn Du die Tabellen per LEFT JOIN verbindest.

    Wenn etwas zurückgegeben wurde, dann ist doch ziemlich sicher das RückgabeDatum einen Wert, also NOT NULL. Wenn es aber noch nicht zurückgegeben wurde ist dieses Datum NULL. Und in beiden Fällen ist das AusgangsDatum NOT NULL.

    Wenn Du jedes Gerät, das ausgeliehen und zurückgegeben ist, nur einmal anzeigen lassen möchtest, schaffst Du das nur mit Hilfe einer Unter-Abfrage und der Einbindung der Tabelle mit den Geräten. Sonst wird - wie Du es erlebst - jeder Ausleih-Vorgang als Datensatz im Ergebnis angezeigt.

    Was die Verknüpfung mit den Kunden Geräte-Typen soll, verstehe ich nicht.

    Vielleicht lädst Du mal eine Kopie der DB hoch, damit man sich ein genaueres Bild machen kann?
     
    hcscherzer, 29. Juli 2020
    #2
  3. Hallo
    Das mit der Unterabfrage ist genau mein Problem, ich weiß einfach nicht wie das geht.

    Ich habe den Code jetzt mal vereinfacht, die Kundentabelle und die Geräteart spielen erstmal keine Rolle.
    Wenn ich die beiden Tabellen mit einem right join verbinde, wie bekomme ich dann die mehrfachen Einträge raus??? Das muss sich ja irgendwie mit dem Datum raus und Datum zurück machen lassen aber ich weiß nicht wie???

    Code:
    Mike
     
    Mike2020, 29. Juli 2020
    #3
  4. Abfrage

    Typisch würde man jeder Tabelle ein eigenes Formular gönnen. Die Primärtabelle ist Datenherkunft für das Hauptformular, die Sekundärtabelle ist Datenherkunft für ein eingebettetes verknüpftes Unterformular.
     
    ebs17, 30. Juli 2020
    #4
  5. Mit der Abfrage aus #3 bekommst Du alle Teile und alle Ausleih-Vorgänge.
    Durch das RIGHT JOIN auch die Teile, wo es keine Vorgänge gibt.

    Mir ist aber nach wie vor nicht klar, wofür diese Abfrage dient.
    Ist das Datenquelle für das Haupt- oder ein Unterformular oder ist es Quelle für eine ListBox?

    In der ersten Abfrage waren ja die Kunden noch mit drin.
    Alles etwas verwirrend.
    Insofern wäre es sinnvoll (wie auch schon gesagt), wenn man mal genauer erklärt bekäme, was genau Du da vorhast. Am besten wäre eine (auf das Wesentliche abgespeckte) Beispiel DB.
     
    hcscherzer, 30. Juli 2020
    #5
  6. OK ich habe das ganze nun mal in eine Beispieldatei gepackt.

    Noch zur Erklärung:
    In der Tabelle tblInventar sollen nur die Gerätedaten aufgenommen werden wie Serien Nr, Inventar Nr, Baujahr, Kostenstelle usw. Diese Geräte werden an Kunden verliehen während ihr Gerät zu uns zur Reparatur kommt oder zu Demo Zwecken verwendet.

    In der Tabelle tblInventarUmlauf sollen halt alle Umlaufdaten festgehalten werden wenn das Gerät an einen Kunden verliehen wird. Also Datum, Kunden ID, Zubehör usw. Ein Bezug wollte ich über tblInventar.ID auf tblInventarUmlauf.InventarID herstellen.


    In dem Endlosformular hätte ich nun gerne 3 Ansichten:
    - Gesamtansicht von allem Inventar. Hier würde ich gerne aber direkt sehen ob das Gerät verliehen ist und an wen.
    - Eine Ansicht was alles im Lager ist.
    - Eine Ansicht was alles verliehen ist.

    Später werde ich dann noch Filter für die einzelnen Gerätetypen einbauen und Abfragen um zu sehen welches Gerät wie oft verliehen war usw.

    So weit so gut. So lange keine Geräte zurück gekommen ist und ich es in der Umlaufliste wieder austrage
    (DatumZurueck) hat die Anzeige auch funktioniert. Wenn jetzt allerdings 1 Gerät mehrfach in der Umlauftabelle steht weil es mehrfach verliehen war, taucht es momentan in dem Endlosformular mehrfach auf. Ich komme einfach nicht dahinter wie ich die 3 SQL Abfragen gestalten muss damit die 3 verschiedenen Ansichten richtig funktionieren.

    Ich hoffe das ich mein Problem nun verständlich darstellen konnte,

    Mike
     
    Mike2020, 1. August 2020
    #6
  7. Kritik:
    - keine Beziehungen enthalten
    - Umlaufdaten-Datensätze sind etwas schwach in der Anzahl und decken vor allem nicht die gewünschten Fälle ab.

    Siehe Dir folgendes an:
    Code:
    Statt der vollständigen Tabelle tblInventarUmlauf kommt eine Unterabfrage (blau) zum Einsatz, die nur den letzten Datensatz pro InventarID zurückgibt. Damit erledigen sich Dopplungen.
    Um vollständig anzuzeigen, wird die Unterabfrage per OUTER JOIN (rot) angebunden.

    Am Lager: DatumAusgang und DatumZurueck jeweils IS NULL (noch nichts passiert) oder DatumZurueck > 0 (nicht Null)
    Verliehen: DatumAusgang > 0 und DatumZurueck IS NULL

    Also nur zusätzlichen Filter anwenden.

    (Ich hoffe, ich habe keinen Logikfehler drin).
     
  8. Abfrage

    Hallo Eberhard
    Vielen lieben Dank für deine Hilfe, das hätte ich alleine nicht hinbekommen. Der ungefähre Weg ist mir zwar schon klar aber mit der Formulierung der Abfrage komme ich noch nicht klar. Ich habe mir dein SQL Tutorial auch schon angesehen, auf die Schnelle kapiere ich das aber nicht. Da muss ich erst noch fleißig üben...

    Ich habe die Abfrage nun eingebaut, noch ein paar Umlauffälle hinzugefügt und das Ganze getestet. Es funktioniert so weit, es gibt aber noch einen kleinen Schönheitsfehler: Wenn ein Gerät schon mal verliehen war, wird für dieses Gerät in der Gesamt- und in der Inventaransicht die letzte Kundenadresse angezeigt. Das ist natürlich nicht so schön, da könnte man denken das Gerät sei noch unterwegs.... Hast du dazu eventuell auch noch eine Idee??? Eine aktuelle Version ist im Anhang.

    Gruß, Mike
     
    Mike2020, 1. August 2020
    #8
  9. Wenn Du in bestimmten Fällen die Kundendaten nicht sehen willst, musst Du sie einfach weglassen, sprich Du brauchst dann eine andere Abfrage, wo die Kundentabelle und ihre Felder weggelassen werden.

    Allerdings sollte Dein Endlosformular darauf vorbereitet sein, für diese Felder dann keine Datenherkunft zu haben.
     
  10. Wäre vielleicht besser nachzuverfolgen, wenn Du eine Versionsnummer anhängst an den Dateinamen, nur als Vorschlag.

    Was die Kundendaten angeht, würde ich das so aufbauen, dass ich ein Formular hab mit den Kunden im HF und die Ausleihen dieser Kunden in einem Endlos-UF.

    Und für die Inventar-Ansicht im HF würde ich ein Endlos-UF nehmen und dort alle Vorgänge dieses Teils auflisten, chronologisch absteigend, dann ist der letzte Vorgang immer oben. Und bei denen mit Ende offen kann man ggf. den Kunden hinschreiben, der das Teil gerade hat.

    Und dann kommt in den Formularkopf eine Gruppe mit drei Radio-Buttons:
    - alle
    - gerade ausgeliehen
    - momentan nicht ausgeliehen

    In Abhängigkeit dieser drei Status kann dann das UF entsprechend gefiltert werden.
     
    hcscherzer, 2. August 2020
    #10
  11. Erstmal vielen Dank für eure Hilfe. Ich kann das jetzt so verwenden. Werde das Formular so umstellen das ich den Kunden bei den ersten beiden Ansichten ganz weg lasse.

    Mike
     
    Mike2020, 3. August 2020
    #11
Thema:

Abfrage

Die Seite wird geladen...
  1. Abfrage - Similar Threads - Abfrage

  2. Abfrage: Anzahl von Kriterium >0

    in Microsoft Access Hilfe
    Abfrage: Anzahl von Kriterium >0: Hallo, [ATTACH] Ich versuche gerade, die Anzahl der belegten Plätze auf einem LKW per Abfrage zu ermitteln. Dabei wäre dann FSPal > 0. Leider zeigt er mir die Anzahl der Plätze an. [ATTACH]...
  3. Teil des Zellinhaltes abfragen in VBA

    in Microsoft Excel Hilfe
    Teil des Zellinhaltes abfragen in VBA: Guten Tag, ich möchte in Zelle E1 den linken 4-stelligen Teil in Zelle A3 abfragen. Habs versucht mit IF (LEFT(R[2]C[-3],4) = "8396") then ... Else ... End If Wer kann...
  4. Verliert irgendwann die Selektive Abfrage von UFO

    in Microsoft Access Hilfe
    Verliert irgendwann die Selektive Abfrage von UFO: Guten Tag Ich habe ein HF mit darin befindlichem UF. Die Abfrage der Teilnehmer im Uf bezieht sich immer auf den Kurs-Typ im HF Solang ich das Formular neu erstelle, funktioniert das...
  5. automatische Abfrage URL via Artikelnummer

    in Microsoft Access Hilfe
    automatische Abfrage URL via Artikelnummer: Guten Tag Bei der Aktualisierung der Homepage und aufgrund eines Plugin-Wechsels des Üebersetzungstools hat wordpress alle Permalinks der Produkte verändert. Unserem Webmaster war nicht bekannt,...
  6. Vorkommen von Kunden in mehreren Tabellen per Abfrage filtern

    in Microsoft Access Hilfe
    Vorkommen von Kunden in mehreren Tabellen per Abfrage filtern: Hallo Community, ich habe folgendes Problem beim Nutzen einer Access-Datenbank. Zunächst die Datenstruktur: [ATTACH] Dies sind die Tabellen meiner Datenbank. In der Tabelle "Adressliste"...
  7. mit String aus Formular Übereinstimmung in Abfrage prüfen

    in Microsoft Access Hilfe
    mit String aus Formular Übereinstimmung in Abfrage prüfen: Hallo liebe Mitglieder Ich verzweifle wieder einmal fast und wende mich an Euch. Ich möchte gern aus einem Formular heraus (Click) prüfen, ob übereinstimmende Datensätze in einer Abfrage vorhanden...
  8. RowSource aus Abfrage mit Kriterien

    in Microsoft Access Hilfe
    RowSource aus Abfrage mit Kriterien: Hallo, ich bin dabei eine Bundesliga-Datenbank zu erstellen, in der es auch eine Menge Statistiken geben soll. Ich will z.B. in einem Listenfeld die Namen der Schiedsrichter und deren Einsätze...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden