noch einmal Formular mit Button öffnen ...

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist ausgeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind ausgeschaltet
Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: noch einmal Formular mit Button öffnen ...

Re: noch einmal Formular mit Button öffnen ...

Beitrag von Rentner Heinz » Fr, 13.04.2012 21:09

Hallo Jungs,

jetzt haut es hin, ich danke allen Beteiligten.

Gruß aus dem Wilden Süden

Re: noch einmal Formular mit Button öffnen ...

Beitrag von Gast » Fr, 13.04.2012 19:24

Ich habe gerade einmal durchprobiert: Mit Unterordner funktioniert das Makro so nicht, da Unterordner nicht über "/" zugeordnet werden. Hier muss das Makro etwas geändert werden:

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
REM Das zu öffenende Formular wird als erstes angegeben.
REM Liegt ein Formular in einem Ordner, so ist die Beziehung über "/" zu definieren,
REM so dass der Unterordner zu finden ist.
DIM stTag AS STRING
DIM oForm1 AS OBJECT
DIM oForm2 AS OBJECT
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForms() = Split(stTag, ",") 'Hier steht zuerst der Formularname für das neue Formular, dann der für das alte Formular
aForms1() = Split(aForms(0),"/")
aForms2() = Split(aForms(1),"/")
IF UBound(aForms1()) = 0 THEN
oForm1 = ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms1(0)) )
ELSE
oForm1 = ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms1(0)) ).getByName( Trim(aForms1(1)) )
END IF
IF UBound(aForms2()) = 0 THEN
oForm2 = ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms2(0)) )
ELSE
oForm2 = ThisDatabaseDocument.FormDocuments.getByName( Trim(aForms2(0)) ).getByName( Trim(aForms2(1)) )
END IF
oForm1.open
oForm2.close
END SUB

Die jeweiligen Unterordner sind also je nach Schachtelung über getByName("Ordner1").getByName("Unterformular1") zugängig.

Gruß

Robert

Re: noch einmal Formular mit Button öffnen ...

Beitrag von paradigma » Fr, 13.04.2012 15:33

Formular öffnen mit Makro und mittels Tag.odb
(28.26 KiB) 64-mal heruntergeladen


Hallo Robert

Das finde ich ein sehr interessantes Makro, das du veröffentlicht hast. Habe deshalb noch etwas getestet und eine Lösung erstellt, die bei mir sauber läuft. Das Beispiel ist in der angehängten Datenbank ersichtlich (Für alle Einsteiger: DB muss angemedet sein, damit das Makro läuft).

Was ich allerdings nicht berüchsichtigt habe, ist die Ordnerstruktur der Formulare. Das hat bei mir auch mit deinen Erläuterungen nicht funktioniert, wobei gut möglich ist, dass ich etwas falsch gemacht habe.

Ansonsten müsste es eigentlich genau das sein, was Heinz möchte.

Gruss
Beni

Re: noch einmal Formular mit Button öffnen ...

Beitrag von Gast » Do, 12.04.2012 17:09

Kleine Ergänzung:

Robert hat geschrieben:Wenn Du nur mit einem Hauptformular und Buttons in diesem Hauptformular arbeiten möchtest, aber in den Unterformularen nicht von einem zum anderen springst, so kannst Du das Makro auch im Formular unter
Extras → Anpassen → Ereignisse
versuchen Einzubinden.


Extras → Anpassen → Ereignisse → Dokument wird geschlossen
ist der richtige Ort. Da hier natürlich das Dokument schon geschlossen wird reicht es, ein Makro der folgenden Art zu nutzen:

SUB Hauptformular_oeffnen
ThisDatabaseDocument.FormDocuments.getByName( "Hauptformular" ).open
END SUB

Das wird an jedes Unterformular gebunden. Ist nur etwas lästig, wenn Du Deine Formulare noch häufiger zum Bearbeiten öffnest. Ich habe das gerade gemacht, mein Unterformular geschlossen und und prompt ging das damit verbundene Formular auf.

