Formular2 mit Datensatz aus Formular1 öffnen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Formular2 mit Datensatz aus Formular1 öffnen

Re: Formular2 mit Datensatz aus Formular1 öffnen

von F3K Total » So, 01.07.2012 10:55

Hallo Yaddayadda,
ich versuche, es mit meinen Worten zu erklären:
Das Verwirrende ist, dass Formulardokumente und die auf der Zeichenfläche (Drawpage) dieser Dokumente im Hintergrund liegenden Forms beide mit dem Begriff Formular bezeichnet werden, aber etwas völlig unterschiedliches sind.

Mit

Code: Alles auswählen

oformdoc2.open
öffnest Du das Formulardokument dessen Name ich nicht kenne (<Formularname>)
Es ist in Base eingebettet und eigentlich ein Writer Dokument.
Du siehst die Formulardokumente, wenn du in BASE links das Icon "Formulare" anklickst.

Ist es mit

Code: Alles auswählen

formdoc2.open
geöffnet, stehst Du mit diesem Formular an fast der gleichen Stelle, wie im ersten Formular, wenn Du es per Doppelklick geöffnet hast.
Statt ThisComponent nimmst Du nun .Component.
Ab hier kommst du zu denen im Hintergrund liegenden Forms mit

Code: Alles auswählen

.drawpage.forms.getbyname("<Formularname>")
Im Entwurfsmodus des Formulardokumentes kannst du den Formularnavigator einschalten, um diese "anderen" Formulare zu bearbeiten/alanysieren.

Ich empfehle Dir die Verwendung eines Inspection-Tools wie MRI oder Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten.

Gruß R

Re: Formular2 mit Datensatz aus Formular1 öffnen

von Yaddayadda » So, 01.07.2012 10:23

Weil oForm2 nicht in thisComponent liegt!?

Re: Formular2 mit Datensatz aus Formular1 öffnen

von F3K Total » Fr, 29.06.2012 19:50

Hast du auch verstanden warum?
Gruß R

Re: Formular2 mit Datensatz aus Formular1 öffnen

von Yaddayadda » Fr, 29.06.2012 19:40

Es klappt! :D Und wieder tausend Dank für deine Hilfe!

Gruß,
Yaddayadda

Re: Formular2 mit Datensatz aus Formular1 öffnen

von F3K Total » Fr, 29.06.2012 17:06

jo, korrekt, da habe ich noch eine Kleinigkeit vergessen: Component
So müßte es funktionieren:

Code: Alles auswählen

SUB Datensatz_auslesen

    ' Zugriff auf Formular

       DIM oID AS OBJECT
       dim oDoc as object
       dim oForm1 as object
       dim oFormdoc2 as object
       dim oForm2 as object
       DIM iID AS INTEGER
         
       oDoc=thisComponent
       oDrawpage=oDoc.drawpage
       oForm1=oDrawpage.forms.getByName("Anzeige")
       oFormdoc2=thisdatabasedocument.FormDocuments.getbyname("Stammdaten")
     
       
    ' Filter setzen. "value" gilt bei Integer-Werten, wenn es Text ist, ersetze "value" durch "text"   
    ' die Variable iID nimmt den Wert auf und verwendet ihn für den Formular-Filter   
       
       oID = oForm1.getByName("ID")
       iID = oID.value
       oFormdoc2.open
       oform2 = oFormdoc2.Component.drawpage.forms.getbyname("<Formularname>")' kenne ich nicht
       oForm2.filter = " ""ID"" LIKE '" & iID & "'"
       oForm2.ApplyFilter=true
       
    ' Formular aktualisieren
       oForm2.reload

    END SUB
Gruß R

Re: Formular2 mit Datensatz aus Formular1 öffnen

von Yaddayadda » Fr, 29.06.2012 08:57

Habe den Formularnamen angepasst und es getestet, aber nun kommt die Fehlermeldung "drawpage" nicht gefunden, markiert ist dabei die Zeile mit dem eingefügten Formularnamen (der aber korrekt ist). :-(

Re: Formular2 mit Datensatz aus Formular1 öffnen

von F3K Total » Do, 28.06.2012 22:46

Hallo,
oForm2 ist doch Dein Formdocument.
Auf das kannst Du den Filter nicht setzen.
Versuch es mal so, <Formularname> mußt Du noch ersetzen, ungetestet:

Code: Alles auswählen

SUB Datensatz_auslesen

' Zugriff auf Formular

   DIM oID AS OBJECT
   dim oDoc as object
   dim oForm1 as object
   dim oFormdoc2 as object
   dim oForm2 as object
   DIM iID AS INTEGER
     
   oDoc=thisComponent
   oDrawpage=oDoc.drawpage
   oForm1=oDrawpage.forms.getByName("Anzeige")
   oFormdoc2=thisdatabasedocument.FormDocuments.getbyname("Stammdaten")
  
   
' Filter setzen. "value" gilt bei Integer-Werten, wenn es Text ist, ersetze "value" durch "text"   
' die Variable iID nimmt den Wert auf und verwendet ihn für den Formular-Filter   
   
   oID = oForm1.getByName("ID")
   iID = oID.value
   oFormdoc2.open
   oform2 = oFormdoc2.drawpage.forms.getbyname("<Formularname>")' kenne ich nicht
   oForm2.filter = " ""ID"" LIKE '" & iID & "'"
   oForm2.ApplyFilter=true
   
' Formular aktualisieren
   oForm2.reload

END SUB
Gruß R

Formular2 mit Datensatz aus Formular1 öffnen

von Yaddayadda » Do, 28.06.2012 20:42

Hallo,

ich möchte gerne per Schaltfläche einen bestimmten Datensatz, der in Formular1 angezeigt wird (als Ergebnis einer Suche) in einem 2. Formular öffnen (zur dortigen Bearbeitung, da Formular1 nicht editierbar sein soll).

Dazu habe ich mir dieses Makro gebastelt:

Code: Alles auswählen

SUB Datensatz_auslesen

' Zugriff auf Formular

   DIM oID AS OBJECT
   dim oDoc as object
   dim oForm1 as object
   dim oForm2 as object
   DIM iID AS INTEGER
      
   oDoc=thisComponent
   oDrawpage=oDoc.drawpage
   oForm1=oDrawpage.forms.getByName("Anzeige")
   oForm2=thisdatabasedocument.FormDocuments.getbyname("Stammdaten")
   
' Filter setzen. "value" gilt bei Integer-Werten, wenn es Text ist, ersetze "value" durch "text"   
' die Variable iID nimmt den Wert auf und verwendet ihn für den Formular-Filter   
   
   oID = oForm1.getByName("ID") 
   iID = oID.value
   oForm2.open
   oForm2.filter = " ""ID"" LIKE '" & iID & "'"
   oForm2.ApplyFilter=true 
   
' Formular aktualisieren
   oForm2.reload

END SUB
Es klappt bis zu dem Punkt, an dem sich das zweite Formular öffnet, dann erscheint die Fehlermeldung "Eigenschaften oder Methode nicht gefunden: filter", dazu ist die Zeile

Code: Alles auswählen

 oForm2.filter = " ""ID"" LIKE '" & iID & "'"
markiert.

Wieso klappt es nicht? Was fehlt meinem Formular2, um den Filter mit der übermittelten ID aus Formular1 setzen zu können? Liegt es daran, dass Formular2 nur immer 1 datensatz anzeigt und keine Tabelle? Wie kann ich sonst das Formular mit einem bestimmten Datensatz öffnen lassen?

Danke für eure Hilfe,
Gruß,
Yaddayadda

Nach oben