Hallo,
ich öffne ein Formular "nur anzeigen", möchte aber, dass das Feld Referenz(RG-Nr) wieder geändert werden kann.
Mein Ansatz war, dass ich das Feld wieder aktiviere und entsperre.
DoCmd.OpenForm "0700Buch02Lief", acViewNormal, , "[0700Kat] = 3", acFormReadOnly
Forms![0700Buch02Lief].SetFocus
Forms![0700Buch02Lief]![Bezeichnungsfeld8].Caption = "Eingangsrechnung anzeigen"
Forms![0700Buch02Lief]![Bezeichnungsfeld71].Caption = "Lieferant:"
Forms![0700Buch02Lief]![0700ERNr].Locked = False
Forms![0700Buch02Lief]![0700ERNr].Enabled = True
Forms![0700Buch02Lief].SetFocus
Forms![0700Buch02Lief]!Reg.Pages(0).Visible = False ' Positionen AR
Forms![0700Buch02Lief]!Reg.Pages(1).Visible = True ' Positonen ER mit Bestellung
Forms![0700Buch02Lief]!Reg.Pages(2).Visible = False ' Ablage
Forms![0700Buch02Lief]!Reg.Pages(3).Visible = True ' Buchung
Forms![0700Buch02Lief]![RG-Nr.].SetFocus
Funktioniert leider nicht.
Was mache ich falsch??
Gruß
Yoschi
N'abend,
und warum nicht ein "beschreibbares" Formular und alle Felder bis auf das gewünschte schreibschützen?
So etwas ist auch per for each-Schleife machbar.
Harald
Hallo,
ich habe gedacht, dass dies die einfachste Lösung ist.
Wie würde denn die Schleife aussehen, bzw. gibt es Beispiele, wie z. B. bei DonKarl ?
Gruß
Yoschi
Zitat von: Duke634 am Dezember 15, 2012, 18:22:50
DonKarl ?
Hi,
http://www.donkarl.com/
schau mal bei 6.5 Steuerelemente durchlaufen
Harald
Hallo,
es funktioniert leider nicht.
Mein Ansatz ist:
Dim ctl As Control
For Each ctl In Me.Controls
If ctl = ctl![0700ERNr] Then
ctl.Locked = False
Else
ctl.Locked = True
End If
Next ctl
Laufzeitfehler 438:Objekt unterstützt diese Eigenschaft oder Methode nicht
Ist das die richtige Syntax oder wie funktioniert das??
Gruß
Yoschi
Hi
probier mal:
me.0700ERNr.setfocus
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
ctl.Locked = ctl.Name <> "0700ERNr"
End If
Next ctl
Eventuell sind beim ControlType noch weitere aufzuführen. Das dient dazu, die Bezeichnungsfelder zu umgehen.
Harald
Hallo,
funktioniert perfekt.
DANKE
Habe jetzt das ganze in einem anderen Formular versucht umzusetzen. Das klappt aber nicht so perfekt. In dem neuen Formular gibt es noch ein Kontrollkästchen (JA/NEIN), dass sich nicht deaktivieren lässt. Den ControlType habe ich in der ACCESS-Hilfe als acCheckBox herausgesucht.
Der Code:
DoCmd.OpenForm "0741BkListeHF"
Forms![0741BkListeHF].SetFocus
Forms![0741BkListeHF]![0741BkListeUF].SetFocus
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acCheckBox Then
ctl.Locked = ctl.Name <> "0701Bemerkung"
End If
Next ctl
Kannst Du mir noch einmal helfen? Ist der ControlType richtig?
Gruß
Yoschi
Hi Yoschi,
das Verhalten, dass mit der obigen Routine ein Ja_Nein-Feld nicht lockbar ist, kann ich nicht nachvollziehen.
"acCheckBox" ist ok.
Hoffentlich ist der Fokus nicht auf diesem Ja_Nein-Feld.
Wenn dem so sein sollte, hilft eine Anweisung in der Art:
Me.0701Bemerkung.setfocus
und diese Anweisung vor die "for each"-Schleife setzen.
Harald
Hallo,
meine Annahme war falsch, dass das erste Formular funktioniert. Durch das viele herumprobieren, ist mir nicht aufgefallen, dass die Felder alle gesperrt waren.
Nach der Entdeckung habe ich weiter probiert und herausgefunden, dass das Problem die Zeile
For Each ctl In Me.Controls
war.
Das Formular wurde nicht erkannt.
Ich habe das Me.Controls durch den Namen des Formulars ersetzt = Forms![0700Buch02Lief].Controls.
Jetzt funktioniert alles so wie gewollt.
Nochmals DANKE und ein schönes FEST und einen GUTEN RUTSCH.
Gruß
Yoschi