MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 23.07.2017, 17:33   #1
Forelle
MOF User
MOF User
Standard Acc2010 - 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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.07.2017, 17:38   #2
gpswanderer
MOF Guru
MOF Guru
Standard

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.

__________________

Gruß
Klaus
Office2010, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.07.2017, 17:55   #3
Nouba
MOF Guru
MOF Guru
Standard

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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.07.2017, 08:20   #4
ebs17
MOF Guru
MOF Guru
Standard

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.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.09.2017, 10:14   #5
Forelle
Threadstarter Threadstarter
MOF User
MOF User
Standard

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
Angehängte Dateien
Dateityp: zip AggregierenTabelle.zip (27,2 KB, 6x aufgerufen)
Forelle ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.09.2017, 11:03   #6
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,

Zitat:

Wie muss ich da vorgehen?

lasse es sein.

Zitat:

Die neuen Projektkosten sollen aber in der Projekttabelle (tblProjekt) geschrieben werden und nicht als berechnender Wert nur im Formular stehen.

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.

__________________

Gruß
Klaus
Office2010, Win10

Geändert von gpswanderer (03.09.2017 um 11:09 Uhr).
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.09.2017, 13:53   #7
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

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.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.09.2017, 21:36   #8
Forelle
Threadstarter Threadstarter
MOF User
MOF User
Standard

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
Angehängte Dateien
Dateityp: zip AggregierenTabelle.zip (36,2 KB, 6x aufgerufen)
Forelle ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.09.2017, 23:01   #9
gpswanderer
MOF Guru
MOF Guru
Standard

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.

__________________

Gruß
Klaus
Office2010, Win10

Geändert von gpswanderer (08.09.2017 um 23:37 Uhr).
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.09.2017, 00:38   #10
Nouba
MOF Guru
MOF Guru
Standard

Die Beziehung ist nicht falsch - sondern identifizierend.

Im Anhang habe ich sie aber auch geändert.
Angehängte Dateien
Dateityp: zip mof_344449.zip (31,6 KB, 5x aufgerufen)
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.09.2017, 10:13   #11
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

Zitat:

Was muss getan werden

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.
Angehängte Dateien
Dateityp: rar dd_AggregierenTabelle.rar (32,3 KB, 3x aufgerufen)

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.09.2017, 10:34   #12
gpswanderer
MOF Guru
MOF Guru
Standard

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.

__________________

Gruß
Klaus
Office2010, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.09.2017, 10:48   #13
Nouba
MOF Guru
MOF Guru
Standard

@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.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.09.2017, 11:10   #14
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin, Nouba,

Zitat:

dass die Projekt-Id nicht in die Aufträge gehört, ist so nicht richtig.

ausgehend vom momentanen Zustand - TP hat nur Autowert als PK - schon.

Zitat:

Sie würde dann natürlich mit dem Autowertfeld zusammen den Primärschlüssel von Teilprojekte darstellen.

umgekehrt wird ein Schuh draus: Wenn Teilprojekt einen zweiteiligen PK hat, können beide Attribute zum Auftrag duchgereicht werden.

__________________

Gruß
Ralf

Geändert von drambeldier (09.09.2017 um 11:18 Uhr). Grund: Tippfehler
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.09.2017, 21:09   #15
Forelle
Threadstarter Threadstarter
MOF User
MOF User
Standard

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
Forelle ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.