Seite 1 von 1
Re: Aus Formular Infofenster öffnen
Verfasst: Do 28. Jan 2016, 18:50
von gogo
so etwa?
Formular1 öffnen, Klick auf Button "Details" öffnet Formular2 und setzt dort einen Filter:
Code: Alles auswählen
Sub FormMitFilterOeffnen(oEvent)
oForm1 = oEvent.Source.Model.Parent
String_ID = oForm1.getbyname("MainForm_Grid").getbyname("ID_1").Text
if String_ID = "" then if msgbox("Keine ID gefunden! Bitte einen gueltigen gespeichertne Datensatz asuwaehlen!") then exit sub
sFilter = "ID_2 = " & String_ID
msgbox "Der Filter der im Formular gesetzt wird lautet:" & chr(10) & sFilter
oFrom2 = ThisDatabaseDocument.FormDocuments.getbyname("Formular2").open
oFrom2.DrawPage.Forms.getbyname("MainForm").filter = sFilter
oFrom2.DrawPage.Forms.getbyname("MainForm").reload
end sub
Re: Aus Formular Infofenster öffnen
Verfasst: Di 2. Feb 2016, 10:07
von gogo
Du musst ein Reload auslösen - so wie in Deinem Makro, nur eben in dem Fomular das Du aktuell haben willst
Code: Alles auswählen
...
oForm2.DrawPage.Forms.getbyname("SubF_Kont").reload
...
Solltest Du das oForm2 von oForm1 aus aktualisieren wollen, so musst Du oForm2 in einer globalen Variable speichern, dann kannst Du auch nach Beendigung des Makros noch mal darauf zugreifen
Code: Alles auswählen
GLOBAL oForm2
SUB openFormMitFilter(oEvent)
DIM oForm1 AS OBJECT
' DIM oForm2 AS OBJECT <<< STREICHEN!!!
...
cSQLFltStr = "vid_pers = " & cStrID
if NOT isobject(oForm2) then
oForm2 = ThisDatabaseDocument.FormDocuments.getbyname("901-Kontakte").open
end if
oForm2.DrawPage.Forms.getbyname("SubF_Kont").filter = cSQLFltStr
oForm2.DrawPage.Forms.getbyname("SubF_Kont").reload
end sub
Re: Aus Formular Infofenster öffnen
Verfasst: Di 2. Feb 2016, 21:42
von gogo
ja - das ist so - wenn der FK nicht eingetragen ist, dann wird's nicht funktionieren
Also, entweder den FK händisch mit-erfassen, (kann man ja per Listenfeld machen, damit man sich keine Nummern merken muss) oder vermutlich eleganter mittels einer Haupt-Unterformular-Konstruktion.
Dabei hast Du in Formular2 ein Hauptformular mit der Tabelle1 und ein Unterformular mit Tabelle3 Verknüpft wird von Tabelle1.ID_1 zu Tabelle3.VID_1, also auf den FK in Tabelle3
Den Filter setzt Du dann im Hauptformular (ID_1 aus Formular1 = ID_1 im Hauptformular), somit werden
1. im Unterformular nur die korrespondierenden Sätze aus Tabelle3 angezeigt und
2. der FK automatisch gesetzt (Bordmittel von LO, da braucht man gar nichts weiter zu tun)
Ich habe im angehängten zip das "Formular2_HF_UF" so wie geschildert zusammengestöpselt.
Re: Aus Formular Infofenster öffnen
Verfasst: Di 2. Feb 2016, 22:29
von F3K Total
Hi,
anbei ein Beispiel (Test_Form_oeffnen.zip), die aktuelle ID wird in der einzeiligen Filtertabelle zwischengespeichert.
Dann per Formularverknüpfung an das Unterformular übergeben, so dass sie zur Erstellung neuer Datensätze gesetzt ist.
Gruß R
Edit: Variante 2 (Test_Form_oeffnen2.zip)zugefügt, die aktuelle ID wird schon im ersten Formular gespeichert, dann flackert das zweite beim öffnen nicht.
Edit2:ups, hatte gestern abend gar nicht gemerkt dass gogo auch schon eine entsprechend ähnliche Lösung geschrieben hat.
Trotzdem lasse ich mal meine stehen, denn der Zugriff auf die Daten ist jeweils ein anderer. Während gogo die ID_1 aus der Spalte des Tabellenkontrollfeldes ausliest, werden in meiner Variante die Daten direkt aus dem Formular gelesen, und auch so gespeichert. Funktioniert beides.