Hallo Toxitom,
hallo Mr.Ioes
danke für die Antwort,
ich bin mittlerweile schon ein ganzes Stück weiter
Du willst also kein neues Base-Formular öffenen sondern eine (Writer-/Calc-/Draw-/Impress-)Dateivorlage
Ja, genau. Erstens, weil mir ersteres zu schwierig erscheint, zweitens, weil das in OpenOffice 2.0 nicht sonderlich stabil ist. Jedenfalls ist mir mehrfach beim Erstellen des Formulars OpenOffice abgestürzt und das Formular war weg, nicht mehr in der Datenbank, obwohl ich es gespeichert hatte und die Datenbank selbst auch. Außerdem sollen die Formulare direkt von den NutzerInnen geöffnet werden können.
In dem Fall ist das doch gar nicht nötig. Wenn du per Basic das neue Dokument öffnest, kannst du doch auch gleich im Basic (dem laufenden Makro) alle anderen Einstellungen vornehmen. Da brauchst du keine "Parameterübergabe".
genau, das hatte ich mittlerweile auch festgestellt. (wie gesagt, ich habe keine Ahnung von Makros, wußte also auch nicht, dass sich "thiscomponent" immer auf das aktuelle Dokuement bezieht...
Beschreib doch mal etwas ausführlicher, was das denn eigentlich werden soll. Wahrscheinlich gibt es ganz andere Lösungen - eventuell reicht ja auch schon ein Unterformulatr?
Also:
Es gibt eine Datenbank, in der es folgende Tabellen git:
* Organisationen
* Eigenschaften von Organisationen (es ist eine Datenbank, mit der sich NGOs nach bestimmten Kriterien suchen lassen sollen)
* Rubriken
Jetzt gibt es ein Formular, in dem aus der Tabelle "eigenschaften" ein Datensatz angezeigt wird. Der Name der zugehörigen Organisation ist per Fremdschlüssel aus der Tabelle Organisationen per Listenfeld zu sehen bzw. bei neuen Datensätzen auszuwählen.
In einem Unterformular wird nun angezeigt, in welchen verschiedenen Rubriken der jeweilige Eintrag ist. (Für jede Rubrik ist der Eintrag in einer Tabelle als Zeile referenziert).
Weil nicht alle relevanten Informationen übersichtlich auf das Blatt passen und außerdem zu einer Organisation wieder verschiedene andere Tabellen existieren (Mitgliedschaften, Ansprechpersonen, etc.) soll per Schaltfläche für den aktuellen Datensatz ein Formular geöffnet werden, in dem die Organisation mit all ihren Daten steht. (-> dort soll es dann wieder Schaltflächen für die Details z.B. von Ansprechpersonen geben etc.)
Mein Code sieht aktuell so aus und funktioniert:
* die zugehörige Tabelle heißt organisationen und der Primärschlüssel oid
* in der Tabelle auf der das erste Formular beruht ist die Spalte 2 der Fremschlüssel der auf "organisationen.oid" verweist.
Code: Alles auswählen
Sub DatensatzDetails
odoc=thiscomponent
REM Hier wird der aktuelle Datensatz in der Variable AktuelleID gespeichert
oform=odoc.drawpage.forms.getbyindex(0)
AktuelleID=oform.getstring(2) REM Die Nummer steht für die Spalte in der Tabelle, um die es geht...
'MsgBox ( "Datensatz Nr.: " & AktuelleID )
sFile = "Pfad_zu_Formular_fuer_Details.odt" REM welches Formular soll geöffnet werden
sURL = ConvertToURL(sFile) REM konvertiert Dateiname in URL
Dim myProps(0) as New com.sun.star.beans.PropertyValue REM öffnet Dokument schreibgeschützt
myProps(0).Name="ReadOnly"
myProps(0).Value = true
oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, myProps()) REM öffnet Formular
REM Jetzt ist das neue Formular geöffnet. Als Formular wird das erste Formular (0) definiert.
REM Und als "command" ein SQL-Befehl. (Wichtig: Eigenschaften des Formulars müssen als Datenquelle SQL-Befehl ausweisen)
oForm = oDoc.DrawPage.Forms(0)
oForm.command = "select * from organisationen where oid = " & AktuelleID
oForm.reload
end sub
Vorerst ist das auch schon fast alles, was ich will. Hoffentlich klappt das auch in der Praxis...
Ein Problem habe ich aktuell noch:
Wenn ich in dem neu geöffneten Formular wiederum per Schaltfläche ein Makro auführen möchte, funktioniert das nicht, wenn das Formular bereits durch das Makro geöffnet wurde. (Das neue Makro befindet sich im neuen Dokument). Offensichtlich läuft das andere noch und verhindert die Ausführung eines neuen??
Vielen Dank & grüße
laura36[/quote][/quote]