![]() |
Datenbank: Access • Version: 2003 • Zugriff über: SQL / Delphi
Access SQL Summe von Stückliste berechnen und updaten
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Entwickler,
ich stehe vor einem neuen Problem: Ich habe eine Stückliste wo die Summe der Felder StckListSumme in eine Artikeltabelle per Update eingetragen werden soll. Mein SQL code funktioniert nicht UPDATE sArtikel INNER JOIN StckList ON sArtikel.ArtNr = StckList.StckListNr SET sArtikel.ArtVKPreis_0 = sum(StckList.StckListSumme) Problem scheint zu sein, dass der Artikel der aktualisiert werden soll mehrfach in der Stückliste-Tabelle vorkommt. Es müsste der Betrag 36.04 € herauskommen. Siehe beiliegenden Screenshot. Bin ratlos. Für Hilfe wäre ich ausgesprochen dankbar. Liebe Grüße Harry |
AW: Access SQL Summe von Stückliste berechnen und updaten
vieleicht so
UPDATE sArtikel SET sArtikel.ArtVKPreis_0 = (SELECT sum(StckList.StckListSumme) FROM StckList WHERE sArtikel.ArtNr = StckList.StckListNr) ob Access das kann weiß ich leider nicht. |
AW: Access SQL Summe von Stückliste berechnen und updaten
Hallo mlc42,
danke für deine Hilfe. Leider kommt die Fehlermeldung: Operation muss eine aktualisierbare Abfrage verwenden! LG Harry |
AW: Access SQL Summe von Stückliste berechnen und updaten
habs mal gegoogelt. Access scheint SubSelects im Update nicht zu können.
|
AW: Access SQL Summe von Stückliste berechnen und updaten
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, hat denn niemand eine Idee? Bin am verzweifeln!
Bin zwar schon etwas weiter aber ich versuche mich gerade in Artikel-Stücklisten einzuarbeiten. Es sollen die Summen der Unterartikel(Stückliste) in den VKPreis des Hauptartikels eingetragen werden. Beispiel: Haupartikel 1044150 besteht aus 5 Unterartikel ( 2x 1044010, 2x 1044140,2x ,1044240,2x 1044270). Mit folgendem SQL habe ich die Hauptartikel ermittelt: SELECT distinct ArtNr FROM sArtikel t1 WHERE EXISTS( SELECT 1 FROM StckList t2 WHERE t1.ArtNr = t2.StckListNr); Jetzt habe ich korrekt die dazugehörigen Unterartiekl mit den gesamtpreis des einzelenen unterartikels ermittelt. SELECT StckListNr,StckListArtNr,ArtVKPreis_0,StckListMeng e,ArtVKPreis_0*StckListMenge as gesamt FROM sArtikel, stckList where StckListArtNr = ArtNr; Problem wo ich jetzt nicht mehr weiter komme ist, wie bekomme ich an die Summe der einzelnen Artikel die dem Hauptartikel zugeordnet sind? Siehe Screenshot. Es müssten alle Preise im Feld "gesamt" die z.B. dem Hauptartikel 1044150 zugeordnet sind summiert werden und unter ArtVKPreis_0 des Hauptartikels eingetragen werden. Kurzum, die Summe der Einzelartikel ergibt den VK des Hauptartikels. Mir gelingt es nicht, eine Updateanweisung zu schreiben wo nur der Preis des Hauptartikels aktualisiert wird. Ich hoffe, mit beiliegenden Screenshot wird das deutlicher. Für jede Hilfestellung wäre ich außerordentlich dankbar. Liebe Grüße Harry |
AW: Access SQL Summe von Stückliste berechnen und updaten
So wie ich das lese, unterstützt MS Access Subselect?
![]() Funktioniert das evtl. mit dem Schlüsselwort All, Any oder Some?
Delphi-Quellcode:
UPDATE sArtikel SET sArtikel.ArtVKPreis_0 =
ALL (SELECT sum(StckList.StckListSumme) FROM StckList WHERE sArtikel.ArtNr = StckList.StckListNr) |
AW: Access SQL Summe von Stückliste berechnen und updaten
ALL und ANY sind doch nur für den Vergleich, aber das hier ist eine Zuweisung,
außerdem liefert dieses SubSelect sowieso nur einen Datensatz, womit ANY/ALL eh nutlos wäre. Ich würde erstmal vermuten, dass hier vielleicht die Tabelle der Fehler ist.
SQL-Code:
UPDATE sArtikel SET ArtVKPreis_0 = ...
statt
SQL-Code:
UPDATE sArtikel SET sArtikel.ArtVKPreis_0 = ...
Falls aber Access unbedingt ein WHERE haben will, dann
SQL-Code:
bzw.
WHERE true
SQL-Code:
hinten dran.
WHERE 1
und statt "..." natürlich das (SubSelect), z.B. wie in Post #2 bzw. #6 Aber ja, wenn man die Hilfe ganz genau nimmt, dann wird SubSelect bei Assignment (Zuweisung) garnicht unterstützt. Zitat:
![]() WITH wird von Access scheinbar auch nicht unterstütz. Eine Lösung, welche gehen dürfte: * SELECT-INTO : also erstmal ALLE Summen in eine TempTabelle speichern * und dann das UPDATE gegen diese TempTabelle, welche jetzt pro Artikel nur noch je einen Datensatz hat * zuletzt die TempTable eventuell wieder löschen Oder ist JOIN mit einem SubSelect möglich?
SQL-Code:
oder irgendwie so
UPDATE sArtikel
INNER JOIN ( SELECT sum(StckListSumme) AS Summe, StckListNr FROM StckList GROUP BY StckListNr ) AS temptable ON sArtikel.ArtNr = temptable.StckListNr SET sArtikel.ArtVKPreis_0 = temptable.Summe
SQL-Code:
INNER JOIN (
SELECT sum(StckListSumme), StckListNr ... ) AS temptable (Summe, StckListNr) |
AW: Access SQL Summe von Stückliste berechnen und updaten
Stücklisten können Unterstücklisten (Baugruppen) enthalten. Die müssen natürlich erkennbar sein, weil nicht mehr die gesamte Stückliste der Baugruppe aufgelistet wird. Ich habe hier das Bit-Feld StckLi (?) in Verdacht.
Erweitere also deine Abfrage um die Bedingung
Delphi-Quellcode:
.
and StckList.StckLi = 0 // oder False, ich nutze Access seit Jahren nicht mehr
Grüße Mikhal |
AW: Access SQL Summe von Stückliste berechnen und updaten
Hallo Leute, vielen Dank für die Hilfestellungen.
Ich habe es jetzt wie von Jürgen angeregt, die Artikelnummern der Hautartikel jetzt in einer TempTabelle gespeichert. Mit dieser Abfrage kommen die richtigen Summen zu den Hauptartikel heraus: select sum(gesamt) from AATest inner join TempTbl on AATest.StckListNr = TempTbl.StckListNr group by TempTbl.StckListNr; Es sind nach dem Beispiel (Sreenshot) die 3 richtigen Summen der jeweiligen SubArtikel. Wie kann ich jetzt diese Preise von der TempTabelle in der HauptArtikel Tabelle sArtikel Feld ArtVKPreis_0 per update speichern? Brauche noch ein bisserl Unterstützung. LG Harry |
AW: Access SQL Summe von Stückliste berechnen und updaten
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz