🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro Formular aufrufen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Fabiii
Beiträge: 39
Registriert: Sa 19. Mai 2012, 13:50

Makro Formular aufrufen

Beitrag von Fabiii » Sa 19. Mai 2012, 13:57

Hallo,
ich habe mehrere Formulare.
Diese Formulare will ich über ein Ahuptformular aufrufen.
Also im Hauptformular gibt es dann mehrere Schaltfläche. Wenn man dann da drauf drückt, dann öffte sich z. B. das Formular "Eingabe" oder auf einer anderen Schaltfläche das Formular "Detail" usw.

Ich habe jetzt schon eine Schaltfläche erstellt müsste jetzt nur noch das Makro hinzufügen.
Wo kann man so ein Makro herunter laden.


Bitte um Antwort
Vielen Dank für eure Bemühungen

Fabi

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Makro Formular aufrufen

Beitrag von gogo » Sa 19. Mai 2012, 14:53

Ein für alle mal ... damit man drauf verweisen kann ;)

GENERELL:

Code: Alles auswählen

Sub FormOeffnen
on error goto EH

	If isNull(ThisDatabaseDocument.CurrentController.ActiveConnection) Then
		ThisDatabaseDocument.CurrentController.Connect
	End If

	If ThisDatabaseDocument.FormDocuments.hasByName("Mein Formular") then
		ThisDatabaseDocument.FormDocuments.getByName("Mein Formular").open
	Else
		MsgBox "Das Formular: '" & "Mein Formular" & "' wurde nicht gefunden!"
	End If

Exit Sub:EH: call EH
End Sub

Sub EH
	MsgBox "Fehler " & ERR & ": " & ERROR$ + CHR(13) + "In line : " + ERL + CHR(13) + NOW,16,"Fehler aufgetreten"
End Sub

... und etwas mehr handy - über die Eigenmschaft "Zusatzinformation" des Buttons bzw. der Schaltfläche die das Formular öffnen soll:

Code: Alles auswählen

Sub FormOeffnen(oEvent)
on error goto EH

	If isNull(ThisDatabaseDocument.CurrentController.ActiveConnection) Then
		ThisDatabaseDocument.CurrentController.Connect
	End If

	If ThisDatabaseDocument.FormDocuments.hasByName(oEvent.Source.Model.Tag) then
		ThisDatabaseDocument.FormDocuments.getByName(oEvent.Source.Model.Tag).open
	Else
		MsgBox "Das Formular: '" & oEvent.Source.Model.Tag & "' wurde nicht gefunden!"
	End If

Exit Sub:EH: call EH
End Sub

Sub EH
	MsgBox "Fehler " & ERR & ": " & ERROR$ + CHR(13) + "In line : " + ERL + CHR(13) + NOW,16,"Fehler aufgetreten"
End Sub
Wobei der unter "Zusatzinformation" des Buttons/Schaltfläche etc. exakt der Name des zu öffnenden Formulars eingetragen sein muss!

Edit:(.Name auf .Tag geändert - ist smarter)
Zuletzt geändert von gogo am So 20. Mai 2012, 20:33, insgesamt 1-mal geändert.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Fabiii
Beiträge: 39
Registriert: Sa 19. Mai 2012, 13:50

Re: Makro Formular aufrufen

Beitrag von Fabiii » Sa 19. Mai 2012, 15:34

Hallo,
vielen Dank erstmal für deine Antwort.
ICh weis nicht so ganz was ich abändern muss.
Hat bei mir irgenwie nich ganz funkt. aber vielleicht hab ich auch etwas falsch gemacht

Code: Alles auswählen

Sub FormOeffnen
on error goto EH

   If isNull(ThisDatabaseDocument.CurrentController.ActiveConnection) Then
      ThisDatabaseDocument.CurrentController.Connect
   End If

   If ThisDatabaseDocument.FormDocuments.hasByName("Mein Formular") then
      ThisDatabaseDocument.FormDocuments.getByName("Mein Formular").open
   Else
      MsgBox "Das Formular: '" & "Mein Formular" & "' wurde nicht gefunden!"
   End If

Exit Sub:EH: call EH
End Sub

Sub EH
   MsgBox "Fehler " & ERR & ": " & ERROR$ + CHR(13) + "In line : " + ERL + CHR(13) + NOW,16,"Fehler aufgetreten"
End Sub
So also ich habe ein Formular das heißt: "Formular 1"
Die Schaltfläche heißt: "Eingabe"
Das Formular was geöffnet werden soll heißt: "Anlagegueter"

Was muss ich da ändern.
Könntest du mir des machen ????
Ich wär dir echt sehr, sehr dankbar.
Aber dann hab ich eine Vorlage und weis wies geht und was man ändern muss.
Wär dir wirklich dankbar.

Vieeeeelen Dank für deine Bemühungen
Fabi

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Makro Formular aufrufen

Beitrag von gogo » Sa 19. Mai 2012, 16:28

Ersetze einfach "Mein Formular" gegen "Anlagegueter"

Bei den Eigenschaften der Schaltfläche gibt's den Reiter "Ereignisse" - dort auf die 3 Punkte in der Zeile "Aktion ausführen" klicken, und mit "Zuweisen" ... "Makro" das Makro "FormOeffnen" zuweisen - voilà
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Fabiii
Beiträge: 39
Registriert: Sa 19. Mai 2012, 13:50

Re: Makro Formular aufrufen

Beitrag von Fabiii » Sa 19. Mai 2012, 17:58

Hallo,
vielen Dank für deine Antwort.
Hab des so gemacht.
Wenn ich jetzt auf den Button drück, kommt ein Fehler:

Fehler 91: Objektvariable nicht belegt.
In line: 4
19.05.2012 17:50:54

Was hab ich falsch gemacht hab sonst am Code nichts verändert.

Vielen Dank für deine Bemühungen.

Fabi

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro Formular aufrufen

Beitrag von RobertG » Sa 19. Mai 2012, 21:00

Hallo Fabi,

schau auch einmal hier:
http://de.openoffice.info/viewtopic.php?f=8&t=52978
... ist nämlich etwas lästig, wenn etwas sowohl in dem einen als auch dem anderen Forum erklärt werden muss.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Fabiii
Beiträge: 39
Registriert: Sa 19. Mai 2012, 13:50

Re: Makro Formular aufrufen

Beitrag von Fabiii » So 20. Mai 2012, 10:23

Hallo,
vielen Dank für deinen Link der Link hat mich sehr weitergebracht.
ICh hab den code jetzt auf meine beiden Formulare umgeschrieben.

Das Hauptformular: "Formular1"
Das Formular was durch die Schaltfläche geöffnet werden soll: "Anlagegueter"

Das Hauptformular soll dann geschlossen werden wenn man auf den Button drückt.

Das hier ist der Code:

Code: Alles auswählen

Global gHauptformClosed as Boolean
Global gClosedForm as String

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)

	DIM stTag AS String

'	GlobalScope.BasicLibraries.LoadLibrary("XrayTool")

	gHauptformClosed = False
	stTag = oEvent.Source.Model.Tag
	aForm() = Split(stTag, "Anlagegueter,Formular1")
	gClosedForm = ( Trim(aForm(1)) )
	ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(0)) ).open
	ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(1)) ).close

	gHauptformClosed = True

END SUB


SUB Hauptformular_oeffnen

'	GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
	
	If gClosedForm = "Formular1" Then
	gClosedForm = ""
	Exit Sub
	End If
	
	If gHauptformClosed = True Then
	ThisDatabaseDocument.FormDocuments.getByName( "Formular1" ).open	
	gHauptformClosed = False	
	End If

END SUB
Ist der Code so richtig???
Wenn ich ihn ausführe kommt eine Fehlermeldung:


Unzulässiger Wert des Datentyp.
Index auserhalb des definierten Bereichs.

Er makiert mir dann die Zeile 13:

Code: Alles auswählen

gClosedForm = ( Trim(aForm(1)) )

was mach ich falsch???

Bitte um einen Tipp.

Vielen Dank für eure Bemühungen !!!!!!!!

