Wir sind auf Ihre Unterstützung angewiesen!
💚 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. 🤗

[gelöst] Werte beim Formularaufruf übergeben.

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Benutzeravatar
Anekdoteles
Beiträge: 7
Registriert: Mo 10. Jan 2022, 12:27

[gelöst] Werte beim Formularaufruf übergeben.

Beitrag von Anekdoteles » Mo 10. Jan 2022, 13:36

Hallo zusammen,

seit einiger Zeit versuche ich vergeblich, ein Formular mit einem bestimmten Datensatz aufzurufen.

Ich habe eine Startseite mit einem Listenfeld, in dem ich einen Datensatz auswählen kann. Der Zugriff funktioniert, der Datensatz wird ausgewählt, Details aus dem Datensatz werden in einem Unterformular angezeigt, und ich kann von da aus auch den Datensatz bearbeiten. Es gibt ein zweites Formular (kein Unterformular), wo ich neue Datensätze erfassen kann. Auch das funktioniert. Nun will ich aber aus dem Hauptformular (der Button liegt auf dem Unterformular) dieses zweite Formular aufrufen, wo direkt der ausgewählte Datensatz zum bearbeiten aktiviert ist. Genau das funktioniert nicht.

Nirgendwo habe ich einen Hinweis gefunden, wie ich die Datensatz-ID im Aufruf mitgebe. Ich habe mir schon ein Textfeld angelegt, in dem mir die Datensatz-ID angezeigt wird. Da ich eine Filter-Tabelle habe, die ich schon für das Listenfeld nehme, könnte ich die ID auch dort reinschreiben, um den Wert dann vom anderen Formular auszulesen. Da habe ich keine Variante gefunden, den Wert darin zu speichern, ohne alles andere strubbelig zu machen.

Auch der Versuch, dieses Feld per Makro auszulesen schlug fehl, scheinbar bekomme ich per Makro nicht den richtigen Zugriff auf das Unterformular. Alle Lösungen, die Drawpage nutzen, produzieren eine Fehlermeldung. Genau wie eine oEvent-Lösung (ist beim Sub-Aufruf angegeben), die ich gefunden habe. Der Weg über ...FormDocument.getByName("Hauptformular").getByName("Unterformular") produziert eine Fehlermeldung beim 2. getByName, egal ob ich das wie hier kombiniere, oder in einen getrennten Befehl schreibe. Irgendwelche passenden .uno-Befehle habe ich bisher nicht gefunden (oder ich hab sie nicht verstanden :D )

Eine Dialog-Lösung habe ich ausgeschlossen, da es da scheinbar keinen direkten Tabellenzugriff zu geben scheint.

Die Makrosicherheit steht auf niedrig, alle Variablen sind per Dim deklariert. Irgendwie hab ich da wohl grad nen Brett vorm Kopf, oder irgendeine andere Einstellung ist noch falsch. Hat noch wer eine Idee ?

Oder gibt es noch eine Möglichkeit, Unterformulare ein- und auszublenden ?

Vielen Dank schon mal für Tips.

Gruß Daniel
Zuletzt geändert von Anekdoteles am Mo 10. Jan 2022, 21:54, insgesamt 1-mal geändert.
Libre Office 7.2.2.2
Windoof 10

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

Re: Werte beim Formularaufruf übergeben.

Beitrag von RobertG » Mo 10. Jan 2022, 17:22

Hallo Daniel,

aus der Beschreibung werde ich nicht schlau. Ein Screenshot des Formulars mit der Abbildung des Formularnavigators wäre hier vielleicht hilfreich. Oder gleich eine Dummydatei zum Nachvollziehen.

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

Benutzeravatar
Anekdoteles
Beiträge: 7
Registriert: Mo 10. Jan 2022, 12:27

Re: Werte beim Formularaufruf übergeben.

Beitrag von Anekdoteles » Mo 10. Jan 2022, 19:07

Hallo Robert,

ja, ich gebe zu, es liest sich ziemlich strubbelig. Ich hab einfach mal ein Dummy daraus gemacht, mit allen Varianten im Makroeditor, die ich bisher ausprobiert habe. Zumindest die, an die ich mich erinnere. :D

Ich habe also vor, aus dem ersten Formular "Startseite" heraus das zweite Formular aufzurufen, wo dann direkt der Datensatz aktiv ist, den ich im ersten Formular markiert habe.

Wenn es eine "einfache" Möglichkeit gibt, die Datensatz-ID beim Aufruf zu übergeben, wäre das sicher schon mal gut. Da ich aber sicher im weiteren Verlauf mit Makros werde arbeiten müssen, und da auch Felder auslesen muß, interessiert mich die Makrovariante ebenfalls brennend (wenn man da überhaupt drumherum kommt).

Als 2. bzw. 3. Frage wäre dann noch, ob und wie ich Unterformulare komplett aus- und einblenden kann. Das würde mir für vieles ausreichen.

Vielen Dank schon mal

Gruß Daniel
Dateianhänge
Projekte Dummy.zip
(21.68 KiB) 81-mal heruntergeladen
Libre Office 7.2.2.2
Windoof 10

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Werte beim Formularaufruf übergeben.

Beitrag von gogo » Mo 10. Jan 2022, 20:01

Mach mal so:

Code: Alles auswählen

Sub NamenDetail_oeffnen(oEvent as object)

Formular_NamenDetail = ThisDatabaseDocument.FormDocuments.getByName( "NamenDetail").open
with Formular_NamenDetail.Drawpage.Forms.getbyname("NamenDetail")
	.Filter = "NamID = " & oEvent.Source.Model.Parent.getByName("MarkID").getCurrentValue()
	.reload
end with

End Sub
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

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Werte beim Formularaufruf übergeben.

Beitrag von gogo » Mo 10. Jan 2022, 20:37

ad Ein/Ausblenden:

leg' im Startformular eine Checkbox (Markierfeld) an. Dem Ereignis "Status geändert" weist Du folgendes Makro zu:

Code: Alles auswählen

Sub Tabellen_Steuerelement_1_auf_Startformular_Ein_Aus(oEvent)

if oEvent.Source.Model.State = 1 then
	oEvent.Source.Model.Parent.getByName("Tabellen-Steuerelement  1").EnableVisible=True
else
	oEvent.Source.Model.Parent.getByName("Tabellen-Steuerelement  1").EnableVisible=False
end if

end sub
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

Benutzeravatar
Anekdoteles
Beiträge: 7
Registriert: Mo 10. Jan 2022, 12:27

Re: [gelöst] Werte beim Formularaufruf übergeben.

Beitrag von Anekdoteles » Mo 10. Jan 2022, 21:59

Super. Funzt alles.

Das Ein- und Ausblenden geht zumindest bei einzelnen Feldern. Soll auch erstmal ausreichen.

Heißen Dank für die schnellen Antworten - werd bestimmt noch nerven :D

Gruß Daniel
Libre Office 7.2.2.2
Windoof 10

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