Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Controls im Formular umbenennen

Begonnen von huith, Juni 21, 2025, 18:08:52

⏪ vorheriges - nächstes ⏩

huith

Hallo zusammen,
ich habe seit kurzem folgendes Problem:
in einem Endlosformular sind ca. 120 Textfelder enthalten. Wenn ich ein Textfeld umbenennen möchte, dauert es mehr als eine Minute, bis die Änderung vollzogen wird und der Formularentwurf wieder freigegeben wird. Im Formular ist nochmal etwa die gleiche Anzahl Bezeichnungsfelder enthalten.
Ich habe auch schon das Formular in eine völlig neue, leere Datenbank kopiert; die zeitliche Verzögerung bleibt.
Kann mir jemand einen Tipp geben, was hier die Ursache sein könnte?

Danke für Hinweise und Gruß
Michael

Doming

Moin Michael,

wie bennenst Du um: Eigenschaftsfenster und dann neuer Name oder per vba?
Ist das Formular schon an eine Tabelle/Abfrage gebunden?

Gruß
 Doming

huith

Umbenennen im Eigenschaftenfenster,
Formular ist an Tabelle gebunden

Knobbi38

Hallo Michael,

mind. 240 Steuerelemente in einem Endlosformular? Du solltest mal über dein UI-Design nachdenken.

Unabhängig davon spielt es doch eigentlich keine Rolle, wie lange das Umbenennen eines Steuerelements dauert, denn man macht das ja extrem selten, wenn überhaupt. Hat das noch andere Hintergründe, über die du hier noch nicht berichtet hast?

Knobbi38

Bitsqueezer

Hallo,

versuch's mal so:
Neues Formular erstellen und alle Controls im einen Formular kopieren und im neuen einfügen.

Das Kopieren des ganzen Formulares in eine neue Datenbank ändert nichts am Formular, Du nimmst das Problem mit.
Allemal bessere Variante wäre Exportieren mit Application.SaveAsText und dann Application.LoadFromText.

Access hat einen Zähler für Controls je Formular, je häufiger man Controls entfernt und wieder einfügt, desto mehr kann es Probleme geben. Bis man irgendwann gar kein Control mehr einfügen kann. Hatte ich mal festgestellt im Rahmen eines Experimentes, Controls in größerer Menge per VBA zu generieren.
Was da genau im Hintergrund passiert, wissen wohl nur die Access-Entwickler.

Ich würde allerdings auch stutzig werden, 240 Controls in einem Endlosformular zu verwenden... da sind sicherlich Probleme im Datenmodell und in der UI-Gestaltung.

Gruß

Christian

DF6GL

Hallo,

vielleicht hilft folgender Tipp (wenn die Tabelle viele Datensätze enthält):

Tabelle1 kopieren (als Backup-Tabelle)
Tabelle1 bis auf einen DS löschen (leeren)
Datenbank komprimieren/reparieren ausführen
Formular weiter bearbeiten
Zuletzt Tabelle1 löschen und Backup-Tabelle in Original-Namen umbenennen.

Gruß
Franz DF6GL

huith

Vielen Dank Bitsqueezer,
der Tipp mit dem Export und Import hat das Problem gelöst!
Im Formular sollen Daten aus einer Abfrage (10 Werte) bei der bis zu 12 unterschiedlichen Bedingungen eines bestimmten Wertes nebeneinander dargestellt werden (Abfrage mit bis zu 12 Aliase (left join tbla as tbla_x ).
Das funktioniert soweit auch ganz gut, zumal die Zahl der Bedingungen unterschiedlich sein kann (5 bis 12), ich aber das Formular für die max. 12 Bedingungen (=Aliase im JOIN) ausgelegt haben muss.

Gibt es eine Möglichkeit, diese Aufgabe eleganter zu lösen?
Vielen Dank für die Hilfe und Gruß Michael

Bitsqueezer

Hallo Michael,

gibt es meistens, aber dafür sind die Informationen ein wenig dünn.

Beispielsweise eine Kreuztabellenabfrage, die man dynamisch generieren kann und dann eine Datasheet-View, die dynamischer angepaßt werden kann.

Oder (wie ich es in meiner Filterklasse mache, die einen Popup-Filter mit bis zu 50 Zeilen Controls in ca 8 Spalten anzeigen können muß, mit unterschiedlicher Anzahl Zeilen und Spalten) man kann, wenn man weiß, wieviele Controls maximal gebraucht werden, die Maximalzahl einmal als versteckte Controls erzeugen (einfach per VBA), bei der die Controls durchnumeriert werden wie "lbl1", "lbl2", ... und "txt1", "txt2" usw., so daß man die Controls in einer Schleife mit numerischem Zähler ansprechen kann, dann kann man ihnen Beschriftungen usw. ebenfalls dynamisch zuweisen, ihre Position festlegen und sie sichtbar machen (z.B. nur lbl1 bis lbl12 zusammen mit txt1 bis txt12), so wie sie gebraucht werden (je nach Abfrage etwa).

Siehst Du, kann man alles in einem Satz erklären... :D

Der Vorteil der Methode ist, daß die Controls nur einmal erstellt werden zur Designzeit, nie während der Laufzeit, und damit ändert sich auch nichts am Controlzähler, man kann sie beliebig oft sichtbar und unsichtbar machen, verschieben, Beschriftungen von Labels ändern - und das ganze ist dann auch in einer Access Runtime lauffähig, die Änderungen am Design per VBA verbietet (was man ohnehin nie machen sollte).

Für mehr mußt Du schon detaillierter werden, z.B. eine Demodatenbank, Abfragen, Testdaten, Screenshots, Datenmodell...

Gruß

Christian