Gruß

Robert

Re: noch einmal Formular mit Button öffnen ...

Beitrag von Gast » Do, 12.04.2012 16:46

Hallo Heinz,

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
DIM stTag AS String
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForm() = Split(stTag, ",") 'Hier steht zuerst der Formularname für das neue Formular, dann der für das alte Formular
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(0)) ).open
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(1)) ).close
END SUB

Jetzt nach Zusatzinformationen bei dem Button gehen, dort dann eingeben

Hauptformular, Ordner1/Unterformular1

Schließt das in Ordner1 liegende Unterformular1 und öffnet vorher im Vordergrund wieder Dein Hauptformular.

Wenn Du nur mit einem Hauptformular und Buttons in diesem Hauptformular arbeiten möchtest, aber in den Unterformularen nicht von einem zum anderen springst, so kannst Du das Makro auch im Formular unter
Extras → Anpassen → Ereignisse
versuchen Einzubinden. Ich habe jetzt nicht überprüft, ob "Dokument wird geschlossen" hier nur das Formular meint, nehme das aber an. Dann benötigst Du nur im Hauptformular die Buttons und alles geht auch über das Schließen des Fensters mit dem "x".

Gruß

Robert

Re: noch einmal Formular mit Button öffnen ...

Beitrag von paradigma » Do, 12.04.2012 16:07

Hallo Heinz

Wenn ich dein Problem richtig verstanden habe, kannst du das folgendermassen lösen.

1. Erstellen in jedem Formular (ausser dem Hauptformular) einen Schalter mit der Bezeichnung "Schliessen" oder "Formular schliessen" oder wie immer du es benennen möchtest

2. Ordne obigem Schlter bzw. Schaltern das Makro von Robert zu.

3. Unter Zusatzinformationen schreibst du nun das zu öffnende Formular, also dein Hauptformular rein. An zweiter Stelle dann das zu schliessende, also jenes, auf dem sich der Schliessschalter befindet.

Ergebnis: Dein Hauptformular öffnet sich, sobald du ein Formular schliesst. Allerdings musst du dann das Formular immer über den Schliessschalter beenden und nicht über das Schliesskreuz im Titelbalken.

Gruss
Beni

noch einmal Formular mit Button öffnen ...

Beitrag von Rentner Heinz » Mi, 11.04.2012 17:58

Hallo,

unter dem 27.03.2012 ist dieses super Makro angegeben:

"Kleiner Tip für ein Makro, bei dem Du nur in Deinen Buttons etwas ändern musst, nicht aber den Code jedes Mal neu schreiben:

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
DIM stTag AS String
stTag = oEvent.Source.Model.Tag 'Tag wird unter den Zusatzinformationen eingegeben
aForm() = Split(stTag, ",") 'Hier steht zuerst der Formularname für das neue Formular, dann der für das alte Formular
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(0)) ).open
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(1)) ).close
END SUB

Unter "Zusatzinformationen" beim Button gibst Du, durch ein Komma getrennt, zuerst den Namen für das zu öffnende, dann den Namen für das zu schließende Formular an. Und wenn die Button nur eine Sache machen sollen (bei mir machen sie eben beides, das aktuelle Formular schließen und das andere öffnen), dann brauchst Du das Array aForm gar nicht und liest direkt stTag als Namen des Formulars ein.

Gruß
Robert"

Ich habe ein Hauptformular, dass sich bei Programmstart öffnet und über das ich dann andere Formulare lade. Diese anderen Formulare sind aber wegen der Übersichtlichkeit in Ordner sortiert. Wie baue ich dass noch in den o.a. Vorschlag ein. Wenn ich ein angewähltes Formular schließe, öffnet sich wieder das Hauptformular. Auch bei mir haben sich inzwischen eine Vielzahl von Einzelmakros angesammelt, die ich gern
reduzieren würde.

Vielen Dank für die Hilfe.
Rentner Heinz

Nach oben