BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

per Schaltfläche ein bestimmtes Formular öffnen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
nikolay
Beiträge: 5
Registriert: So 27. Okt 2013, 08:52

per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von nikolay » So 27. Okt 2013, 09:03

Hallo Leute,

ich weiss es ist bestimmt schon ein Thema auch hier gewesen, aber ich finde einfach keine funtionierende Lösung fürs Problem:

In meiner Base-DB will ich im Hauptformular eine Schaltfläche einbauen die ein anderes Formular öffnet. Die Diskussion in diesem Thread

http://www.libreoffice-forum.de/viewtop ... =10&t=9836

hat mir leider nicht wesentlich weter geholfen. Anschliessedn habe ich es mit diesem Code hier probiert:

Code: Alles auswählen

Sub openForm(MeinBeispiel)
  ThisDatabaseDocument.FormDocuments.getByName("MeinBeispiel").open
End Sub
Woraufhin ich die Meldung bekomme: Basic-Laufzeitfehler. Objektvariable nicht belegt.
Die Makros sind aktiviert und die Makrosicherheit auf niedrig eingestellt.

Hat jemand ne Idee? Vielen Dank im Voraus
Nikolay

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von RobertG » So 27. Okt 2013, 10:17

Hallo Nikolay,
nikolay hat geschrieben:

Code: Alles auswählen

Sub openForm(MeinBeispiel)
  ThisDatabaseDocument.FormDocuments.getByName("MeinBeispiel").open
End Sub
Woraufhin ich die Meldung bekomme: Basic-Laufzeitfehler. Objektvariable nicht belegt.
Deine Prozedur beginnt mit der Benennung 'openForm'.
Anschließend packst Du dort eine Variable hinter '(MeinBeispiel)'.
Diese Variable 'MeinBeispiel' ist sicher nicht irgendwo vorher in Deinen Makros definiert worden. Du brauchst sie ja auch gar nicht, weil Du doch den Formularnamen direkt in den Code eingibst.
Also: einfach starten ohne die in Klammern gesetzte Variable:

Code: Alles auswählen

Sub openForm
  ThisDatabaseDocument.FormDocuments.getByName("MeinBeispiel").open
End Sub
Die Fehlermeldung müsste übrigens genau diese Zeile in Deinem Code markiert haben. Außerdem müsste '(MeinBeispiel)' grün dargestellt sein.

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

nikolay
Beiträge: 5
Registriert: So 27. Okt 2013, 08:52

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von nikolay » So 27. Okt 2013, 11:05

Das hat geklappt. Vielen Dank :)

Darf ich ne weitere Frage stellen? Wie kann ich es machen, dass das neu geöffnete Formular den selben Datensatz anzeigt wie das Hauptformular. Z. B. im Hauptformular bearbeite ich Datensatz Nr 5 und will mit dem neu geöffneten Formular Datensatz Nr 5 vervollständigen. Wenn ich ein neues Formular öffne zeigt er aber standardmäßig immer Datensatz Nr. 1, muss dann mich immer hochklicken

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von F3K Total » So 27. Okt 2013, 17:43

Hallo nikolay,
nikolay hat geschrieben:... im Hauptformular bearbeite ich Datensatz Nr 5 und will mit dem neu geöffneten Formular Datensatz Nr 5 vervollständigen
Kannst Du bitte genauere Angaben machen, oder ein Beispieldokument hochladen?
Weil Du jeweils den gleichen Datensatz bearbeiten möchtest, nehme ich an, dass beide Formulare an die gleiche Tabelle gebunden sind.
Da frage ich mich, warum willst Du denn überhaupt auf ein zweites Formular springen?
Läßt sich nicht alles auf einem Formular erledigen? Man kann sowohl ein Tabellenkontrollfeld, als auch korrespondierende einzelne Kontrollfelder auf einem Formular platzieren. D.h. Du klickst im Tabellenkontrollfeld einen Datensatz (z.B. No.5) an, und siehst in den einzelnen Kontrollfeldern alle zu diesem Datensatz gehörenden Tabellenspalten.
Ein kleines Beispiel anbei.


Gruß R
Dateianhänge
Nikolay.zip
nur entpacken
(76.14 KiB) 557-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von RonK » Di 25. Mär 2014, 13:57

Hallo,

ich möchte mich mal in diese Diskussion einklinken, denn ich habe im Grunde das gleiche Problem.
Ich habe eine recht große relationale Kundendatenbank mit mit vielen Formularen incl. Unterformularen erstellt.
Auf dem Hauptformular habe ich Schalter eingebaut, mit denen ich auf ein anderes Formular bequem springen kann.
Dabei hat mir das hier gezeigte Makro sehr geholfen und die Formulare aus einem anderen Formular aufzurufen klappt wunderbar.
Alle Formulare haben gemeinsam, dass sie den gleichen Stammdatensatz (Haupttabelle) anzeigen, nur die jeweils verknüpften Unterformulare sind andere.
Nun wäre es super, wenn beim Springen in ein anderes Formular mit dem erwähnten Makro auch gleichzeitig der gleiche Hauptdatensatz aufgerufen würde.
Klar definiert ist dieser mit der ID, aber wie kann das funktionieren? So muss ich halt immer erst die Datensatznummer oben eingeben...
Gibt es dazu eine Lösung?

Gruß Ron

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von F3K Total » Di 25. Mär 2014, 19:32

Hallo,
klar geht das. Anbei eine sehr einfache Beispieldatei.
Das Makro

Code: Alles auswählen

sub S_open_Form_Personendetails
    oform = thisComponent.drawpage.forms.MainForm
    nID = oform.getint(oform.findcolumn("ID"))'ID der zugrundeliegenden Tabelle ausgelesen
    oFormDocPersonendetails = ThisDatabasedocument.formdocuments.getbyname("Personendetails").open'Detailformular öffen
    oFormPersonendetails = oFormDocPersonendetails.drawpage.forms.MainForm
    oFormPersonendetails.Filter = "(""ID"" = '"+nID+"')"
end sub
  • liest die ID des im Haupformular aktuellen Datensatzes aus
  • öffnet das Detailformular
  • Setzt im Detailformular einen Filter, so dass nur der Datensatz aus dem Haupformular angezeigt wird
Es ist, wenn erforderlich, auch möglich ohne Filter zu arbeiten, und im Unterformular zu dem gewünschten Datensatz zu springen, ist aber aufwendiger.
HTH R
Dateianhänge
JumptonextForm2.zip
(13.72 KiB) 530-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von RonK » Do 27. Mär 2014, 11:58

Hallo F3K Total,

vielen Dank für die unerwartet schnelle Antwort. Leider funktioniert es noch nicht richtig, was vermutlich an meinen beschränkten Kenntnissen liegt.

Zur Erläuterung:
Ich habe in meiner Datenbank ein Formular "Alle Daten" in dem das Hauptformular auf die Tabelle "Stammdaten" zugreift und mit mit mehren Unterformularen über die entsprechenden Tabellen verknüpft ist.
Der Schalter in diesem Formular öffnet das Formular "Anlage 2 Anpassbericht", welches nun seinerseits auf die Tabelle "Stammdaten" zugreift und ebenfalls mehrere Unterformulare enthält.
Jetzt ist mir nicht ganz klar, welche Angaben aus dem Code durch was ersetzen muss, damit es funktioniert.

Was mache ich falsch?

HG Ron

Nachtrag:

Es funktioniert!!!! :-)

Ich habe die Beispieldatenbank zu spät bemerkt und Anhand dieser und der Fehlermeldungen, die ich erhielt, diverse Änderungen vorgenommen.
Die "ID" der Stammdaten heißt bei mir z.B. "IDS" oder die Lücken aus den Formularnamen entfernt u.a.
Jetzt funktioniert es tadellos.

Vielen Dank, nochmal!

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von RonK » Fr 28. Mär 2014, 16:43

Hallo,

jetzt habe ich doch noch eine Frage.
Das Öffnen des anderen Formulars mit der Anzeige des Datensatzes funktioniert jetzt super, aber wenn ich im ersten Formular einen anderen Datensatz auswähle und das Makro wieder auslöse, ohne das andere Formular zu schließen funktioniert es nicht. Es wird dann nur aufgerufen. Gibt es da noch eine Lösung?

Ich hoffe, ich mache nicht zuviel Arbeit.

Gruß Ron

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von F3K Total » Fr 28. Mär 2014, 18:06

RonK hat geschrieben:ich hoffe, ich mache nicht zuviel Arbeit.
Nö, in diesem Fall ist es einfach, füge am Ende des Makros diese Zeile ein

Code: Alles auswählen

oFormPersonendetails.reload
um das Formular zu aktualisieren.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: per Schaltfläche ein bestimmtes Formular öffnen

Beitrag von RonK » Mo 31. Mär 2014, 10:56

Hallo F3K Total,

was soll ich schreiben? Es funktioniert, genial, vielen Dank!
Die Datenbank habe ich schon seit Jahren und dieses Problem treibt mich schon seit OpenOffice-Zeiten um.
Viele Sachen konnte ich mit dem Makro-Rekorder bewerkstelligen, aber soetwas eben nicht.

Gruß Ron

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten