Datensatz ändern über button

Hallo,

wie kann ich einen Datensatz per Button ändern? Also ich möchte nicht, dass man die Datensätze einfach überschreiben kann, das Ändern sollte nur über einen Button erfolgen.
Bin absolute Anfängerin in Access, also bitte etwas verständlich für mich ausdrücken

Vielen Dank :smile:

Hallo,

du könntest in der Formularentwurfsansicht veranlassen, das du erstmal alle Datensätze gesperrt haben möchtest.

Anschliessend legst du dir zwei Buttons an:

Einen mit Bearbeiten und einen mit Speichern.

Der „Bearbeiten“-Button bekommt folgenden Befehl im Codefenster eingetragen:

Me.AllowEdits = True

Somit kann nun der Datensatz bearbeitet werden.

Der „Speichern“-Button bekommt den Befehl:

Me.AllowEdits = False

Somit sind alle Datensätze im Formular wieder gesperrt.

Gruss

Hallo,

Bin absolute Anfängerin in Access, also bitte etwas
verständlich für mich ausdrücken

bin zwar kein Anfänger, aber ich bitte auch:
-> bitte etwas verständlich für mich ausdrücken

Grüße aus Rostock
Wolfgang
(Netwolf)

das ist schon fast gut. Problem ist nur, wenn das Formular auf me.allowedits false gesetzt ist, dann kann ich auch kein unterformular mehr öffnen. somit ist das ganz formular gesperrt. das wollte ich nicht.
hast du dafür auch einen tipp?

naja etwas aufwändig, aber du könntest auch nur die einzelnen Felder ansprechen. Müsstest dann nur in über die Buttons jedes einzelne Feld ansprechen.

Also in etwa:

Me.[Text1].allowedits.false
Me.[Text2].allowedits.false
Me.[Text3].allowedits.false
.
.
.

Eien elgantere Lösung kann ich dir vllt heute Nachmittag geben, da muss ich erstmal selber probieren.

Gruss

Ja ne andere Lösung wäre toll, ich möchte nämlich gerne verhindern, dass man aus versehen irgendein Feld überschreibt, aber ansonsten weiter zu den Unterformularen kommt. Danke Dir schon mal und bin gespannt :smile:

Hallo,

naja etwas aufwändig, aber du könntest auch nur die einzelnen
Felder ansprechen. Müsstest dann nur in über die Buttons jedes
einzelne Feld ansprechen.

das ist soweit ok.

Aber das nicht:

Me.[Text1].allowedits.false
Me.[Text2].allowedits.false
Me.[Text3].allowedits.false

sondern etwa so:
Me![Text1].Locked=true
Me![Text2].Locked=true
Me![Text3].Locked=true

Ganz elegant wäre, bei jeden betroffenen Feld einen Wert in deren Eigenschaft „Marke“ zu schreiben und per Schleife alle Controls des Forms zu durchlaufen und dabei entspr. der „Marke“ die Locked-Eigenschaft setzen.

z.B:

Marke: L

Sub btnSperren_Click()
Dim ctl as Control
On error resume next
For each ctl In Me.Controls
ctl.locked = ctl.Tag=„L“
Next
End Sub

Sub btnEntSperren_Click()
Dim ctl as Control
On error resume next
For each ctl In Me.Controls
ctl.locked = not ctl.Tag=„L“
Next
End Sub

hallo df6gl,

danke für deinen tipp, aber

Me![Text1].Locked=true
Me![Text2].Locked=true
Me![Text3].Locked=true

das funktioniert leider auch nicht, egal ob ich es true oder false setze, ich kann immer noch in die felder überschreiben.

deinen anderen tipp verstehe ich nicht so ganz, was steht denn für die marke L? und muss ich dann noch button zum sperren und entsperren einfügen?

Hallo,

danke für deinen tipp, aber

Me![Text1].Locked=true
Me![Text2].Locked=true
Me![Text3].Locked=true

das funktioniert leider auch nicht, egal ob ich es true oder
false setze, ich kann immer noch in die felder überschreiben.

ja, und WO ,bzw. WANN führst Du die Codezeilen aus??

deinen anderen tipp verstehe ich nicht so ganz, was steht denn
für die marke L?

(Fast) jedes Steuerelement hat die Eigenschaft „Marke“ (Eigenschaftenfenster/Andere). In diese Eigenschaft(enzeile) schreibst Du den Buchstaben L (soll für L ocked stehen) als „Kennung“ oder „Markierung“.

und muss ich dann noch button zum sperren und
entsperren einfügen?

Wenn Du den vorgeschlagenen Code (und auch den Hinweis von That’s not all…) mal lesen würdest, dann ist diese Frage auch schon beantwortet.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

vielen dank - ich habe das problem jetzt gelöst. nochmals danke für deinen tipp…

gruß
jmarple