Discussion:
In Endlosform: Me.AllowEdits = False und trotzdem ist der Datensatz änderbar: Access Bug?
(zu alt für eine Antwort)
Christoph Rall
2007-07-11 12:38:48 UTC
Permalink
Hi Ihr,

habe folgendes Problem: wenn ich in meiner Endlosform mit dem Debugger
prüfe ist AllowEdits = False und dennoch ist der Datensatz in der
Endlosform durch den User änderbar!

Private Sub Form_Current()

Me.AllowAdditions = Not Me.Checkbox1 ' Datensätze sperren
(Ändern), wenn Datensatz schon verbucht
Me.AllowDeletions = Not Me.Checkbox1 ' Datensätze sperren
(Löschen), wenn Datensatz schon verbucht
Me.AllowEdits = Not Me.Checkbox1 ' Datensätze sperren (Zufügen),
wenn Datensatz schon verbucht

End Sub

Ist wahrscheinlich der Bug:
=> http://support.microsoft.com/?scid=kb%3Ben-us%3B167420&x=10&y=12

Nur: was mache ich jetzt, wie bekommen ich es hin, dass der Datensatz
gesperrt wird, dort wird mir keine Lösung angeboten.

Wir haben Access 2003 SP2 im Einsatz.

Gruß,
Christoph
Michael Zimmermann
2007-07-11 12:57:17 UTC
Permalink
Hallo!
Post by Christoph Rall
habe folgendes Problem: wenn ich in meiner Endlosform mit
dem Debugger prüfe ist AllowEdits = False und dennoch ist
der Datensatz in der Endlosform durch den User änderbar!
Private Sub Form_Current()
Me.AllowAdditions = Not Me.Checkbox1 ' Datensätze
sperren (Ändern), wenn Datensatz schon verbucht
Me.AllowDeletions = Not Me.Checkbox1 ' Datensätze
sperren (Löschen), wenn Datensatz schon verbucht
Me.AllowEdits = Not Me.Checkbox1 ' Datensätze sperren
(Zufügen), wenn Datensatz schon verbucht
End Sub
=>
http://support.microsoft.com/?scid=kb%3Ben-us%3B167420&x=10&y=12
Das soll laut Artikel nur A95 und A97 betreffen.
Post by Christoph Rall
Nur: was mache ich jetzt, wie bekommen ich es hin, dass
der Datensatz gesperrt wird, dort wird mir keine Lösung
angeboten.
Wir haben Access 2003 SP2 im Einsatz.
Ich kann das Verhalten mit A2003 nicht nachvollziehen.
Wenn im Form_Current steht
Me.AllowEdits = False
dann ist nach dem Datensatzwechsel das Bearbeiten auch
wirklich gesperrt.

Ich frage mich aber, wie das mit Deiner Checkbox überhaupt
funktionieren soll. Die wird, auch wenn ungebunden, durch
AllowEdits = False nämlich ebenfalls gesperrt. Wie willst Du
dann noch ihren Wert ändern?

Gruß aus Mainz
Michael
Christoph Rall
2007-07-12 08:22:42 UTC
Permalink
Hi Michael,
Post by Michael Zimmermann
Post by Christoph Rall
habe folgendes Problem: wenn ich in meiner Endlosform mit
dem Debugger prüfe ist AllowEdits = False und dennoch ist
der Datensatz in der Endlosform durch den User änderbar!
Private Sub Form_Current()
Me.AllowAdditions = Not Me.Checkbox1 ' Datensätze
sperren (Ändern), wenn Datensatz schon verbucht
Me.AllowDeletions = Not Me.Checkbox1 ' Datensätze
sperren (Löschen), wenn Datensatz schon verbucht
Me.AllowEdits = Not Me.Checkbox1 ' Datensätze sperren
(Zufügen), wenn Datensatz schon verbucht
End Sub
=>
http://support.microsoft.com/?scid=kb%3Ben-us%3B167420&x=10&y=12
Das soll laut Artikel nur A95 und A97 betreffen.
Er betrifft aber auch Access 2003 SP2, habe ihn jetzt verifizieren
(und damit umgehen) können....
Post by Michael Zimmermann
Post by Christoph Rall
Nur: was mache ich jetzt, wie bekommen ich es hin, dass
der Datensatz gesperrt wird, dort wird mir keine Lösung
angeboten.
Wir haben Access 2003 SP2 im Einsatz.
Ich kann das Verhalten mit A2003 nicht nachvollziehen.
Wenn im Form_Current steht
Me.AllowEdits = False
dann ist nach dem Datensatzwechsel das Bearbeiten auch
wirklich gesperrt.
Nein die Bearbeitung ist nicht gesperrt (obwohl Me.AllowEdits =
False), das ist der Bug, weil ich nämlich noch folgendes per
Sourcecode zusätzlich mache (endlich nach langem testen habe ich
herausgefunden an was es liegt...).

Me.Textbox1 = Me.Textbox2

Die hat die Folge, dass Access den Schreibschutz, obwohl Me.AllowEdits
= False gesetzt ist!, entfernt, weil ich per VBA Sourcecode auf eben
diese Textbox ändernd zugreife. Es ist also tatsächlich ein Bug,
eigentlich sollte da eine Fehlermeldung kommen, denn wenn ich die
Textbox eines mit Me.AllowEdits = False geschützten Datensatzes ändern
möchte.

Lasse ich also diese Zeile oben weg, dann funktioniert alles wie
gewohnt prima, der Datensatz ist dann gesperrt. Ich werde eben nun
darum herumprogrammieren und das Ändern eines Feldes per VBA bei
Me.AllowEdits = False unterlassen...

Unter:
=>
http://groups.google.de/group/microsoft.public.access.forms/browse_thread/thread/f9706936619de428/4be4a1cd0c941be4?lnk=st&q=allowedits+bug&rnum=1#4be4a1cd0c941be4
wird ein ähnliches Problem geschildert, er macht dort nämlich den
gleichen "Fehler", den ich auch gemacht habe.
Post by Michael Zimmermann
Ich frage mich aber, wie das mit Deiner Checkbox überhaupt
funktionieren soll. Die wird, auch wenn ungebunden, durch
AllowEdits = False nämlich ebenfalls gesperrt. Wie willst Du
dann noch ihren Wert ändern?
Der Sinn ist ein ganz einfacher: das Ja/Nein Feld wird in manchen
Datensätzen durch eine zuvor laufende Prozedur gesetzt (weil diese
Datensätze durch diese kostenrechnungstechnisch verbucht werden) und
der Benutzer darf dann natürlich, wenn die Checkbox, die auf dem Ja/
Nein Feld basiert, gesetzt ist, also der Datensatz bereits verbucht
ist, diesen nicht mehr ändern können.

Mit freundlichem Gruß,
Christoph

Loading...