Neuigkeiten:

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

Mobiles Hauptmenü

Datensätze können nicht aktualisiert werden

Begonnen von Jochen1, April 18, 2016, 15:36:25

⏪ vorheriges - nächstes ⏩

Jochen1

Hallo,
ich nutze Access 2010 und tüftele an einem Problem, bei dem ich nicht weiterkomme und Eure Unterstützung benötige:

Ich habe eine Tabelle A mit einem Feld ,,Lfd.-Nr. A", der als Primärschlüssel definiert ist. Zu jedem Datensatz der Nr. A gibt es einen oder mehrere Unterdatensätze, die ich in eigene Tabellen B und C ,,ausgelagert" habe. Diese besitzen jeweils einen eigenen Primärschlüssel ,,Lfd. Nr. B" und ,,Lfd.-Nr. C" (AutoWert). Die Tabellen B und C besitzen jeweils ein Feld, dass dem Feld ,,Nr. A" entspricht. Die Erstellung der Primärschlüssel in den Tabellen erfolgte ohne Fehlermeldung.

Die Tabellen habe ich verknüpft: ,,Lfd.Nr. A" der Tabelle A in das Feld ,,Nr. A" der Tabelle B und ,,Lfd.Nr. A" der Tabelle A in ,,Nr. A" der Tabelle C (1:n).
Die Datenbank ist in ein Frontend und ein Backend aufgeteilt. Die Verknüpfungen sind im Backend erstellt. Beide befinden sich im gleichen Verzeichnis.

Nun habe ich verschiedene Probleme:

1.   Abfrage

Ich habe eine Abfrage A für die Datensätze der Tabelle A entworfen, in die die Gruppierten Werte der Tabellen B und C pro ,,Nr. A" einfliessen. Diese Abfrage funktioniert, so dass in den einzelnen Datensätzen der Lfd.-Nr. A die gruppierten (und berechneten) Werte aus B und C auftauchen (und weiterverarbeitet werden können).

Nun möchte ich einen Wert in Feld X der Abfrage A ändern, das aus Tabelle A stammt (nicht aus den Tabellen B oder C). Dieses Feld X lässt sich aber nicht mehr über die Abfrage A aktualisieren (,,Datensätze der Datensatzgruppe können nicht aktualisiert werden").

Wie lässt sich die Abfrage so gestalten, dass sich das Feld X ändern lässt ?

2.   Unterformular

Die Unterformulare der Tabellen B und C zeigen die zugrundeliegenden Daten nur dann an, wenn die Option ,,Daten eingeben" auf ,,nein" steht, ansonsten taucht nur ein ,,neuer Datensatz" auf. Gleiches gilt für das Hauptformular A.

In den Unterformularen habe ich gem. Hinweisen in diesem Forum auch die Option ,,Dynaset (inkonsistente Aktualisierungen) ausprobiert, ohne Wirkung. Wahrscheinlich hängt das Formularproblem mit der Verknüpfung/Abfrage zusammen.

Sicher stimmt irgendetwas nicht in meinen Verknüpfungen oder in der Struktur. Hat jemand einen Rat, wie ich das anders organisieren muss, damit ich den Wert des Feldes X ändern kann, aber auch die Verknüpfungen zu den Tabellen A und B besitze (bzw. den gruppierten Werten) ? Ich habe schon viel probiert, aber ich komme nicht darauf udn meine suche bisher war erfolglos.

Vielen Dank für Eure Unterstützung im Voraus !
Jochen
_______________
Access 2010

DF6GL

Hallo,

besser wäre das Posten der SQL-Strings der Abfragen....

Und hoffentlich heißen die Tabellenfelder nicht genau so wie beschrieben...

Dass die Abfragen in dieser Form nicht aktualisierbar sind, lässt sich nicht ändern.

Aber für die Lösung der (etwas unklaren) Aufgabe sind (zunächst) keine Abfragen nötig:

Erstelle für tblA eine Einzelform, für tblB und tblC je ein Endlosform.

In frmA werden frmB und frmC   jeweils als ein Unterform (UFO-Steuerelement mit Herkunftsobjekt zum entspr. Formular) eingebaut.

Das kann einfach durch Ziehen der Formulare aus dem Navi-Bereich auf  das Einzelform geschehen.



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

Beaker s.a.

Hallo Jochen,
Noch zur Ergänzung:
Zitatwenn die Option ,,Daten eingeben" auf ,,nein" steht, ansonsten taucht nur ein ,,neuer Datensatz" auf.
Das hat mit der Aktualisierung nichts zu tun.
Das bedeutet eben genau das, - das Form zeigt
(bei Ja) immer nur einen neuen DS an.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

Hallo,
Zitat von: Jochen1 am April 18, 2016, 15:36:25
Die Unterformulare der Tabellen B und C zeigen die zugrundeliegenden Daten nur dann an, wenn die Option ,,Daten eingeben" auf ,,nein" steht, ansonsten taucht nur ein ,,neuer Datensatz" auf.
auch das ist völlig normales Verhalten, die Einstellung "Daten eingeben=Ja" sorgt dafür, dass nur neue Datensätze hinzugefügt werden können und vorhandene Daten nicht zur Anzeige kommen. Das ist so gewollt - und das lässt sich auch in der Access-Hilfe nachlesen.
Freundliche Grüße
MaggieMay

Jochen1

Hallo,

vielen Dank für die schnellen Antworten,sorry, dass meine Beschreibung unzureichend zu sein scheint. Die Felder heissen in Wirklichkeit anders, aber die Logik ist richtig beschrieben.

@Beaker s.a. und MaggieMay:

Danke für die Erklärung, das hilft mir grundsätzlich weiter im Verständnis, aber ganz ist es mir nicht klar, denn wenn ich "Daten eingeben" auf "nein" stelle, sind im (Endlos- und Einzel-) Formular alle Datensätze vorhanden und ich kann sowohl Daten in den einzelnen Datensätzen ändern als auch einen Datensatz anfügen.

@ Franz: Ich hatte zunächst etwas Ähnliches gemacht:
Hauptformular als Einzelformular für Abfrage A, Unterformulare für tblB und tblC. Beide Unterformulare sind zum Hauptformular verknüpft (entsprechend der Tabellenverknüpfung). Einzelform für Hauptformular A und Endlosformulare für B und C.
Das funktioniert auch alles und die zugehörigen Werte in den Unterformularen werden zutreffend angezeigt. Ich kann aber im Hauptformular basierend auf Abfrage A dann nicht den Wert des Feldes X ändern.

Deshalb hatte ich auch bereits die Variante probiert, das Hauptformular auf tblA basieren zu lassen. Ergebnis: Es wird KEIN bzw. nur ein neuer Datensatz angezeigt. Entsprechend zeigen auch die Unterformulare jeweils neue Datensätze für tblB und tblC an (wenn ich hingegen im Hauptformular "Daten eingeben" auf "Nein" stelle, werden alle Datensätze angezeigt und neue Datensätze können angelegt werden, aber die Werte des Feldes X der tblA können eben nicht geändert werden).

Ich versuche also nochmal meine Frage zu formulieren:

Wie kann ich im Hauptformular der tblA (mit den Unterformularen tblB und tblC) die Datensätze der tblA anzeigen und den Wert des Feldes X der tblA ändern ?

Vielen Dank für Eure Hilfe (und vor allem Geduld, wenn ich die Terminologie manchmal nicht ganz treffe).
_______________
Access 2010

MzKlMu

Hallo,
Die Einstellung "Daten eingeben" auf "Ja" bedeutet, dass Du die bisherigen Datensätze nicht siehst. Das dient nur der Vereinfach der Dateneingabe, in dem die "alten" Datensätze einfach ausgeblendet werden. Auch mit Nein kannst Du neue Datensätze eingeben, musst aber erst zu einen neuen Datensatz springen. Mit Ja bist Du gleich in einem neuen Datensatz.

Zeige bitte mal die Abfrage (SQL) für das Hafo.
Gruß Klaus

Jochen1

Danke MzKlMu, Erklärung habe ich nun verstanden.

Ich glaube es funktioniert jetzt; ich habe nochmal die Variante von Franz probiert. Ich habe nun sowohl im Hauptformular als auch in den Unterformularen die Option "Daten eingeben" auf "nein" gestellt. Alles wird grundsätzlich zutreffend angezeigt (und meine Verknüpfungen scheinen auch i.O. zu sein).

Der Fehler war, über eine Abfrage zu filten, aber das muss ich eben anders lösen.

Vielen Dank für die Unterstützung und schönen Abend !

Jochen
_______________
Access 2010

MzKlMu

Hallo,
ZitatDer Fehler war, über eine Abfrage zu filten, aber das muss ich eben anders lösen.
das war nicht der Fehler, auch bei einer gefilterten Abfrage kannst Du Daten eingeben bzw. ändern. Auch wenn der Filter dann nicht mehr stimmt.
Gruß Klaus

DF6GL

Hallo,

ZitatIch kann aber im Hauptformular basierend auf Abfrage A dann nicht den Wert des Feldes X ändern.

Von einer Abfrage für frmA war (von mir) nicht die Rede..  Binde frmA einfach an tblA und nicht an eine (verknüpfende)  Abfrage. Die braucht es hier nicht.
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

Jochen1

Hallo,

danke für die Antworten; mein Ausgangsproblem war, dass ich eine Abfrage A dem Hauptformular zugrundegelegt hatte, die sich aus Werten der tblA und aus Werten einer gruppierten weiteren Abfrage zusammengesetzt (und gefiltert) war.

Ich habe gelernt, dass dies nicht funktionieren kann und habe das Formular nun an die tblA gebunden.

Der Grund meiner Vorgehensweise war, dass ich Berechnungen aus den gruppierten Werten der Abfrage A im Hauptformular sehen wollte. Das mache ich jetzt, in dem ich aus dem Hauptformular auf berechnete Felder in den Unterformularen verweise; das funktioniert allerdings (noch) nicht nicht reibungslos, manchmal erscheinen die Werte beim Aufruf, ein andermal nur #Name beim Aufruf. Dem muss ich noch nachgehen.

Filtern geht auch (und das Feld X lässt sich ändern). Ich hatte (mangels ausreichender Kenntnisse) mich also mit einer Kombination aus der Abfrage A und der Frage, welche Option bei "Daten eingeben" zu wählen ist, "verhakt".

Daher waren die Hilfestellungen von Euch sehr hilfreich, erneut vielen Dank für die Unterstützung !

Jochen


_______________
Access 2010

MzKlMu

Hallo,
Zitatund aus Werten einer gruppierten weiteren Abfrage zusammengesetzt
das Gruppieren ist der Knackpunkt. Filtern alleine spielt keine Rolle.
Abfragen die gruppierte Werte enthalten (auch aus weiteren Abfragen) können grundsätzlich nicht bearbeitet werden. Da gibt es auch keinen Trick.
Gruß Klaus