Hallo OO-Base Fans,
nun arbeite ich seit einigen Tagen mit Base und komme leider auch nach einigen Recherchen nicht weiter mit meinen Bemühungen.
Deswegen möchte ich hier um Hilfe bitten, damit ich wieder ruhig schlafen kann.
Sollte es notwendig sein, baue ich gerne auch eine Beispieldatei und hänge sie an, ansonsten versuche ich erstmal so zu erklären, was ich möchte...
Ich habe eine Mastertabelle, in der hauptsächlich nur IDs stehen, die zu anderen Tabellen führen und dementsprechend Daten in einem Formular (Listenfeld) anzeigen.
Nun möchte ich auf Knopfdruck einer Schaltfläche ein Makro hinterlegen, das mir ermöglicht, die Daten zu Writer zu übergeben.
Mit dem folgenden Makro (hier im Forum gefunden) kann ich die Werte (IDs) der Mastertabelle an Writer übergeben, bekomme dann aber natürlich nur die ID und nicht den dazugehörigen Wert des Listenfeldes, der ja eigentlich angezeigt wird.
Code: Alles auswählen
Sub Main
oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0)
oColumns = oForm.Columns
REM Pfad zur Vorlage zusammensetzen
Globalscope.BasicLibraries.loadLibrary("Tools")
sURL = oDoc.Parent.URL
sURL = DirectoryNameoutofPath(sURL,"/") & "/"
sURL = sURL & "Text.odt"
REM Vorlage öffnen
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
REM Textfelder holen
enumTextfields = newDoc.Textfields.createEnumeration
Do While enumTextfields.hasMoreElements
thisTextfield = enumTextfields.nextElement
If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
sColumnname = thisTextfield.PlaceHolder
If oColumns.hasByName(sColumnname) Then
nIndex = oForm.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm.getString(nIndex)
End If
End If
Loop
End Sub
Nun habe ich eine zusätzliche Abfrage erstellt, in der, passend zur ID der Mastertabelle alle zugehörigen Informationen angezeigt werden, also auch der richtige entsprechende Eintrag des Listenfeldes.
Nun benötige ich aber ein Makro, das so in etwas folgendes macht:
-Schau welcher Mastertabellen-ID Datensatz gerade auf ist
-Gehe in die Abfrage (Abfrage_AlleDaten)
-Gehe zu dem Datensatz, der der Mastertabellen-ID entspricht
-Speichere alle Spaltennamen und zugehörigen Wert des Feldes
-Übergebe diese an Writer und ersetze die dort gesetzten Platzhalter, insofern ein Wert vorhanden ist.
Ich hoffe das ist so verständlich...
Klingt ja meist immer sehr abstrakt, wenn man es ließt.
Vielen Dank schonmal im voraus für die Unterstützung.