Seite 1 von 1

[gelöst] Werte beim Formularaufruf übergeben.

Verfasst: Mo 10. Jan 2022, 13:36
von Anekdoteles
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

Re: Werte beim Formularaufruf übergeben.

Verfasst: Mo 10. Jan 2022, 17:22
von RobertG
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

Re: Werte beim Formularaufruf übergeben.

Verfasst: Mo 10. Jan 2022, 19:07
von Anekdoteles
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

Re: Werte beim Formularaufruf übergeben.

Verfasst: Mo 10. Jan 2022, 20:01
von gogo
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

Re: Werte beim Formularaufruf übergeben.

Verfasst: Mo 10. Jan 2022, 20:37
von gogo
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

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

Verfasst: Mo 10. Jan 2022, 21:59
von Anekdoteles
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