Gruß
Fabi

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro Formular aufrufen

Beitrag von RobertG » So 20. Mai 2012, 10:44

Hallo Fabi,

irgendwie scheinst Du mit dem Code richtig ins Schwimmen zu geraten.
Mit
ThisDatabaseDocument.FormDocuments.getByName( "Formularname des zu öffnenden Formulars").open
öffnest Du das neue Formular
Mit
ThisDatabaseDocument.FormDocuments.getByName("Formularname des zu schließenden Formulars").close
schließt Du das zu schließende Formular.
Die einfachste Variante wäre jetzt:

Code: Alles auswählen

SUB Formularwechsel_Form1_Form2
ThisDatabaseDocument.FormDocuments.getByName("Form1").open
ThisDatabaseDocument.FormDocuments.getByName("Form2").close
END SUB
Mehr brauchst Du nicht, wenn Du von einem Formular zum anderen wechseln willst und dabei das Ausgangsformular schließen möchtest.
Die erste Verfeinerung ist, dass Du vielleicht mit mehr Formularen arbeitest. Dann wäre es natürlich blöd, den Code jedes Mal neu schreiben zu müssen.
Das geht dann so:

Code: Alles auswählen

SUB Formularwechsel(FormOpen AS STRING, FormClose AS STRING
ThisDatabaseDocument.FormDocuments.getByName(FormOpen).open
ThisDatabaseDocument.FormDocuments.getByName(FormClose).close
END SUB

SUB Wechsel_Form1_Form2
Formularwechsel("Form1", "Form2")
END SUB
Jetzt kannst Du das Makro natürlich erweitern. Geschickt ist bei vielen Buttons, die Inhalte über die Buttons selbst weiter zu geben. Hier bietet sich das Feld "Zusatzinformationen" an. Das ist dann die Geschichte mit oEvent.Source.Model.Tag.
Dieses Makro ist auch in dem Kapitel "Makros" des Base-Handbuchs beschrieben, das Du unter
http://de.libreoffice.org/hilfe-kontakt/handbuecher/
herunterladen oder direkt per *.pdf lesen kannst.
Wenn Du die Beispieldatenbanken dazu suchst, so sind die bisher nicht im Wiki veröffentlicht. Die stehen bisher auf ODFAuthors oder hier:
http://robert.familiegrosskopf.de
unter dem Menüpunkt "Einführung Base" bzw. direkt zum Download als
http://robert.familiegrosskopf.de/downl ... se_V35.zip

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Fabiii
Beiträge: 39
Registriert: Sa 19. Mai 2012, 13:50

Re: Makro Formular aufrufen

Beitrag von Fabiii » So 20. Mai 2012, 11:02

Hallo,
vielen Dank, dass du so viel Geduld hast.
Ich kapier einfach nich was ich jetzt schon wieder falsch gemacht hab das ist mein CODE:

Code: Alles auswählen

SUB Formularwechsel_Form1_Form2
ThisDatabaseDocument.FormDocuments.getByName("Anlagegueter").open
ThisDatabaseDocument.FormDocuments.getByName("Formular1").close
END SUB

Sub Macro1

End Sub
Was ist daran falsch ?????
Ich hoff des is meine letzte Frage tut mir leid dass ich dih immer Fragen muss.
Weis das echt sehr zu schetzen!!!!

Bitte um hoffentlich die letzte Antwort !!!

Gruß
Fabi

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro Formular aufrufen

Beitrag von RobertG » So 20. Mai 2012, 11:39

Hallo Fabi,

ein Hinweis auf die Fehlermeldung wäre interessant.
Du hast also in Deinem Base-Dokument ein Formular, das den Namen "Formular1" hat. Aus diesem heraus rufst Du das Makro auf.
Dann hast Du ein zweites Formular in Deinem Base-Dokument, das den Namen "Anlagegueter" hat. Dieses Formular sollte geöffnet werden.

... oder hast Du etwas externe Formulare? ... oder etwas Formulare in dem Ordner gestaffelt, so dass Du im Formularordner Unterordner gebildet hast?

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten