PDA

Vollständige Version anzeigen : im Formular Felder alternativ freischalten/sperren


Oamin
27.10.2003, 12:11
Hallo,

ich habe folgende Frage:

Von drei Feldern meiner Tabelle muss immer genau eines gefüllt werden. Von den beiden noch leeren darf dann keins mehr gefüllt werden.

Das löse ich momentan, indem ich die drei Textfelder aufm Formular unsichtbar habe und man per Button die entspr. sichtbar machen kann; also ist immer nur eines zu sehen. Man kann aber immer noch in die anderen etwas eintragen, indem man einfach auf den anderen Button drückt.

Fällt hier jemandem eine Lösung ein, die auch für mich als VOB-Anfänger gangbar ist?

Im Anhang ist die komprimierte DB, einfach mal anschaun', bin für jede Idee dankbar!!!

mfG

stpimi
27.10.2003, 12:29
Ich würde beim Ereignis "BeimAnzeigen" des Formulares prüfen, ob ein Feld nicht NULL ist. Dann werden die beiden anderen gesperrt (Enabled = False).

Sonst werden alle 3 geöffnet (Enabled = True) und für jedes Feld im Ereignis "NachAktualisieren" geprüft, ob der Inhalt ungleich NULL ist. In diesem Fall werden die beiden anderen gesperrt, sonst geöffnet.

Mfg, Michael

WMS
27.10.2003, 12:31
damit kannst du die anderen sperren:

Private Sub Text0_AfterUpdate()
If Not IsNull(Text0) Then
Text1.Locked = True 'Felder sperren
Text2.Locked = True
Else
Text1.Locked = False
Text2.Locked = False
End If
End Sub

Oamin
27.10.2003, 12:34
das sieht gar nicht so schlecht aus, ich versuch's mal!

Oamin
27.10.2003, 12:45
Danke WMS,

leider geht das bei mir nicht, Fehler beim kompilieren...
Aber ich habe keinerlei Ahnung wo der Fehler sein könnte!

Fällt euch da was ein?!

WMS
27.10.2003, 12:56
... was meckert er denn an? :confused:

Oamin
27.10.2003, 13:03
Muss ich die Felder nicht mit me.Text1 usw. ansprechen?

WMS
27.10.2003, 13:07
das braucht man bei A97 nicht, so denke ich auch in XP nicht, wenn die Felder sich im Formular befinden.
Die Feldnamen hast du deinen Feldern angepasst? :confused:

Text0, Text1 und Text2 sind nur Beispielnamen :bawling:

Oamin
27.10.2003, 13:09
so schaut das aus:


End Sub

Private Sub graphical_data_Updated(Code As Integer)
If Not IsNull(graphical_data) Then
Me.numerical_data_unit.Locked = True 'Felder sperren
Me.numerical_data_value.Locked = True
Me.[tabular data].Locked = True
Else
Me.numerical_data_unit.Locked = False 'Felder entsperren
Me.numerical_data_value.Locked = False
Me.[tabular data].Locked = False
End If

End Sub

entsprechend natürlich auch für die anderen Felder... aber so sollte es ja schonmal tun. . . beim blauen hängt er sich auf!!

was mach ich damit

WMS
27.10.2003, 13:14
... dann schau dir nochmal genau das Feld und den Namen an (tabular data). :confused:

Nebenbei: ich würde in Feldnamen kein Leerzeichen verwenden! :bawling:

Arne Dieckmann
27.10.2003, 13:15
Eine Fehlermeldung wäre ganz nett - kann es sein, dass es das Textfeld namens "tabulator data" im Formular gar nicht gibt?

Wie sieht es mit

Me![Text58].Locked = True

aus? Dort steht in Deiner Beispieldatenbank nämlich "tabulator data" als Steuerelementinhalt.

Oamin
27.10.2003, 13:42
So, alles mal ausgiebig versucht - weiter komm ich leider nicht! Wär' echt nett wenn eine(r) sich nochmal damit beschäftigt :sos:

Wie schon erwähnt bricht er beim Einfügen von Daten in graphical_data ab und meldet:

Fehler beim Kompilieren:
Methode oder Datenobjekt nicht gefunden



@Arne: das Feld existiert tatsächlich und heißt im Übrigen "tabular data", und nicht tabulator, das hast du überlesen. Fällt Dir trotzdem was ein?

@wms: ich hab die DB leider so übernommen und muss da jetzt durch! Die Leerzeichen wieder rauszubekommen, dafür weiß ich keine einfache Methode...

Arne Dieckmann
27.10.2003, 13:52
Sorry, aber auch das Textfeld (im Formular!!!!!) "tabular data" finde ich nicht in dem Beispiel. Probiere es doch mal selber in Deinem Beispiel aus ...

WMS
27.10.2003, 13:52
kannst du mir deine mdb mal als A97 schicken!

Arne Dieckmann
27.10.2003, 13:55
Hier noch mal ein Screenshot - Du musst die Eigenschaft "Name" für .Locked etc. verwenden:

Oamin
27.10.2003, 13:57
*gggggg*
genau das war's! Es heißt Text58, richtig. Jetzt gibt's schon keine Fehlermeldung mehr. Aber dennoch werden die Felder noch nicht entspr. gesperrt... warum nur?

WMS
27.10.2003, 14:00
Ich glaube da liegt der Fehler, wie es Arne aufgezeigt hat.

... dann schau dir nochmal genau das Feld und den Namen an (tabular data).

..... das habe ich dir auch schon geraden! :mad:

Oamin
27.10.2003, 14:00
@ WMS: hier die Version für Dich!

Oamin
28.10.2003, 10:07
hat keiner eine Idee? :weinen:

Akane
02.03.2004, 11:48
Ich habe das gleiche Problem, und zwar kennt mein Access 2002 die Funktion "locked" nicht ... ich gehe dann immer über "enabled" ...


Feld.Enabled = True
Feld.Enabled = False


Ist halt nur doof, dass dann die Felder grau hinterlegt werden.

Freundliche Grüße