Office: (Office 2010) Operation muss eine aktualisierbare Abfrage verwenden

Helfe beim Thema Operation muss eine aktualisierbare Abfrage verwenden in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, bei meiner Aktualisierungsabfrage soll die zu aktualisierende Tabelle Daten aus eine gruppierten Abfrage erhalten. Die zu... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Forelle, 21. Juli 2017.

  1. Operation muss eine aktualisierbare Abfrage verwenden


    Hallo zusammen,

    bei meiner Aktualisierungsabfrage soll die zu aktualisierende Tabelle Daten aus eine gruppierten Abfrage erhalten. Die zu aktualisierende Tabelle und die gruppierte Abfrage sind über einen Join mit dem KEY verbunden.
    Die gruppierte Abfrage ist deshalb nötig, weil ich mehrere Datensätze zur gleichen KEY erhalten kann, weil z.B. im Jahr mehrere Istkostenbuchungen zu gleichen KEY anfallen können.

    In einer Versuchsanordnung habe ich festgestellt, dass es daran liegt, weil ich mich auf eine Abfrage beziehe die gruppierte Werte enthält.

    Ich habe im folgenden den SQL-Code meiner Abfrage dargestellt. die "Abfrage2_PT_test" ist die gruppierte Abfrage, die die Istkosten auf den KEY verdichtet.

    UPDATE Abfrage2_PT_test INNER JOIN tbl_PT_Projektmanager ON Abfrage2_PT_test.LN_Key = tbl_PT_Projektmanager.LN_KEY SET tbl_PT_Projektmanager.Obiligo = [Abfrage2_PT_test]![SummevonObligo];


    Wie muss ich das machen, dass das mit der gruppierten Abfrage funktioniert?

    :)
     
    Forelle, 21. Juli 2017
    #1
  2. Hallo,
    es ist schlichtweg ausgeschlossen Abfragen mit gruppierten Daten zu aktualisieren. Da gibt es auch keinen Trick. Das musst Du anders lösen.

    Da mir aber die Strktur der DB nicht bekannt ist, kann ich da keinen Rat geben.
     
    gpswanderer, 23. Juli 2017
    #2
  3. Du kannst die Aggregate mit den Domain-Funktionen (z. Bsp. DSum) direkt in der Aktualisierungsabfrage verwenden. Alternativ kann man auch eigene Ersatzfunktionen für o.g. Funktionen in einer Aktualisierungsabfrage verwenden.

    PS: dass man sich Inkonsistenzen der Daten bei derartigen Aktionen einhandeln kann, sollte Dir bewußt sein.
     
    Nouba, 23. Juli 2017
    #3
  4. Operation muss eine aktualisierbare Abfrage verwenden

    Die Syntax der gezeigten Anweisung ist korrekt, aber Jet ist schlicht "zu doof", um innerhalb einer Aktualisierungsabfrage eine gejointe Abfrage einzubeziehen. Die Fehlermeldung ist da nur Ausdruck von Hilflosigkeit.

    Lösung wäre, wie bereits von Nouba genannt, die Zuweisungswerte per Domänenaggregatfunktion zu ermitteln. Genaueres könnte man erst sagen, wenn man die Definition der gruppierten Abfrage selber kennt.
     
    ebs17, 23. Juli 2017
    #4
  5. Hallo zusammen,

    vielen Dank für eure Tipps.
    Aber vielleicht könnt ihr mir besser helfen, wenn ich euch eine vereinfachte Beispiel-DB hochlade. Hier sind zwei Tabellen in Beziehung, tblProjekt zu tblTeilprojekt.
    Folgende Funktion soll gegeben sein:
    Sobald ein neues Teilprojekt mit entsprechenden Kosten angefügt wird oder die Kosten eines bereits vorhandenen Teilprojekts verändert werden, sind die Kosten des Projektes anzupassen. Die neuen Projektkosten sollen aber in der Projekttabelle (tblProjekt) geschrieben werden und nicht als berechnender Wert nur im Formular stehen.

    Dies wollte ich mit einer Aktualisierungsabfrage erledigen. Indem ich im ersten Schritt die Teilprojektkosten mit einer Abfrage auf ProjektID gruppiere und dann im zweiten Schritt mit einer Aktualisierungsabfrage die Projektkosten anpasse (siehe Beispiel-DB).
    Allerdings funktioniert dies nicht aufgrund des Fehlers „Operation muss eine aktualisierbare Abfrage verwenden“.

    Wie muss ich da vorgehen?

    Vielen Dank im Voraus!

    Gruß
    Dierk
     
  6. Hallo,
    lasse es sein.
    Es ist völlig überflüssig die Projektkosten redundant in der Projektkosten zu speichern, es ist auch fehlerträchtig.
    Die Projektkosten sind die Summe der Kosten der Teilprojekte. Und diese Summe ist stets automatisch aktuell und auch fehlerfrei.
    Diese Summe der Teilprojekte kann man auch problemlos in einem (Haupt)Formular (das die Projekte zeigt) anzeigen. Nur dann kannst Du zweifelsfrei sicher sein, dass die Projektsumme stimmt. Das lässt sich so gestalten, dass der Anwender gar nicht merkt, dass die Projektkosten gar nicht in der Tabelle stehen.
     
    gpswanderer, 2. September 2017
    #6
  7. Moin,

    Du versuchst eine Abfrage upzudaten - so weit ich weiß, geht das nicht, weil Abfrageergebnisse nicht gespeichert werden.

    Ansonsten kann ich Klaus nur zustimmen, die Summe der Kosten pro Projekt gehört aufs Formular, jedoch nie, nie, nie in die Tabelle. Mal Dir aus, was für Klimmzüge nötig sind, den gespeicherten Wert bei einer Änderung der TP-Kosten zu berichtigen, dabei kann man sich leicht den Hals brechen.
     
    drambeldier, 3. September 2017
    #7
  8. Operation muss eine aktualisierbare Abfrage verwenden

    Hallo zusammen,

    OK ich verwerfe meine ursprüngliche Idee und probiere über DSum im Formular die Summen zu den Projekten zu berechnen.
    Allerdings brauche ich auch hierzu eure Unterstützung.

    In der Beispiel-DB habe ich mein Problem vereinfacht aufgebaut. Es gibt die Tabellen Projekte, Teilprojekte und Aufträge. Diese Tabellen habe ich in Beziehungen gesetzt.
    Wenn ich nun in den Tabellen direkt Eingaben mache, dann werden in der Tabelle "Aufträge" sowohl die Teilprojekt-ID als auch die Projekt-ID in den Datensatz automatisch mit übernommen.
    Mache ich das aber über das Formular, wird die Projekt-ID nicht in den neu angefügten Auftrags-Datensatz übernommen.
    Was muss getan werden, dass im Unterformular "tblAufträge" im Feld "FS_Projekt" die Verknüpfung zur Projekt-ID hergestellt wird. Damit in der Tabelle Aufträge auch über die Formulareingabe im Datensatz die Teilprojekt-ID und die Projekt-ID steht.

    Vielen Dank im Voraus
     
  9. Hallo,
    die Beziehungen dürften so falsch sein.
    Die Doppelbeziehung zwischen Teilprojekt und Auftrag ist so unmöglich bzw. kann nicht funktionieren..

    Es wäre erst mal zu klären, von was der Auftrag abhängt.
    Ein Auftrag betrifft doch bestimmt ein Projekt und die Teilprojekte gehören doch auch zu diesem Auftrag oder ?
    Oder gibt es zu einem Projekt/Teilprojekt mehrere Aufträge ?
    Bitte die Zusammenhänge mal genauer erläutern.
    Davon hängen die Beziehungen ab.
     
    gpswanderer, 8. September 2017
    #9
  10. Die Beziehung ist nicht falsch - sondern identifizierend.

    Im Anhang habe ich sie aber auch geändert.
     
  11. Moin,
    nichts - die Projekt-Id gehört nicht in den Auftrag, weil sie über das Teilprojekt gefunden wird. Deshalb entfällt das Attribut FS_Projekt in Aufträge. Anzeigen kann man das im Formular, wenn als Datenquelle nicht die Tabelle Aufträge genommen wird, sondern eine Abfrage, die sich die Projekt-Id aus dem Teilprojekt besorgt. btw: Es ist keine gute Idee, Formularnamen mit tbl beginnen zu lassen.

    Ich vermute, dass 1 Projekt viele Teilprojekte haben kann und 1 Teilprojekt viele Aufträge. Damit wäre Aufträge kein UF zum Projekt, sondern zum Teilprojekt.

    Anbei ein überarbeiteter Entwurf.
     
    drambeldier, 8. September 2017
    #11
  12. Hallo,
    alles nur Vermutungen. Daher ja meine Rückfragen in #9.

    Auch mit dem Hinweis von Nouba in #10 bin ich der Auffassung, dass die Beziehungen im Beispiel aus #8 falsch sind. Welchen Sinn soll es machen über die beiden FS einen zusammengesetzten eindeutigen PK zu legen, wenn das wirklich als identifizierend gedacht war.

    Aber wie gesagt, erst müssten mal die Zusammenhänge geklärt werden, es könnte ja auch sein, dass ein Auftrag ein Projekt auslöst, dann gäbe es in der Tabelle mit den Projekten nur einen Fremdschlüssel zum Auftrag.
     
    gpswanderer, 8. September 2017
    #12
  13. Operation muss eine aktualisierbare Abfrage verwenden

    \@Ralf,

    die Aussage, dass die Projekt-Id nicht in die Aufträge gehört, ist so nicht richtig. Sie (die Projekt-Id) muß zur Identifizierung nicht durchgereicht werden - sie darf es aber. Sie würde dann natürlich mit dem Autowertfeld zusammen den Primärschlüssel von Teilprojekte darstellen.

    Im vorliegenden Fall scheint aber kein Vorteil aus dieser Methode hervorzugehen - in weit verschachtelten Modellen lassen sich aber damit beim Abfragen der Daten durchaus meßbare Performance-Gewinne (auf Kosten von Speicherplatz in den Tabellen) erzielen.

    @Forelle,

    so wie Projekt und Teilprojekt ausgelegt ist, kann man auch mit einem Self-Join Projekt nebst Teilobjekt in einer Tabelle erfassen. Es gibt dann zusätzlich einen Fremdschlüsselfeld auf die Projekt-Tabelle selbst, das bei Projekten Null ist und bei Teil-Projekten als Fremdschlüssel den Primärschlüssel des Projekts beinhaltet. Ein Vorteil davon wäre, dass auch zusätzlich direkt vom Projekt aus Auifträge erstellt werden können.
     
  14. Moin, Nouba,
    ausgehend vom momentanen Zustand - TP hat nur Autowert als PK - schon.
    umgekehrt wird ein Schuh draus: Wenn Teilprojekt einen zweiteiligen PK hat, können beide Attribute zum Auftrag duchgereicht werden.
     
    drambeldier, 8. September 2017
    #14
  15. Hallo zusammen,

    vielen Dank für eure Unterstützung.
    Es ist immer wieder erstaunlich zu sehen, welche Lösungen es gibt.

    Besonders bedanken möchte ich mich bei denen, die meine Beispiel-DB entsprechend überabreitet haben.

    Super Forum hier!!

    Gruß
    Dierk
     
