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
Seite 1 von 2  1 2      
HCB

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

Access SQL Summe von Stückliste berechnen und updaten

  Alt 5. Nov 2022, 12: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
Miniaturansicht angehängter Grafiken
stcklist.jpg  
  Mit Zitat antworten Zitat
mlc42

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

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

  Alt 5. Nov 2022, 12: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
172 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 5. Nov 2022, 12: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
130 Beiträge
 
#4

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

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

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

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

  Alt 10. Nov 2022, 18: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
Miniaturansicht angehängter Grafiken
stueckliste.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

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

  Alt 10. Nov 2022, 23: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.063 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 11. Nov 2022, 02: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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Nov 2022 um 09:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 11. Nov 2022, 07:00
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 and StckList.StckLi = 0 // oder False, ich nutze Access seit Jahren nicht mehr .

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!

Geändert von mikhal (11. Nov 2022 um 07:02 Uhr)
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
172 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 11. Nov 2022, 12:00
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
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#10

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

  Alt 11. Nov 2022, 12:18
Ist da was funktionierendes bei?

How do I perform update query with subquery in Access?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz