PDA

Vollständige Version anzeigen : Mit Hakenbox Textfelder sperren/entsperren?


blue-chip©
20.01.2003, 08:55
Hi Leutz!

Ich bin gerade dabei eine kleine Datenbank zu gestalten.
In Sachen VBA bin ich noch ein Newbie.
Was ich vor habe, ist das ich über eine Hakenbox mehrere Textfelder
entsperren/sperren möchte. Wie sollte ich da am Besten vorgehen, und welcher Code macht dies möglich?
Ich danke Euch im voraus,

cu blue

Accessversion: Access 2000

Aquarii
20.01.2003, 09:37
Hallo blue,

schaue mal hier, da ist Dein Problem schon einmal gelöst worden:

http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=74728&highlight=Datensatz+sperren

Du mußt es ledilgich noch an ein JA/Nein-Feld anpassen.

blue-chip©
20.01.2003, 13:03
Hi Aquarii,

danke für den Link. Leider kann man dort nicht mehr nachfragen, wie es ist
wenn man mit der Hakenbox nur bestimmte Textfelder freigibt.
Die Textfelder sollten vorher deaktiviert sein, und mit dem Haken aktiviert werden.
Was müsste ich hier ändern:

Private Sub Form_Current()
If Me!txtSperren = ...wasweissichwiedudaskennzeichnenwillst... then
Me.Allowedits = False
Else
Me.Allowedits = True
End If
End Sub
'
' bzw. wenn du eleganterweise ein ja/nei-Feld für Sperren nimmst dann:
'
Me.Allowedits = Not Me!IstGesperrt




damit dies möglich ist?

blue-chip©
21.01.2003, 10:14
Ich will ja net mein Thema hier pushen. Aber, ich bekomme das einfach noch nicht hin.
Der Link, war zwar schon ein guter Hinweis, aber ich bekomme das einfach noch nicht gebacken.
Also, ich wollte mit einer Hakenbox bestimmte Textfelder freigeben, die vorher gesperrt wurden. In dem Link ging es aber darum, das Gesamte Datenblatt zu sperren.
Wäre froh, wenn mir nochmal jemand helfen könnte,


cu blue

Mattes
21.01.2003, 11:41
Hi blauer Chip,

was klappt den an Deinem Code nicht? Sieht eigentlich gut aus. Wenn Du beim starten des Forms alles sperren willst, dann setzte doch beim Ereignis "Beim Öffnen" des Forms in Etwa folgenden Code ein:

Me.DeinFeld1.Allowedits=False
Me.DeinFeld2.Allow....

blue-chip©
21.01.2003, 12:37
Ich glaub, ich bin zu doof dafür*g*. Das mit der Ereignisprozedur


Private Sub Form_Open(Cancel As Integer)
Me.Kombinationsfeld67.allowedits = False
...
End Sub


funktioniert auch nicht. Ich bekomme Kompilierungsfehler.


Private Sub Form_Current()
If Me!txtSperren = ...wasweissichwiedudaskennzeichnenwillst... then
Me.Allowedits = False
Else
Me.Allowedits = True
End If
End Sub
'
' bzw. wenn du eleganterweise ein ja/nei-Feld für Sperren nimmst dann:
'
Me.Allowedits = Not Me!IstGesperrt


Muss das dann wenn man mit dem Haken die Felder entsperren möchte, den Code für auf dem Hakenkästchen z.B. so schreiben?



Private Sub JaNeinBox_Click()

If Me!txtSperren = ...wasweissichwiedudaskennzeichnenwillst... then
Me.Allowedits = Not Me!IstGesperrt
Else
Me.Allowedits = True
End If

End Sub


Sorry, wenn das grottenfalsch ist, aber ich hab momentan keinen Plan.

Mattes
21.01.2003, 12:45
:eek:

also:

Du has ein Formular mit Textfeldern und Kontollkästchen um diese zu sperren oder freizugen.

Dazu braucht Du Folgendes:

1.) Beim Öffnen mußt Du diesen Feldern einen definierten Zustand zuweisen. Also "Beim Öffnen" des Forms:

Me.Kontollkästchen1=true
ME.Textfeld1.AllowEdits=false

Damit erreichst Du das das Textfeld gesperrt ist und das Häckchen gesetzt.
Wenn de Benutzer den Haken jetzt durch Klick deaktiviert soll das Textfeld nicht mehr gesperrt sein.

Also "Nach Aktualisierung" (des Kontollkästchens):

ME.Textfeld1.AllowEdits=true


Wenn Du das für jedes Feld machst sollte es laufen.

P.S: Wenn Du sagst:
funktioniert auch nicht. Ich bekomme Kompilierungsfehler

wäre es interessant in welcher Zeile der Fehler auftritt!

blue-chip©
21.01.2003, 13:09
Hab den Code jetzt so eingesetzt:


Private Sub Form_Open(Cancel As Integer)
Me.Art_Anlagenpflicht = False <<<< weil es ja nicht angehakt seien soll
Me.Kombinationsfeld67.AllowEdits = False
Me.Abschreibungswert.AllowEdits = False
End Sub


gleich bei dem Aufruf des Formulars kommt an der stelle .AllowEdits zu Kompilierungsfehlern.

So sieht Nach Aktualisierung beim Kästchen aus.

Private Sub Art_Anlagenpflicht_AfterUpdate()
Me.Kombinationsfeld67.AllowEdits = True
Me.Abschreibungswert.AllowEdits = True
End Sub


Klappt irgendwie noch nicht

Mattes
21.01.2003, 14:10
mail mir die DB doch mal bitte zu!

blue-chip©
21.01.2003, 14:57
An welche Adresse soll es gehen?

tseyfert
21.01.2003, 15:14
Hallo,

meine DB beinhaltet sowas auch.

Meine Lösung war folgende:

Ich habe im Formular bei der Aktion "Beim Laden" eine Ereignisprozedur geschrieben mit

if <Hakenbox> = false then 'kein Haken in der Box
<Feldname>.enable = false 'Feld sperren
<Feldname>.enable = false
(alle Felder, die von vornherein gesperrt sein sollen auf False setzen)
else
......
endif

Als Beispiel: (Aktion beim Klicken)

Ereignisprozedur:

Private Sub Unters_einmal_Click()
If Unters_einmal = wahr Then 'WEnn Unters_einmal hat Haken
[Unters_Anzahl].Enabled = True 'dann Unters_Anzahl freigeben zur Eingabe
Else
[Unters_Anzahl].Enabled = False 'Unters_Anzahl nicht freigeben
End If

End Sub


Vielleicht hilft Dir das weiter!
Gruss
Tanja

Mattes
22.01.2003, 07:00
:stupid: Klar!

Tanja hat recht!

Allowedits ist ja eine Eigenschaft des Formulars, wogengen einzelne Felder die Eigenschaft Enabled oder Disabeld kennen.

Eine weitere Möglichkeit wäre die entsprechenden Felder mit visible ein oder auszublenden.


Das sollte eigentlich klappen, gib doch mal Rückmeldung wenn Du's ausprobiert hast.

tseyfert
22.01.2003, 07:16
Guten Morgen,

habe sogar noch eine andere Möglichkeit. Wurde mir gerade empfohlen (hab's aber noch nicht probiert):

entweder:

einFeld.enabled = me.irgendeineCheckbox.value '(.Value???)
einandereseFeld.locked = me.irgeneinedeCheckbox.value


oder andere Möglichkeit:

dim visibleMode as boolean

if Me.irgendeineCheckbox then
visibleMode = true
else
visibleMode = false
endif

eld.visible = visibleMode
feld.enabled = not visibleMode


Gruss
Tanja