Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Klaus S. aus B am September 15, 2014, 09:42:26

Titel: Name der enthaltenen Formulare per Abfrage auslesen
Beitrag von: Klaus S. aus B am September 15, 2014, 09:42:26
Hallo zusammen,

kann man die Namen der in einer DB enthaltenen Formulare per Abfrage auslesen?

Hintergrund der Frage: Mir ist der Gedanke gekommen, dass man ein sehr einfaches "Navigationsformular" dadurch erstellen könnte, dass man in einem Listenfeld die Namen der enthaltenen Formulare hat und diese per Klick-Ereignis öffnet. Jetzt bin ich nur zu faul die ganzen Formularnamen (ist ja auch fehlerträchtig) abzutippen.

Gruß
Klaus
Titel: Re: Name der enthaltenen Formulare per Abfrage auslesen
Beitrag von: MaggieMay am September 15, 2014, 10:38:19
Hallo,

du kannst die Namen der Formulare aus der Systemtabelle MSysObjects auslesen.
Beispiel:SELECT name
FROM msysobjects
WHERE parentid = (select id from msysobjects where name='Forms');
Titel: Re: Name der enthaltenen Formulare per Abfrage auslesen
Beitrag von: DF6GL am September 15, 2014, 10:41:35
Hallo,


etwa so:

SELECT MSysObjects.Name FROM MSysObjects WHERE Type=-32768



Andere Möglichkeit:  Eine Wertliste zusammenstellen, indem die Allforms-Auflistung durchlaufen wird.
Titel: Re: Name der enthaltenen Formulare per Abfrage auslesen
Beitrag von: MzKlMu am September 15, 2014, 10:54:32
Hallo,
in der Systemtabelle stehen aber auch die Unterformulare die dann im Listenfeld gezeigt werden aber nicht geöffnet werden sollten. Außerdem sind die Formularnamen oftmals etwas kryptisch. Ich würde daher eine eigene Tabelle machen mit einer 1:1 Beziehung zur Systemtabelle. Und dann in ein Feld der extra Tabelle die verwendbaren Formulare mit einem beschreibenden Text erfassen. Die Tabelle benötigt dann einen Fremdschlüssel (ist gleichzeitig auch Primärschlüssel) zur Systemtabelle. In einer Abfrage mit beiden Tabellen und einem INNER JOIN werden im Listenfeld nur die "brauchbaren" Formulare angezeigt.
Titel: Re: Name der enthaltenen Formulare per Abfrage auslesen
Beitrag von: Klaus S. aus B am September 15, 2014, 11:15:14
Hallo,

Super! Vielen Dank.

Ich habe jetzt mit der Abfrage eine Tabelle gefüllt, die noch zusätzliche Spalten für "Anzeigename" und "anzeigen j/n" enthält. So kann ich einfach das Listenfeld sinnvoll füllen.

Gruß
Klaus
Titel: Re: Name der enthaltenen Formulare per Abfrage auslesen
Beitrag von: MaggieMay am September 15, 2014, 12:59:59
Hi,

das ist dann aber nicht mehr dynamisch auswertbar, sondern diese Tabelle muss zukünftig gepflegt werden.

Eine Alternative könnte sein:
1. die Anzeigbarkeit aus dem Formularnamen herzuleiten, indem du bspw. Formulare mit dem Namen "ufrm_*" oder "*_UF" ausschliesst und/oder nur Formulare mit dem Namen "frm_*" auswählst
2. die Formularbezeichnung aus der Beschreibung (=Description-Eigenschaft) des Formulars zu entnehmen
Achtung:
Die Property existiert nicht, wenn kein Beschreibungstext vorhanden ist.