Access VB: Enable/Disable von Steuerelementen via Code

WiZdooM

Erfahrenes Mitglied
Hallo

Normalerweise programmiere ich C#.Net und nicht VB 6.0, daher hab ich da ein paar "Verständnisprobleme".

In meiner Access-Datenbank befinden sich Formulare. Ich füge gerade ein paar neue Steuerelemente ein. Ein Textfeld soll bei der Auswahl der vorangestellten Checkbox aktiviert werden, also dem User erst dann die Eingabe ermöglichen, wenn diese Checkbox aktiviert wurde.

Ich dachte aufgrund meiner bisherigen Programmiererfahrung, dass
Code:
If (Sonstiges.InSelection) Then
txtSonstiges.Enabled = True
End If
funktionieren sollte, aber der Debugger quittiert mit
Laufzeitfehler 2187: Diese Eigenschaft steht nur in der Entwurfsansicht zur Verfügung

Die Frage ist jetzt wie ich die Textfeldaktivierung codetechnisch durchführe, denn so gehts - im Gegensatz zu allen anderen Programmiersprachen - jedenfalls nicht, was mich ein bisschen annervt!
 
Zuletzt bearbeitet:
Hab hier jetzt kein Access, daher kann ich hier nur eine weitere VBA-Lösung bieten:
Visual Basic:
'Die Klick-Prozedur der CheckBox
Private Sub CheckBox1_Click()
 'Abfrage, ob der Wert (Value) Wahr ist
 If CheckBox1.Value Then
  'Wenn Wahr dann aktiviere die CheckBox
  TextBox1.Enabled = True
 Else
  'Ansonsten (also Falsch) deaktiviere die CheckBox
  TextBox1.Enabled = False
 End If
End Sub
Kann sein, dass du das ganze für Access-VBA noch anpassen musst. Ach ja, bei VB gibt es keine Semikolons am Ende, hier zählt der Zeichenumbruch.


Der Doc!
 
Da hast du recht, mit dem Semikolon. Das ist auch nur hier reingerutscht, war mein Fehler, und ist korrigiert.

Dein Code unterscheidet sich eigentlich nicht von meinem. Access verweigert allerdings die Aktivierung und Dekativierung des Steuerelementes mit dem Laufzeitfehler 2187...
 
Also, ich hab mal mein dienstliches Notebook angeworfen (hab da auch Access drauf), mein oa Code geht in dieser Ausführung ohne Probleme. Kann sein, dass es an deiner DB liegt, kannst du das Access-File mal hier hochladen (gezippt, mit Passwort, Passwort per PN)?


Der Doc!
 
Naja das File ist etwas zu groß um es hochzuladen - selbst gezippt. Problem ist daran, das 4 Tabellen in das Formular einfließen und die alle zwischen 6000 und 70000 Einträge haben. Zwar ist die "Oberfläche" getrennt von der Jet-DB aber ich kann die Größe der Oberflächendatei leider nicht verringern.
Wenn wir ne adäquate Leitung hätten würde ich es auf den FTP stellen, aber selbst damit kann ich nicht dienen, sodaß es mit isdn stunden dauert die 100mb hochzuladen :(

Edit:
Wenn ich deinen oder meinen Code in einer leeren Datenbank ohne Formulare und Tabellen und Abfragen teste geht es. Funktionieren tut der prinzipiell. Seltsamerweise gibts für die Checkbox in der richtigen Datenbank kein Handle für Click, was bedeutet, dass keine Funktion "Sonstige_Click()" ausgeführt wird... Er kennt nur "Sonstiges_GotFocus()" und das verursacht beim Aufruf den Fehler beim Zuweisen der Objekteigenschaften. Hängt das damit zusammen, dass das Kontrollkästchen in einer Optionsgruppe liegt ?

Ich steig durch VB nicht durch. Wer hat das nur erfunden *rolleyes*
 
Zuletzt bearbeitet:
Kann mir leider auch keinen Reim drauf machen, wieso es bei einer neuen DB funktioniert und bei deiner nicht. Unter Umständen hast du irgendwo einen Code drinnen, der den Fehler erzeugt und jetzt mit der eigentlichen Aktivierung/Deaktivierung nichts zu tun hat.


Der Doc!
 
Ja ich bin da selbst etwas ratlos. Ich habe von Access und der Programmierung in VB null Erfahrung, von daher ist das unter umständen möglich. Da an Code allerdings nur dieser neuen Part von mir ist und die Exception beim Zuweisen der Eigenschaft auftritt muss diese wohl da ihren Ursprung haben.

Das allerseltsamste finde ich, sind die eingeschränkten Ereignisfunktionen die ich bekomme.
 
Wärs irgendwie möglich, dass du die Daten (bis auf ein paar Beispiele) raustust (natürlich bei einer Kopie der DB) und die dann postest?


Der Doc!
 
Kann es sein, dass da benutzerdefinierte Steuerelemente erstellt wurden, die die einzelnen Controls kapseln?

Access VBA ist leider vom Sprachumfang her sehr unterschiedlich zu VB6 (damit kenne ich mich besser aus), aber auch zu anderen VBA-Versionen.
 
Ich hab keine Ahnung, ob da eigene Steuerelemente erstellt wurden. Ich steige durch VB (egal welche Version) sowieso nicht durch... Es programmiert sich darin überhaupt nicht schön finde ich. Aber das nur mal als persönlicher Comment nebenbei.

Ich glaube das Hauptproblem ist, dass das entsprechende Kontrollkästchen Teil einer Optionsgruppe ist, die an ein Datenbankfeld gebunden ist.
Diese Steuerelemente haben wohl keine Click()-Handler..
 

Neue Beiträge

Zurück