PDA

Vollständige Version anzeigen : Textfeld (de)aktivieren


hallokarl
20.10.2011, 08:05
Liebe Mituser!

Es ging darum, ein Textfeld zu aktivieren, wenn ein Kontrollkästchen angehakt war und zu deaktivieren, wenn es nicht angehakt war. Und dies individuell pro Datensatz. Bsp.:

Datensatz A – Kontrollkästchen SONSTIGES aktiv – Textfeld BESCHREIBUNG_SONSTIGES enabled

Datensatz B – Kontrollkästchen SONSTIGES inaktiv – Textfeld BESCHREIBUNG_SONSTIGES nicht enabled

Dies war auch gut realisiert worden mit:

Private Sub Form_Current()
Me!BESCHREIBUNG_SONSTIGES.Enabled = Me!SONSTIGES
End Sub

und

Private Sub SONSTIGES_AfterUpdate()
Me!BESCHREIBUNG_SONSTIGES.Enabled = Me!SONSTIGES
End Sub

Nun ist aber folgendes Problem aufgetaucht: Wenn man einen neuen Datensatz anlegen/eingeben möchte, kommt der Fehler:

Laufzeitfehler ‚13’ – Typen unversräglich

Wenn man dann „debuggen“ klickt, springt die gelb unterlegte Zeile zu

Me!BESCHREIBUNG_SONSTIGES.Enabled = Me!SONSTIGES

in der Prozedur

Private Sub Form_Current()

Ein weiteres Problem: Warum taucht das Problem jetzt auf? Die Datenbank ist wochenlang zufriedenstellend gelaufen (auch mit der Textfeld(de)aktivierung). Währenddessen habe ich auch oft neue Datensätze angelegt.

Was habe ich verändert seitdem?
Ich habe ein ‚lernendes’ Formular programmiert, das PLZs abfragt und merkt und dann selbstständig hinzufügt. Die Prozedur dazu:

Private Sub PLZ_Exit(Cancel As Integer)
Dim varStadt As Variant
Dim strStadt As String
Dim strPLZ As String
Dim conn As New ADODB.Connection
Dim rst As ADODB.Recordset

varStadt = DLookup("ORT", "PLZ_Tab", "PLZ = Forms![Formular01]![PLZ]")
If (Not IsNull(varStadt)) Then
Me![ORT] = varStadt
Else
strStadt = InputBox("Bitte geben Sie den Ort ein!")
strPLZ = Me!PLZ
Me!ORT = strStadt

Set conn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "PLZ_Tab", conn, adOpenKeyset, adLockOptimistic
rst.AddNew
rst!PLZ = strPLZ
rst!ORT = strStadt
rst.Update
rst.Close
Set rst = Nothing
Set conn = Nothing
End If
End Sub

Aber was sollte das mit dem Textfeld zu tun haben??
Vielen Dank für eure wertvollen Tipps!
euer
hallokarl
:)

Thomas Braun
20.10.2011, 09:10
Probier mal:
Me!BESCHREIBUNG_SONSTIGES.Enabled = Nz( Me!SONSTIGES, False)
Oder
If Me.NewRecord = False Then Me!BESCHREIBUNG_SONSTIGES.Enabled = Me!SONSTIGES, False

gpswanderer
20.10.2011, 09:13
Hallo,
das Problem wurde im anderen Forum :mad: durch Setzen des Standardwertes gelöst.

Atrus2711
20.10.2011, 09:15
Hi,

Enabled ist eine zweiwertige Eigenschaft: sie kann nur die Werte True oder False annehmen. Beim Neuanlegen ist das Kontrollkästchen, wo du hingreifst, aber noch leer, also weder True noch False. Das geht nicht.

Du kannst aber ein Leer als False deuten: mit NZ(Kontrollkästchen, False).