Re: Formulareingaben Speichern verhindern
- From: "Dietmar Thesing" <thesing@xxxxxxxxxxxx>
- Date: Mon, 9 Jul 2007 12:52:27 +0200
Guten Morgen, Michael!
"Michael Zimmermann" <Zimmermann@xxxxxxxx> schrieb:
> Ich habe das ganze nie mit Unterformularen ausprobiert,
> da darfst Du jetzt Beta-Test-Arbeit leisten. :-)
Schön, und das als Laie :-)
Beta-Tester sind bezogen auf das, was sie testen, immer
Laien, weil's das erst seit kurzem gibt. Also keine falsche
Bescheidenheit.
Nun gut, dann trau ich mich mal, dir zu zeigen, was ich bisher
daraus gemacht habe. Am Speichern bin ich noch dran, aber das Binden
und Entbinden und Sammeln scheint zu funktionieren. Alles befindet
sich im Formular-Modul. Fehlerbehandlung folgt später. Unten der
Code, mit Deklarationen, Form_Load und dem Codeschnippsel fürs
Wieder-Binden der Steuerelemente. Würd mich freuen, wenn du Lust
hast, Verbesserungsvorschläge zu machen. Die Länge der
Collection-Keys ist mir z.B. etwas lang geraten.
(Die Formatierung ist bei mir etwas übersichtlicher, hab jetzt zum
Posten ein paar Einrückungen rausgenommen und ein paar
Code-Zeilen-Umbrüche gemacht.)
Option Compare Database
Option Explicit
Private c1 As Collection
Private c2 As Collection
Private c3 As Collection
Private Sub Form_Load()
'Setzt voraus, dass alle anzusprechenden Steuerelemente
'nur in Ufos und UF-Ufos vorhanden sind,
'weil das eigentliche Formular keine Daten,
'sondern nur das TabControl enthält.
Dim subFrm As Access.SubForm
Dim subFrmU As Access.SubForm
'Controls für die drei Ebenen
Dim ctrFrm As Access.Control
Dim ctr As Access.Control
Dim ctrU As Access.Control
'strKey(U): Der Collectionschlüssel als Zeichenfolge.
'Wird aus dem "Pfad" der Controls komplett zusammengesetzt,
'weil es sein kann, dass dieselben Namen '
'in verschiedenen Unterformularen vorkommen.
'Die Identifizierung erfolgt also über die
'Steuerelementnamen der UFos.
Dim strKey As String
Dim strKeyU As String
Dim ctrC As Access.Control
Set c1 = New Collection
Set c2 = New Collection
Set c3 = New Collection
'Sammeln
For Each ctrFrm In Me.Controls
If ctrFrm.ControlType = acSubform Then
Set subFrm = Me(ctrFrm.Name)
strKey = subFrm.Name & "!"
For Each ctr In subFrm.Controls
If ctr.ControlType = acTextBox Or _
ctr.ControlType = acComboBox Then
strKey = strKey & ctr.Name
c1.Add ctr, strKey
c2.Add ctr.ControlSource, strKey
c3.Add strKey, strKey
End If
'strKey zurücksetzen
strKey = subFrm.Name & "!"
If ctr.ControlType = acSubform Then
Set subFrmU = Me(ctrFrm.Name).Controls(ctr.Name)
For Each ctrU In subFrmU.Controls
If ctrU.ControlType = acTextBox Or _
ctrU.ControlType = acComboBox Then
strKeyU = strKey & ctr.Name & "!" & ctrU.Name
c1.Add ctrU, strKeyU
c2.Add ctrU.ControlSource, strKeyU
c3.Add strKeyU, strKeyU
End If
Next ctrU
End If
Next ctr
End If
Next ctrFrm
For Each ctrC In c1
ctrC.ControlSource = ""
Next ctrC
e:
Set subFrm = Nothing
Set subFrmU = Nothing
End Sub
Hier das Binden einfach als Codeschnippsel, die Variablen sind
natürlich deklariert, bei varKey wusste ich nicht so recht:
' Zuerst Steuerelemente wieder binden
'in c1 sind die Controls mit Key als String,
'der sich aus dem kompletten Namen mit UFO-Ctr-Namen zusammensetzt.
'in c2 befindet sich der Control-Source-String, mit Key, der auch in
c1 ist.
'Der entspricht aber nicht dem Namen des Controls in c1.
'Deshalb c3, wo der Key gespeichert wurde.
'(An den kommt man ja sonst nicht dran)
For Each varKey In c3
Set ctrC = c1(varKey)
Debug.Print ctrC.Name
Debug.Print c2(varKey)
ctrC.ControlSource = c2(varKey)
Next varKey
' Herzliche Grüße
' Dietmar
' :-)
.
- Follow-Ups:
- Re: Formulareingaben Speichern verhindern
- From: Michael Zimmermann
- Re: Formulareingaben Speichern verhindern
- From: Michael Zimmermann
- Re: Formulareingaben Speichern verhindern
- References:
- Re: Formulareingaben Speichern verhindern
- From: Michael Zimmermann
- Re: Formulareingaben Speichern verhindern
- From: Dietmar Thesing
- Re: Formulareingaben Speichern verhindern
- From: Michael Zimmermann
- Re: Formulareingaben Speichern verhindern
- Prev by Date: Re: VBA-Problem: Inhalt eines Kombinationsfeldes wissen vor Änderung
- Next by Date: Re: Registerkarten formatieren
- Previous by thread: Re: Formulareingaben Speichern verhindern
- Next by thread: Re: Formulareingaben Speichern verhindern
- Index(es):
Relevant Pages
|