Seite 1 von 2

per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: So 27. Okt 2013, 09:03
von nikolay
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: So 27. Okt 2013, 10:17
von RobertG
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: So 27. Okt 2013, 11:05
von nikolay
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: So 27. Okt 2013, 17:43
von F3K Total
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: Di 25. Mär 2014, 13:57
von RonK
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: Di 25. Mär 2014, 19:32
von F3K Total
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: Do 27. Mär 2014, 11:58
von RonK
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!

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: Fr 28. Mär 2014, 16:43
von RonK
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: Fr 28. Mär 2014, 18:06
von F3K Total
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

Re: per Schaltfläche ein bestimmtes Formular öffnen

Verfasst: Mo 31. Mär 2014, 10:56
von RonK
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