Access "Letzter Wert"

Dieses Thema Access "Letzter Wert" im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Myrddin, 22. März 2006.

Thema: Access "Letzter Wert" Moin, ich verzweifle grad an einer AccessDatenbank 2003, die mit nicht die Werte liefert, die ich erwarte -...

  1. Moin,

    ich verzweifle grad an einer AccessDatenbank 2003, die mit nicht die Werte liefert, die ich erwarte - vielleicht kann mir hier ja einer den entscheidenen Tip geben.

    Folgendes Problem.
    Habe eine Datenbank mit Artikeln, zu der in einem Monat verschiedene Einträge gemacht werden - um dieses nun auszuwerten, muss ich den letzten Wert bekommen:

    Beispiel:

    [Artikel Monat Status Menge Änderungsdatum
    Artikel1 0306 bestellt 200 01.01.2006
    Artikel1 0306 Bestellung erhöht 500 10.01.2006
    Artikel1 0306 geliefert 450 20.01.2006
    Artikel2 0306 bestellt 600 02.01.2006
    Artikel2 0306 Bestellung erhöht 800 03.01.2006
    Artikel2 0306 Bestellung erhöht 900 25.01.2006

    Tabelle wird sortiert nach Artikel aufsteigen, Monat ansteigend, Änderungsdatum absteigend.
    Dann wird Artikel gruppiert, Monat gruppiert und letzter/erster Wert beim Datum.

    Wenn ich mir nun die Menge ansehe, bekomme ich Ergebnisse ohne Sinn - bei einem Artikel ist es der letzte Wert - beim anderen der erste - mal einer aus der Mitte. Mit der gleichen Sortierung ohne letzter/erster Wert ist die Tabelle sauber sortiert und ich sehe alle Werte - in der gewünschten Reihenfolge.

    Hab schon repariert usw.

    Wie bekomme ich wirklich den letzten Wert - hat einer eine Idee?


    Myrddin
     
  2. Kannst du vielleicht dein SQL-Kommando mal posten? Kann mir irgendwie noch nicht so richtig vorstellen, wie du das meinst :?
    Wenn ich das richtig verstanden habe soll für jeden Artikel nur ein Eintrag angezeigt werden??
    Was soll mit der Menge denn passieren? Wird die addiert ,...?

    Gruß
    Christian
     
  3. Hi,

    mich interessiert wirklich nur der letzte eingegebene Wert in einem Monat haben, egal was es war.

    SELECT Artikelstamm.Artikelbezeichnung, Production.Produktionsmonat, Last(Production.Änderung) AS Änderung, Last(Production.Menge) AS Menge, Last(Production.Statusfeld) AS Statusfeld, Last(Production.Confirmed) AS Confirmed, Last(Production.Info) AS Info, Last(Production.ProduktionsMonatDatum) AS ProduktionsMonatDatumFROM Artikelstamm INNER JOIN Production ON Artikelstamm.Artikelbezeichnung = Production.Artikelbezeichnung
    GROUP BY Artikelstamm.Artikelbezeichnung, Production.Produktionsmonat
    ORDER BY Artikelstamm.Artikelbezeichnung, Production.Produktionsmonat DESC , Last(Production.Änderung) DESC;

    Mit der Abfrage bekomme ich die Daten nicht wie ich sie sein sollten

    Myrddin
     
  4. Also ich hab jetzt mal nur die kleine Tabelle aus deinem ersten Posting nachgebaut und so gings dann bei mir:
    SELECT Artikel, First(Menge), First(Änderungsdatum), First(Status), First(Monat)
    FROM Tabelle1
    GROUP BY Artikel
    ORDER BY Artikel

    Musst du deiner Struktur dann halt noch anpassen.

    Gruß
    Christian
     
  5. Hi,

    wenn Du Dir meinen SQL Befehl anschaust, erkennst DU, dass es ähnlich Deiner Idee ist - und der Logic nach auch funktionieren müsste.
    Aber leider ist es nicht so - es kommt nicht der letzte / erste Wert

    Myrddin
     
  6. Ist denn z.B. Änderungsdatum auch wirklich ein Datumsfeld. Könnte sein, dass es irgendwie an der Sortierung liegt.
    Du hast nicht zufällig ne Datenbank mit Beispieldaten, die du mir mal schicken könntest, damit ich das mal selber nachvollziehen kann. (Mit dem Originalaufbau der Tabellen und so)

    Gruß
    Christian
     
  7. Grüß Dich,

    sorry, komme heute erst wieder zum Antworten hab aber scheinbar schon eine Lösung gefunden.

    Da es sich um Firmendaten handelt, darf ich sie leider nicht weitergeben :(

    Aber es ist ganz einfach nachzubauen
    2 Felder -
    Feld 1 Text ( füllen mit a / b )
    Feld 2 Datum ( füllen mit Datum )
    Wenn Du nun nach Feld 1 gruppierst, und den letzten Wert von Feld 2 anzeigst - wirst Du schnell feststellen, dass Du tatsächlich den letzten Wert bekommst - allerdings den zuletzt in die Tabelle eingegebenen Wert und nicht das letzte Datum laut Order By, wie es in der Hilfe beschrieben ist.

    Mein Work arround ist nun, dass ich den MAX Wert in einer Abfrage ermittle, Also Artikelbezeichnung + Monat + Max(Änderungsmonat) und eine 2. Abfrage auf diese aufsetze und die 3 Felder 1-1 in die org. Tabelle verknüpfe und die restlichen benötigten Felder anzeige/sortiere - um genau die (letzten) Datensätze zu erhalten.

    Wenn es eine bessere / einfachere Idee gibt - nur her damit ;)

    Myrddin
     
  8. Meinte ja nur die Datenbank mit ein paar Dummy-Daten. Aber wenn's jetzt klappt, ist es ja auch egal.

    Vielleicht solltest du auch irgendwann mal überlegen, ob du auf MSDE umsteigst. Access wird soweit ich weiss von Microsoft nicht mehr weiterentwickelt.

    Gruß
    Christian
     
  9. Wem sagst Du das mit dem SQL Server - ist ja mein Reden, aber da ich nur im Auftrag programmiere, habe ich keine keinen Einfluß auf das, was die nutzen.

    Myrddin
     
Die Seite wird geladen...

Access "Letzter Wert" - Ähnliche Themen

Forum Datum
W8.1 INACCESSIBLE_BOOT_DEVICE nach USB-Problem Windows 8 Forum 7. Mai 2015
Access 2010 lfd. Konfiguration-Setup Windows 7 Forum 7. Dez. 2014
Probleme mit Access Runtime und einem Programm Windows 7 Forum 24. Mai 2014
Viewer für MS Access Windows XP Forum 23. Okt. 2013
Access Database Engine 2010 34-bit - Microsoft Update vom 5.3.2013 Windows 7 Forum 5. März 2013