Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Problem mit Aktualisierungsabfrage

Begonnen von Kinimod, Januar 06, 2020, 09:10:51

⏪ vorheriges - nächstes ⏩

Kinimod

Hallo,

ich komme bei einer Aktualisierungsabfrage nicht weiter.
Ich habe 2 Tabellen, die erste enthält Bestellungen: tbl_Positionen(Positions_ID, Produkt, Preis, Anzahl), die zweite Abrechnungsmeldungen: tbl_Abrechnungsmeldungen (Abrechnungs_ID, Positions_ID_f, Anzahl). Bestellung müssen nicht auf einmal abrechnet werden, es kann 1 oder mehrer Abrechnungsmeldungen pro Bestellung geben.
Nun habe ich in der Tabelle Bestellungen ein Feld AnzahlAbgerechnet hinzugefügt, dieses soll die Summe der schon abgerechneten Einheiten der Bestellung angeben.
Dafür habe ich eine entsprechende Abfrage geschrieben:

SELECT tbl_Positionen.Positions_ID, Sum(tbl_Abrechnungsmeldungen.Items_abgerechnet) AS SummevonItems_abgerechnet
FROM tbl_Positionen INNER JOIN tbl_Abrechnungsmeldungen ON tbl_Positionen.Positions_ID = tbl_Abrechnungsmeldungen.PositionsID_f
GROUP BY tbl_Positionen.Positions_ID;

Diesen Summenwert möchte ich nun über eine Aktualisierungsabfrage in die Tabelle  tbl_Positionen übernehmen.
UPDATE tbl_Positionen INNER JOIN abf_SummeVonItemsAbgerechnet ON tbl_Positionen.Positions_ID = abf_SummeVonItemsAbgerechnet.Positions_ID SET tbl_Positionen.Items_abgerechnet = [abf_SummeVonItemsAbgerechnet].[SummevonItems_abgerechnet];

Ich bekomme jedoch immer die Fehlermeldung "Operation muss eine aktualisierbare Abfrage verwenden".
Weiß jemand was ich falsch mache?

MzKlMu

Hallo,
eine gruppierte Abfrage kann für eine Aktualisierungsabfrage nicht verwendet werden, da gibt es auch keinen Trick.

Die Summe in die Tabelle zu schreiben ist eh überflüssig, berechnete Werte werden nicht gespeichert.
Gruß Klaus

Kinimod

ZitatDie Summe in die Tabelle zu schreiben ist eh überflüssig, berechnete Werte werden nicht gespeichert.

Ja, im Prinzip weiß ich das, das war als work-around gedacht. Wenn ich die Summe direkt in einer Abfrage verwende sind die Daten nicht mehr bearbeitbar. Das müssen sie aber sein.

DF6GL

Hallo,
wenn Du das weißt, warum fragst Du dann (so) ?

Ergebnisse zu bearbeiten und damit die Korrektheit (innerhalb der Db) der Ausgangsdaten in Frage zu stellen, ist eher nicht erstrebenswert.


Sollen die Ergebnisse, wie Du sagst,  weiter verarbeitet (verändert)  werden, dann exportiere sie aus der DB und manipuliere sie dort.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Kinimod

Zitatwenn Du das weißt, warum fragst Du dann (so) ?
Ich bin am rum probieren wie ich das Problem lösen kann, das war eine Idee nach dem Motto "Der Zweck heiligt die Mittel".

Die Werte berechneter Felder möchte ich nicht verändern, aber die anderer Felder.
SELECT tbl_Positionen.Positions_ID, tbl_Positionen.Unit_Price, tbl_Positionen.Quantity, tbl_Positionen.Item_Description, abf_SummeVonItemsAbgerechnet.SummevonItems_abgerechnet
FROM tbl_Positionen INNER JOIN abf_SummeVonItemsAbgerechnet ON tbl_Positionen.Positions_ID = abf_SummeVonItemsAbgerechnet.Positions_ID;

Hier möchte ich beispielsweise Unit_Price, Quantity, Item_Description verändern können.

MzKlMu

Hallo,
in einer gruppierten Abfrage können keine Daten geändert werden. Dein Vorhaben ist unmöglich.
Gruß Klaus

Kinimod

In der gruppierten Abfrage möchte ich keine Werte ändern, ich möchte eine gruppierte Abfrage in einer andren Abfrage verwenden und dort Werte verändern. Ist das auch unmöglich?

MzKlMu

Hallo,
ZitatIst das auch unmöglich?
Ja, auch in einer Abfrage die eine gruppierte Abfrage verwendet ist es völlig ausgeschlossen Daten zu ändern.
Gruß Klaus

Kinimod

Ok, danke, dann werde ich mir wohl einen anderen Weg suchen müssen.

PhilS

Zitat von: Kinimod am Januar 06, 2020, 12:17:47
Ok, danke, dann werde ich mir wohl einen anderen Weg suchen müssen.
Anstelle der gruppierten Abfrage, kannst du die DSum-Funktion verwenden um die Summe zu ermitteln.
An dem grundlegenden Sachverhalt, dass es i.d.R. besser ist, berechnete Werte immer bei Bedarf in einer Abfrage zu ermitteln, anstatt sie zu speichern.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor