Access "Letzter Wert"

  • #1
M

Myrddin

Bekanntes Mitglied
Themenersteller
Dabei seit
22.02.2005
Beiträge
411
Reaktionspunkte
0
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
 
Thema:

Access "Letzter Wert"

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben