Discussion:
Abfrage ob Änderungen in einer Access-DB gespeichert werden sollen
(zu alt für eine Antwort)
Susann Markward
2008-03-10 10:09:34 UTC
Permalink
Hallo,

ich nutze MS Office Access 2003. Nun ist mir aufgefallen, dass die
Software Änderungen in den Tabellen ohne weitere Nachfrage übernimmt.

Ist das normal und gewollt oder eine Einstellungssache?

Bsp.:
Ändere ich den Wert einer Variablen in einer Tabelle und schließe die
Tabelle ohne vorher auf den Speichern-Button zu drücken, wird ohne
Nachfrage, ob ich die Änderung speichern möchte die Änderung übernommen.
Auch wenn ich Access komplett schließe kommt keine Abfrage.

Das bin ich so zumindest von den anderen MS Tools (WinWord, Excel, ...)
nicht gewohnt.


MfG
Susann
Gunter Avenius
2008-03-10 10:15:44 UTC
Permalink
Hallo Susann,
Post by Susann Markward
ich nutze MS Office Access 2003. Nun ist mir aufgefallen, dass die
Software Änderungen in den Tabellen ohne weitere Nachfrage übernimmt.
Ist das normal und gewollt oder eine Einstellungssache?
Ändere ich den Wert einer Variablen in einer Tabelle und schließe die
Tabelle ohne vorher auf den Speichern-Button zu drücken, wird ohne
Nachfrage, ob ich die Änderung speichern möchte die Änderung übernommen.
Auch wenn ich Access komplett schließe kommt keine Abfrage.
Das bin ich so zumindest von den anderen MS Tools (WinWord, Excel, ...)
nicht gewohnt.
Das ist normales ein Verhalten. Daten sollten auch ausschließlich in
Formularen erfasst werden. Dort kannst Du per Code Änderungen
abfangen:

www.donkarl.com?FAQ4.32

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

SQL Server-Entwickler-Konferenz: www.donkarl.com/?SEK
Sa/So 12./13.04.2008 und Sa/So 19./20.04.2008
Susann Markward
2008-03-10 10:59:38 UTC
Permalink
Hallo,
Post by Gunter Avenius
Das ist normales ein Verhalten. Daten sollten auch ausschließlich in
Formularen erfasst werden. Dort kannst Du per Code Änderungen
www.donkarl.com?FAQ4.32
Erst einmal danke für den Hinweis.

Nun muss ich aber doch noch einmal nachfragen.

Ich möchte mit Access eigentlich nicht so arbeiten, wofür Access
eigentlich gedacht ist. Nämlich dort eine DB-Oberfläche über Formulare
kreieren, so dass der User Änderungen an den Tabellen ausschließlich
über die Formulare vornehmen kann.

Ich habe ein VB6-Programm, welches Änderungen an verschiedenen Tabellen
einer/mehrerer DBs vornimmt.

MS Access nutze ich eigentlich nur, um die Default-Einstellungen der
einzelnen Parameter, die in Tabellen der Access-DB gespeichert sind,
vorzunehmen und gelegentlich mal abzuändern.

Kann ich das Verhalten von MS Access evtl. so abändern, wie ich das gern
hätte?
Susann Markward
2008-03-10 11:01:33 UTC
Permalink
Hallo,
Post by Gunter Avenius
Das ist normales ein Verhalten. Daten sollten auch ausschließlich in
Formularen erfasst werden. Dort kannst Du per Code Änderungen
www.donkarl.com?FAQ4.32
Wozu gibt es dann in der Button-Leiste überhaupt ein Symbol für das
Speichern? Oder eben einen entsprechenden Menüpunkt?
Michael Zimmermann
2008-03-10 11:06:47 UTC
Permalink
Hallo!
Post by Susann Markward
Wozu gibt es dann in der Button-Leiste überhaupt ein
Symbol für das Speichern? Oder eben einen entsprechenden
Menüpunkt?
Die automatische Speicherung erfolgt erst beim
Datensatzwechsel. (Der auch beim Schließen einer
Tabelle oder der ganzen Anwendung ausgelöst wird.)

Bei /wichtigen/ Daten willst Du den Datensatz vielleicht
sofort nach jeder Eingabe in einem Feld schon speichern.

Gruß aus Mainz
Michael
Stefan Dase
2008-03-10 11:47:40 UTC
Permalink
Hallo Michael!
Post by Michael Zimmermann
Post by Susann Markward
Wozu gibt es dann in der Button-Leiste überhaupt ein
Symbol für das Speichern? Oder eben einen entsprechenden
Menüpunkt?
Die automatische Speicherung erfolgt erst beim
Datensatzwechsel. (Der auch beim Schließen einer
Tabelle oder der ganzen Anwendung ausgelöst wird.)
Bei /wichtigen/ Daten willst Du den Datensatz vielleicht
sofort nach jeder Eingabe in einem Feld schon speichern.
Einspruch! Ein geänderter Datensatz wird über das Menüsysmbol
_nicht_gespeichert! Einfacher Test: Datensatz ändern -> Datensatzzeiger
(ganz links) wird zum Stift-Symbol, d.h. es liegen nicht gespeicherte
Änderungen vor. Auch nach Mausklick auf den Speichern-Eintrag bleibt der
Satz noch als geändert markiert.

Statt dessen werden hierdurch Layout-Änderungen (Spaltenbreiten,
Sortierung usw.) für die Tabellenansicht gesichert.

Viele Grüße nach Mainz! :)
Stefan
Michael Zimmermann
2008-03-10 12:23:09 UTC
Permalink
Hallo!
Post by Stefan Dase
Hallo Michael!
Post by Michael Zimmermann
Post by Susann Markward
Wozu gibt es dann in der Button-Leiste überhaupt ein
Symbol für das Speichern? Oder eben einen
entsprechenden Menüpunkt?
Die automatische Speicherung erfolgt erst beim
Datensatzwechsel. (Der auch beim Schließen einer
Tabelle oder der ganzen Anwendung ausgelöst wird.)
Bei /wichtigen/ Daten willst Du den Datensatz vielleicht
sofort nach jeder Eingabe in einem Feld schon speichern.
Einspruch! Ein geänderter Datensatz wird über das
Menüsysmbol _nicht_gespeichert!
Bei "entsprechender Menüpunkt" dachte ich an
Datensätze > Datensatz speichern (Umschalt Eingabe)

Gruß aus Mainz
Michael

Michael Zimmermann
2008-03-10 10:19:18 UTC
Permalink
Hallo!
Post by Susann Markward
ich nutze MS Office Access 2003. Nun ist mir aufgefallen,
dass die Software Änderungen in den Tabellen ohne weitere
Nachfrage übernimmt.
Ist das normal und gewollt oder eine Einstellungssache?
Ja, das ist gewollt.
Post by Susann Markward
Das bin ich so zumindest von den anderen MS Tools
(WinWord, Excel, ...) nicht gewohnt.
Man ging früher davon aus, daß in Datenbanken nur
/wirklich/ wichtige Daten erfaßt werden, deren Verlust
einem Weltuntergang gleichkommt. Daher werden diese
möglichst rasch gespeichert.

Stell Dir vor, die Meßdaten, die Challenger kurz vor der
Explosion noch übermittelt, gehen verloren. Eine unsägliche
Katastrophe für die Physik.

Stell Dir vor, die Ostergrüße an Tante Frieda, die in Word
getippt wurden, gehen verloren. Macht nix, kann man nochmal
tippen.

Gruß aus Mainz
Michael
Susann Markward
2008-03-10 10:47:31 UTC
Permalink
Hallo,
Post by Michael Zimmermann
Man ging früher davon aus, daß in Datenbanken nur
/wirklich/ wichtige Daten erfaßt werden, deren Verlust
einem Weltuntergang gleichkommt. Daher werden diese
möglichst rasch gespeichert.
Stell Dir vor, die Meßdaten, die Challenger kurz vor der
Explosion noch übermittelt, gehen verloren. Eine unsägliche
Katastrophe für die Physik.
Stell Dir vor, die Ostergrüße an Tante Frieda, die in Word
getippt wurden, gehen verloren. Macht nix, kann man nochmal
tippen.
Ein schönes Gleichnis ... ;-)

Hmm, irgendwie habe ich da wohl eine falsche Vorstellung von MS Access.
Wenn ich mit Access eine Tabelle einer DB ändere, sollte sich für meine
Verhältnisse Access so verhalten, dass eben ein User vor dem PC sitzt
und eben Eingaben tätigt (und dabei Fehler machen kann).

Ändere ich eine Tabelle einer Access-DB mit einem Programm (bspw. über
VB6 mit ADO-DB-Zugriff) wird ja nicht die Client-Software MS Access
benutzt und auch kein Formular. Hier muss das Programm schon so
geschrieben und v.a. validiert sein, dass die Änderungen durch die
Software ohne eine weitere Nachfrage übernommen werden können.

Insofern würde ich meinen, dass es schon sinnvoll wäre, dass abzuändern.
Michael Zimmermann
2008-03-10 11:03:38 UTC
Permalink
Hallo!
Post by Susann Markward
Post by Michael Zimmermann
Man ging früher davon aus, daß in Datenbanken nur
/wirklich/ wichtige Daten erfaßt werden, deren Verlust
einem Weltuntergang gleichkommt. Daher werden diese
möglichst rasch gespeichert.
Stell Dir vor, die Meßdaten, die Challenger kurz vor der
Explosion noch übermittelt, gehen verloren. Eine
unsägliche Katastrophe für die Physik.
Stell Dir vor, die Ostergrüße an Tante Frieda, die in
Word getippt wurden, gehen verloren. Macht nix, kann
man nochmal tippen.
Ein schönes Gleichnis ... ;-)
Hmm, irgendwie habe ich da wohl eine falsche Vorstellung
von MS Access. Wenn ich mit Access eine Tabelle einer DB
ändere, sollte sich für meine Verhältnisse Access so
verhalten, dass eben ein User vor dem PC sitzt und eben
Eingaben tätigt (und dabei Fehler machen kann).
Die Physiker mit den Meßdaten machen keine Fehler. Ich
kann Dir aus eigener Erfahrung versichern, daß Physiker
völlig unfähig sind, irgendetwas falsch zu machen. ;-)

Das Verhalten ist eben geprägt worden in einer Zeit, als
nur Profesoren in weißen Kitteln den Computerraum mit den
sich drehenden Bändern betreten durften und jederzeit
mit Hardware-Ausfällen zu rechnen war.
Post by Susann Markward
Ändere ich eine Tabelle einer Access-DB mit einem
Programm (bspw. über VB6 mit ADO-DB-Zugriff) wird ja
nicht die Client-Software MS Access benutzt und auch kein
Formular. Hier muss das Programm schon so geschrieben und
v.a. validiert sein, dass die Änderungen durch die
Software ohne eine weitere Nachfrage übernommen werden
können.
Falls Du darauf rauswillst, daß Validierung Client-Sache
ist: Nein. Regeln müssen immer vom RDBMS durchgesetzt
werden. Eine client-seitige Validierung ist höchstens
ein zusätzliches Schmankerl, um den User mit lustigeren
Fehlermeldungen, als sie das System generiert, zu erfreuen.
Post by Susann Markward
Insofern würde ich meinen, dass es schon sinnvoll wäre,
dass abzuändern.
Deine User sollen die Tabellen selbst gar nicht zu Gesicht
bekommen. In einem Access-Formular wiederum kannst Du frei
programmieren und das Verhalten so steuern, wie Du willst.

Entweder durch /zusätzliche/ Validierung bei der Eingabe
oder durch Einbauen einer Rückfrage, ob gespeichert werden
soll. Siehe z. B.
http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.32

Gruß aus Mainz
Michael
Jens Schilling
2008-03-10 11:06:45 UTC
Permalink
Hallo, Susann
Post by Susann Markward
Hmm, irgendwie habe ich da wohl eine falsche Vorstellung von MS
Access. Wenn ich mit Access eine Tabelle einer DB ändere, sollte sich
für meine Verhältnisse Access so verhalten, dass eben ein User vor
dem PC sitzt und eben Eingaben tätigt (und dabei Fehler machen kann).
Da sind Deine Vorstellungen eben zum Teil nicht ganz in Ordnung; wie Michael
schon schrieb, ein normaler User kriegt die Tabellen gar nicht zu sehen,
sondern benutzt Formulare; und in diesen kannst Du (als Programmiererin)
dann reagieren, und nachfragen ( Wollen Sie wirklich ... ) so viel Du
möchtest.

Im übrigen, wenn Du *eine Tabelle* änderst fragt Access auch nach, nicht
aber, wenn Du einem Datensatz einer Tabelle änderst .
Post by Susann Markward
Insofern würde ich meinen, dass es schon sinnvoll wäre, dass
abzuändern.
Grausam - allein die Vorstellung ;-)
Stell Dir vor, Du würdest massenweise Detaildatensätze z.B. für Rechungen
erfassen, und nach jeder einzelen Rechungsposition käme wie von Dir verlangt
ein entsprechender Dialog.

Nein, ich find das schon völlig in Ordnung, dass ich als Programmierer
bestimme, wann ich Änderungen an Datensätzen bestätigt habe möchte.
--
Gruss
Jens
______________________________
2. SEK (SQL Server-Entwickler-Konferenz)
Nürnberg, 12./13.4 und 19./20.4.2008
FAQ: http://www.donkarl.com
Susann Markward
2008-03-10 11:13:21 UTC
Permalink
Hallo,
Post by Jens Schilling
Da sind Deine Vorstellungen eben zum Teil nicht ganz in Ordnung; wie Michael
schon schrieb, ein normaler User kriegt die Tabellen gar nicht zu sehen,
sondern benutzt Formulare; und in diesen kannst Du (als Programmiererin)
dann reagieren, und nachfragen ( Wollen Sie wirklich ... ) so viel Du
möchtest.
Nun, auch ich als ProgramiererIn kann Fehler machen. Außerdem frage ich
mich dann, wozu Access überhaupt einen Speichern-Button anzeigt, sowie
einen entsprechenden Menüpunkt anbietet.
Post by Jens Schilling
Im übrigen, wenn Du *eine Tabelle* änderst fragt Access auch nach, nicht
aber, wenn Du einem Datensatz einer Tabelle änderst .
Ich meinte natürlich letzteres. Was ist denn der Unterschied? Ich dachte
immer, wenn ich einen Datensatz einer Tabelle ändere, ändert sich damit
auch die Tabelle.
Post by Jens Schilling
Grausam - allein die Vorstellung ;-)
Stell Dir vor, Du würdest massenweise Detaildatensätze z.B. für Rechungen
erfassen, und nach jeder einzelen Rechungsposition käme wie von Dir verlangt
ein entsprechender Dialog.
Nunja, dass würde man dann wahrscheinlich ja nicht direkt in Access
(Tabellenansicht) machen, sondern wohl eher über Formulare, wo man ja
das Verhalten steuern kann, wie wir schon festgestellt haben.
Post by Jens Schilling
Nein, ich find das schon völlig in Ordnung, dass ich als Programmierer
bestimme, wann ich Änderungen an Datensätzen bestätigt habe möchte.
Ich hätte es zumindest für sinnvoll erachtet, wenn man die Entscheidung
dem User/Programmierer (also mir) überlassen hätte und eine
entsprechende Option unter Extras angeboten hätte.
Michael Zimmermann
2008-03-10 11:26:53 UTC
Permalink
Hallo!
Post by Susann Markward
Nun, auch ich als ProgramiererIn kann Fehler machen.
Natürlich nicht. ;-)
Post by Susann Markward
Ich meinte natürlich letzteres. Was ist denn der
Unterschied? Ich dachte immer, wenn ich einen Datensatz
einer Tabelle ändere, ändert sich damit auch die Tabelle.
Nein. Eine Tabelle sollte richtigerweise eigentlich
Tabellendefinition heißen (in ordentlich: Relation)
und enthält nur Informationen über Felder, Feldnamen,
Feldregeln etc.

Die Datensätze sind Tupel, die strukturell der in der
Relation vorgegebenen Definition entsprechen müssen.

Diese Tupel (Datensätze) sind *ausschließlich* mittels
SQL zugänglich. Daß man eine "Tabelle" in der Datenansicht
öffnen zu können scheint, ist eine Mogelpackung. Intern
steht das SQL-Statement SELECT * FROM Tabellendefinition
dahinter, d. h. die Ansicht der Tabelle am Bildschirm ist
eigentlich schon eine intern generierte Abfrage.

Alles andere würde auch der dem ganzen zugrundeliegenden
mathematischen Theorie widersprechen.

Daß man in Access und auch anderen DB-Schnittstellen
scheinbar "Tabellen" direkt verwenden kann, ist eine
dem gemeinen Menschenverstand entgegenkommende
Bequemlichkeit, die sich eigentlich gar nicht gehört.

Gruß aus Mainz
Michael
Stefan Dase
2008-03-10 11:45:52 UTC
Permalink
Hallo Susann!
Post by Susann Markward
Nun, auch ich als ProgramiererIn kann Fehler machen. Außerdem frage ich
mich dann, wozu Access überhaupt einen Speichern-Button anzeigt, sowie
einen entsprechenden Menüpunkt anbietet.
Neben der Diskussion, ob und wann ein Speichern bei Datensatzänderungen
sinnvoll ist oder nicht, noch ein Hinweis zu dem Speichern-Symbol:

Wenn du das Layout (Spaltenbreiten, Sortierung usw.) einer
Tabellenansicht änderst, fragt Access sehr wohl nach, ob dies
gespeichert werden soll. Diese Änderungen kannst du über das Symbol oder
den entsprechenden Menüeintrag schon vor dem Schließen der Ansicht sichern.

Ein geänderter Datensatz wird über das Menüsysmbol übrigens
_nicht_gespeichert! Einfacher Test: Datensatz ändern -> Datensatzzeiger
(ganz links) wird zum Stift-Symbol, d.h. es liegen nicht gespeicherte
Änderungen vor. Auch nach Mausklick auf den Speichern-Eintrag bleibt der
Satz noch als geändert markiert.

Ansonsten schließe ich mich der Einstellung meiner Vorredner an. Sieh es
einfach als Feature an.

Viele Grüße aus Bremen,
Stefan
Thomas Winkler
2008-03-10 11:49:45 UTC
Permalink
Hi,
Post by Susann Markward
Nun, auch ich als ProgramiererIn kann Fehler machen. Außerdem frage ich
mich dann, wozu Access überhaupt einen Speichern-Button anzeigt, sowie
einen entsprechenden Menüpunkt anbietet.
Z.B. Falls Du die Daten schon mal speichern willst, ohne zum nächsten DS
zu Wechseln...und wieder zurück.
Post by Susann Markward
Post by Jens Schilling
Im übrigen, wenn Du *eine Tabelle* änderst fragt Access auch nach,
nicht aber, wenn Du einem Datensatz einer Tabelle änderst .
Ich meinte natürlich letzteres. Was ist denn der Unterschied? Ich dachte
immer, wenn ich einen Datensatz einer Tabelle ändere, ändert sich damit
auch die Tabelle.
Du kennst den Unterschied zwischen DDL und DML?
Post by Susann Markward
Nunja, dass würde man dann wahrscheinlich ja nicht direkt in Access
(Tabellenansicht) machen, sondern wohl eher über Formulare, wo man ja
das Verhalten steuern kann, wie wir schon festgestellt haben.
Und genau das is der Knackpunkt. Prinzipiell wird bei DML nicht gefragt,
wer's will kanns selber einbauen. Und das ist bei Dir der Fall. Und wenn
Du keine Access-Forms nutzt, musst Du eben in Deinem Frontend die Frage
einbauen.
Post by Susann Markward
Post by Jens Schilling
Nein, ich find das schon völlig in Ordnung, dass ich als Programmierer
bestimme, wann ich Änderungen an Datensätzen bestätigt habe möchte.
Ich hätte es zumindest für sinnvoll erachtet, wenn man die Entscheidung
dem User/Programmierer (also mir) überlassen hätte und eine
entsprechende Option unter Extras angeboten hätte.
Irgendwie hab' ich das Gefühl, dass Du eine falsche Vorstellung von
Access hast.

Thomas

--
"Access? Damit arbeite ich nicht. Das ist doch nur ein abgespecktes Excel."
Jens Schilling
2008-03-10 11:57:06 UTC
Permalink
Hallo, Susann
Post by Susann Markward
Nun, auch ich als ProgramiererIn kann Fehler machen.
Welchen Fehler eines Programmierers möchtest Du dauerhaft dadurch
verhindern, dass eine Rückfrage vor dem Speichern kommt ?
Post by Susann Markward
Außerdem frageich mich dann, wozu Access überhaupt einen Speichern-Button
anzeigt,sowie einen entsprechenden Menüpunkt anbietet.
Weil's den User beruhigt ?
Weil Du bewusst einen Datensatz speichern möchtest, ohne diesen zu verlassen
?
Weil ....
Post by Susann Markward
Post by Jens Schilling
Im übrigen, wenn Du *eine Tabelle* änderst fragt Access auch nach,
nicht aber, wenn Du einem Datensatz einer Tabelle änderst .
Ich meinte natürlich letzteres. Was ist denn der Unterschied? Ich
dachte immer, wenn ich einen Datensatz einer Tabelle ändere, ändert
sich damit auch die Tabelle.
Wir haben hier anscheinend einen unterschiedlichen Sprachgebrauch; wenn
*ich* eine Tabelle ändere, meine ich den Entwurf einer Tabelle, indem ich
z.B. ein Feld hinzufüge, oder Eigenschaften bestehender Felder ändere. Stell
Dir eine Tabelle wie ein Gefäss vor, das Daten aufnimmt; wenn Du z.B. aus
dem Gefäss Badewanne einen Liter Wasser entnimmst, hast Du doch auch an den
Eigenschaften der Badewanne nicht wirklich etwas geändert ( bitte nicht mit
dem Füllgrad als Argument kommen ;-) ) .
Post by Susann Markward
Post by Jens Schilling
Nein, ich find das schon völlig in Ordnung, dass ich als
Programmierer bestimme, wann ich Änderungen an Datensätzen bestätigt
habe möchte.
Ich hätte es zumindest für sinnvoll erachtet, wenn man die
Entscheidung dem User/Programmierer (also mir) überlassen hätte und
eine entsprechende Option unter Extras angeboten hätte.
Und wie weit möchtest Du da bei gehen ? Womöglich auch noch jedes einzelne
Feld abfragen ?
Nein, ich denke, Du bist ein ziemlich einsamer Rufer nach dieser
Funktionalität - denn ich kann diese da zur Verfügung stellen, wo sie
sinnvoll hingehört, nämlich in Formularen.
--
Gruss
Jens
______________________________
2. SEK (SQL Server-Entwickler-Konferenz)
Nürnberg, 12./13.4 und 19./20.4.2008
FAQ: http://www.donkarl.com
Michael Zimmermann
2008-03-10 11:34:26 UTC
Permalink
Hallo!
Post by Susann Markward
ich nutze MS Office Access 2003. Nun ist mir aufgefallen,
dass die Software Änderungen in den Tabellen ohne weitere
Nachfrage übernimmt.
Andere DBen verhalten sich übrigens genauso. Wenn Du am
SQL-Server direkt in die Tabellen schreibst, wird beim
Verlassen des Datensatzes auch in die DB geschrieben.

Gruß aus Mainz
Michael
Loading...