Thema:

Operation muss eine aktualisierbare Abfrage verwenden

Die Seite wird geladen...
  1. Operation muss eine aktualisierbare Abfrage verwenden - Similar Threads - Operation aktualisierbare Abfrage

  2. Die Reihenfolge, in der Excel Operationen in Formeln ausführt

    in Microsoft Excel Tutorials
    Die Reihenfolge, in der Excel Operationen in Formeln ausführt: Die Reihenfolge, in der Excel Operationen in Formeln ausführt Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007...
  3. operation muss eine aktualisierbare Abfrage verwenden

    in Microsoft Access Hilfe
    operation muss eine aktualisierbare Abfrage verwenden: Hallo Zusammen, vielleicht bin ich zu blöd, aber ich kriege es nicht hin. Abfrage im Entwurfsmodus geöffnet: Tabelle 1: Felder Zahl 1, Zahl 2 (Zahl 2 ist noch leer) Tabelle 2: Felder Zahl 1,...
  4. Syntaxfehler in JOIN-Operation

    in Microsoft Access Hilfe
    Syntaxfehler in JOIN-Operation: Guten Tag, Ich habe mal wieder ein kleines Problem, bei dem Google mir leider nicht weiterhelfen konnte. Vorweg: ich habe nach der Vorlage CreaKombi gearbeitet, die ich im Anhang mit hochgeladen...
  5. Unzulässige Operation

    in Microsoft Access Hilfe
    Unzulässige Operation: Hallo zusammen, ich bin gerade am verzweifeln. Ich habe drei Abfragen. Abfrage 1 zählt einen Schlüssel in den letzten 4 Wochen je Kunde Code: SELECT KUNDE, Sum(MC) AS MC4Wo, Avg(AUSL) AS AvgAusl...
  6. Operation muss eine aktualisierbare Abfrage verwenden

    in Microsoft Access Hilfe
    Operation muss eine aktualisierbare Abfrage verwenden: Hallo könnte mir jemand sagen warum ich hierbei die Fehlermeldung, die ich im Titel beschrieben habe, bekomme? Ich kann den Fehler nicht finden und verstehe die Fehlermeldung nicht....
  7. Excel VBA :: Klassenmodul für Textboxen :: Unterschiedliche Operationen je Textbox

    in Microsoft Excel Hilfe
    Excel VBA :: Klassenmodul für Textboxen :: Unterschiedliche Operationen je Textbox: Ich habe ein Formular mit mehr als 20 Textboxen, in die abhängig von der Textbox unterschiedliche Daten eingegeben werden sollen. In einige sollen numerische Daten, in andere Buchstaben (d.h....
  8. excel führt keine operationen mehr aus

    in Microsoft Excel Hilfe
    excel führt keine operationen mehr aus: wer kann helfen. wir arbeiten seit einigen jahren ohne probleme mit excel. es werden vorrangig u.a. zeiterfassungsbögen erstellt. hierzu werden monatsberichte geleert und wieder verwendet. seit...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden