Juli 10, 2020, 15:37:43

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Standardeinstellungen von Steuerelementen auslesen

Begonnen von SSSleep, Juni 29, 2020, 09:24:03

⏪ vorheriges - nächstes ⏩

SSSleep

Hallo,

gibt es innerhalb eines Formulars die Möglichkeit mit VBA auf die Standardwerte der Steuerelemente zuzugreifen?

Wenn ich beispielsweise über ME.myControl.RowSource="" die Datensatzherkunft eines Kombinationsfeldes ändere, ist diese ja nach einem Neustart des Forumlars wieder auf die Standardeinstellung gesetzt. Dies würde ich mir gerne zu nutze machen um die .RowSource innerhalb VBA wieder auf den Standardwert zu setzten.

Gibt es da eine Möglichkeit?

Vielen Dank

Ralf

Beaker s.a.

Hallo Ralf,
Speichere die Werte in einer Tabelle. Dann kannst du sie bei Bedarf
jederzeit wieder abrufen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

SSSleep

Zitat von: Beaker s.a. am Juni 29, 2020, 10:17:47Hallo Ralf,
Speichere die Werte in einer Tabelle. Dann kannst du sie bei Bedarf
jederzeit wieder abrufen.
gruss ekkehard

...klingt nach einem guten Plan. Die Standardeinstellung anzufragen geht demnach wohl nicht?

Vielen Dank

Ralf

ebs17

Ein Formular ist eine Klasse. Was Du siehst, ist lediglich eine abgeleitete Instanz dieser Klasse. An der kann man zur Laufzeit der Instanz ein wenig herumspielen. Mit Schließen ist der Spaß vorbei, und neu gestartet wird jungfräulich.

Dauerhafte Änderungen kann man also nur im Entwurfsmodus des Formulars, also an der Klasse selber vornehmen. So etwas sollte aber zur Laufzeit nicht vorkommen, nur bei echter Entwicklung.
Also würde man gewünschte Einstellungen in eine entsprechende Konfigurationstabelle speichern und dann einfach setzen, z.B. bei Formularstart.
Mit freundlichem Glück Auf!

Eberhard

crystal

Hallo
und noch 3 Hinweise:

1. Die z. B. im Entwurfsmodus eingegebene Datenquelle ist eine Sache - eine andere ist der "Standardwert". Letzterer ist ein Klartext-Wert, der standardmäßig als Eingabe vorgeschlagen wird, das gilt aber nur für Steuerelemente, also nicht für das Formular selbst. Was sollte auch ein "Standard-Wert" für ein gesamtes Formular sein?

2. Ein Trick könnte auch sein, die "Standard-Abfrage" z. B. einer Kombobox im .Tag-Property zu speichern (einfach Abfrage selektieren, Ctrl-C bzw. Strg-C drücken und im Eigenschaften-Feld Tag (deutsche Bezeichnung weiß ich gerade nicht, Steuerelement-Hinweis oder -Tipp oder so ähnlich) mit Strg-V einfügen). Das ist nur etwas unschön, weil dieser Text dann eben angezeigt wird, wenn mann z. B. bei einer Kombobox den Mauszeiger auf das Feld bewegt und einen Moment wartet. Und für das Formular selbst gibt's glaube ich kein solches Tag.

Deshalb: --> besser dem Vorschlag von Ekkehard folgen und den "Standard-Wert" der Abfrage (für das Formular und/oder für Komboboxen etc.) in einer eigenen Tabelle unter "schönen" Namen speichern und zur Laufzeit (Form-Open-Event setzen. Hier muss allerdings überlegt werden, ob dies im Form-Open-Event ausreicht, oder es im Form-Current-Event passieren muss.

3. Eine zur Laufzeit geänderte Abfrage wird im Formular bzw. z. B. für Komboboxen nur dann gespeichert, wenn man das Formular mit
docmd.close,,,acSaveYes (und das ist die Standard-Einstellung)
schließt. Schließt man es im VBA-Code jedoch explizit mit
docmd.close,,,acSaveNo (z. B. im Form-Close-Event)
bleibt alles so wie im letzten Entwurf (was ja eigentlich zur Laufzeit, also nach abgeschlossener Entwicklung, besser wäre). Dies entspricht der Antwort auf die Messagebox "Wollen Sie die Änderungen speichern?".
(Kann das momentan nicht live testen, bitte selbst probieren; siehe dann die angebotenen acSave...-Konstanten an der richtigen "Komma-Position").

Aber Vorsicht während der Entwicklung: das betrifft auch Änderungen, die man im VBA-Code vornimmt! In diesem Fall immer das Formular im Formular-Designer schließen und auf die Frage "..speichern?" mit Ja reagieren - sonst ist wieder alles futsch! Ich spreche da aus leidvoller Erfahrung...bei Änderungen im VBA-Code während der Ausführung z. B. beim Erreichen eines Haltepunktes... ;)

Grüße,
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Beaker s.a.

Hallo,
1. Der Standardwert eines Steuerelements (Controls) ist der Wert der
bei neuen DS automatisch eingetragen wird.

2. Die Tag-Eigenschaft (deutsch: Marke) würde ich dafür nicht verwenden.
Die eignet sich eher Controls zu "gruppieren" falls man zur Laufzeit
durch die Controls-Auflistung des Forms schleifen will.
Die Eigenschaft "SteuerelementTip-Text" dient eher dazu ein Control beim
Überfahren mit der Maus näher zu beschreiben oder Hinweise zur erwarteten
Eingabe zu geben.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.