AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Access SQL Summe von Stückliste berechnen und updaten
Thema durchsuchen
Ansicht
Themen-Optionen

Access SQL Summe von Stückliste berechnen und updaten

Ein Thema von HCB · begonnen am 5. Nov 2022 · letzter Beitrag vom 11. Nov 2022
Antwort Antwort
HCB

Registriert seit: 12. Feb 2020
223 Beiträge
 
Delphi 12 Athens
 
#1

Access SQL Summe von Stückliste berechnen und updaten

  Alt 5. Nov 2022, 11:09
Datenbank: Access • Version: 2003 • Zugriff über: SQL / Delphi
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
Angehängte Grafiken
Dateityp: jpg StckList.jpg (50,0 KB, 23x aufgerufen)
  Mit Zitat antworten Zitat
mlc42

Registriert seit: 9. Feb 2013
135 Beiträge
 
#2

AW: Access SQL Summe von Stückliste berechnen und updaten

  Alt 5. Nov 2022, 11:35
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.
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
223 Beiträge
 
Delphi 12 Athens
 
#3

AW: Access SQL Summe von Stückliste berechnen und updaten

  Alt 5. Nov 2022, 11:45
Hallo mlc42,
danke für deine Hilfe. Leider kommt die Fehlermeldung:

Operation muss eine aktualisierbare Abfrage verwenden!

LG Harry
  Mit Zitat antworten Zitat
mlc42

Registriert seit: 9. Feb 2013
135 Beiträge
 
#4

AW: Access SQL Summe von Stückliste berechnen und updaten

  Alt 5. Nov 2022, 12:40
habs mal gegoogelt. Access scheint SubSelects im Update nicht zu können.
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
223 Beiträge
 
Delphi 12 Athens
 
#5

AW: Access SQL Summe von Stückliste berechnen und updaten

  Alt 10. Nov 2022, 17:10
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
Angehängte Grafiken
Dateityp: jpg Stückliste.jpg (38,9 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Access SQL Summe von Stückliste berechnen und updaten

  Alt 10. Nov 2022, 22:51
So wie ich das lese, unterstützt MS Access Subselect?
Quelle MS

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)
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.382 Beiträge
 
Delphi 12 Athens
 
#7

AW: Access SQL Summe von Stückliste berechnen und updaten

  Alt 11. Nov 2022, 01:08
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.
UPDATE sArtikel SET ArtVKPreis_0 = ...
statt
UPDATE sArtikel SET sArtikel.ArtVKPreis_0 = ...

Falls aber Access unbedingt ein WHERE haben will,
dann WHERE true bzw. WHERE 1 hinten dran.

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:
Zum Erstellen einer Unterabfrage können Sie eins der folgenden drei Syntaxformate verwenden:
https://stackoverflow.com/questions/...uery-in-access



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:
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
oder irgendwie so
SQL-Code:
INNER JOIN (
  SELECT sum(StckListSumme), StckListNr
  ...
) AS temptable (Summe, StckListNr)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Nov 2022 um 08:02 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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-2025 by Thomas Breitkreuz