Re: Formulareingaben Speichern verhindern



Hallo!

Dietmar Thesing:
Hallo Michael,
wirklich eine schön geschriebene Antwort!

Danke für die Blumen. Man tut, was man kann.

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.

Private Sub cmdUnLeash_Click()
Me.txtid.ControlSource = ""
Me.txtBla.ControlSource = ""
Me.txtBlub.ControlSource = ""
End Sub

Hier kann ich ja eine Schleife nehmen (Case
ctr.ControlType = acTextBox), ...

Joo.

Private Sub cmdLeash_Click()
Me.txtid.ControlSource = "id"
Me.txtBla.ControlSource = "Bla"
Me.txtBlub.ControlSource = "Blub"

... aber hier geht das wohl nicht? Die Formulare haben ja
ihre Datenquellen noch.

Das Formular hat als Datenquelle ein SELECT-Statement, das
sich hinter der Formulareigenschaft Me.Recordsource
verbirgt. Das bleibt bei der ganzen Vorgehensweise
unangetastet und interessiert uns auch nicht weiter.

Die Datenquellen der Controls kannst Du natürlich auch per
Schleife zurücksetzen. Du könntest z. B. beim Formularstart
private Collections bestücken:

Private c1 As Collection
Private c2 As Collection

Private Sub cmdUnLeash_Click()
'Me.txtid.ControlSource = ""
'Me.txtBla.ControlSource = ""
'Me.txtBlub.ControlSource = ""

Dim ctl As Control

For Each ctl In c1
ctl.ControlSource = ""
Next ctl
End Sub

Private Sub cmdLeash_Click()
'Me.txtid.ControlSource = "id"
'Me.txtBla.ControlSource = "Bla"
'Me.txtBlub.ControlSource = "Blub"

Dim ctl As Control

For Each ctl In c1
ctl.ControlSource = c2(ctl.Name)
Next ctl


Me.txtid.Value = Me.txtid.Value

'Me.txtid.SetFocus
'Me.Dirty = True
Me.Dirty = False
End Sub

Private Sub Form_Load()
Dim ctl As Control
Set c1 = New Collection
Set c2 = New Collection

For Each ctl In Me.Controls
If ctl.ControlType = acTextBox _
Then
c1.Add ctl, ctl.Name
c2.Add ctl.ControlSource, ctl.Name
End If
Next ctl

End Sub

Dadurch, daß Du die zu behandelnden Textboxen in einer
eigenen Collection verwaltest, kannst Du auch einzelne
Textfelder von der Behandlung ausnehmen. Vielleicht
bastelst Du ja noch ein Suchfeld o. ä., was dann zwar
eine Textbox wäre, die aber von dem ganzen Geraffel nicht
betroffen ist bzw. sein sollte.

Me.txtid.SetFocus 'Schmutzig machen,
Me.Dirty = True 'eine Möglichkeit

'oder

Me.txtid.Value = Me.txtid.Value 'andere Möglichkeit

Me.Dirty = False 'Optional, speichert die Daten direkt

Diese letzte Zeile für jedes Formular in der richtigen
Reihenfolge ausgeführt, müsste doch reichen, oder?

Nein. Me.Dirty = False speichert die Daten, wenn das
Formular schmutzig ist. Ungebunden bleibt es aber sauber.

Entweder

Me.txtid.SetFocus 'Schmutzig machen,
Me.Dirty = True 'eine Möglichkeit

oder

Me.txtid.Value = Me.txtid.Value 'andere Möglichkeit

*muß* erfolgen, da das Formular sonst nicht schmutzig wird.

Ingesamt gar nicht so schwierig.

Hatte das jemand behauptet? ;-)

Gruß aus Mainz
Michael


.



Relevant Pages

  • Re: Set Form
    ... Private WithEvents mfrm As Form_InputForm ... Private Sub Class_Initialize ... Set mfrm = New Form_InputForm ... Ab dann steht ein Formular im Dialogmodus zur Verfügung, ...
    (microsoft.public.de.access)
  • Re: Kleine Animation über meine Form laufen lassen
    ... Private Regions(10) As Region ... Private Sub Form3_Load(ByVal sender As System.Object, ... die das Formular betreffen. ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Gleiche Ereignisse im Formular und in der Klasse
    ... Im Formular: ... Private Sub Form_AfterUpdate ... Private Sub Form_Open ... In der Klasse: ...
    (microsoft.public.de.access)
  • Re: Dienst mit berechtigung zum datenaustausch mit desktop
    ... Private Thread1 As System.Threading.Thread ... Protected Overrides Sub OnStartAs String) ... ' das Formular ist geschlossen ... End Sub ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Service - immer mehr Arbeitsspeicher
    ... Collection entfernt. ... Beispiel 1: Deklarierung in einer Sub oder Function: ... Private Class TestClass ... Hier wird die Variable t erst initialisiert, wenn die Klasse initialisiert wird und bleibt so lange im Speicher, wie die Variable, die den Verweis auf die Klasse enthält im Speicher bleibt: ...
    (microsoft.public.de.german.entwickler.dotnet.vb)

Loading