Re: Beschriftung von Standardformen mit Base-daten
Verfasst: Sa, 28.01.2012 07:40
Hallo Pascal,
zwar spät, aber ja, das ist mit einem Macro möglich, z.B. so:
zwar spät, aber ja, das ist mit einem Macro möglich, z.B. so:
- Die Datenbank heißt "Elemente_Beschriften" und ist unter Extras/Optionen/OpenOffice.org Base angemeldet
- In der Datenbank gibt es eine Tabelle "Ablauf" mit den Spalten ID, Name, Beschriftung
- Die Zeichnungselemente wurden mit dem Namen versehen, der in der Base Tabelle in der Spalte "Name" steht z.B. E1, E2 ... usw.
Code: Alles auswählen
option explicit
Sub S_Import_Label_from_DB
DIM DatabaseContext AS OBJECT, Datenquelle AS OBJECT, Verbindung AS OBJECT, SQL_Anweisung AS OBJECT, Sql_Abfrage AS OBJECT
DIM odoc AS OBJECT, odrawpage AS OBJECT, oshape AS OBJECT
DIM sSql AS string, SName as string, SBeschriftung as string
odoc = ThisComponent 'DrawZeichnung
odrawpage = oDoc.currentcontroller.currentpage 'Aktuelle Seite
' Datenbankkontext erzeugen
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
' Datenquelle
Datenquelle = DatabaseContext.getByName("Elemente_Beschriften")
' bei Bedarf Dialog für Passwortschutz aufrufen
Verbindung = Datenquelle.GetConnection("","")' ("Benutzername","Passwort")
' SQL-Kommunikationskanal für die Dokumentenverwaltung
SQL_Anweisung = Verbindung.createStatement()
sSql="select ""Name"", ""Beschriftung"" from ""Ablauf""" 'Datenabfrage definieren
Sql_Abfrage=SQL_Anweisung.executeQuery(sSql)'Daten abfragen
while Sql_Abfrage.next 'abgefragte Daten durchlaufen
SName = Sql_Abfrage.getstring(1) 'Namen auslesen
SBeschriftung = Sql_Abfrage.getstring(2)'Beschriftung auslesen
for i = 0 to odrawpage.count -1 'Zeichnungsobjekte durchsuchen
oshape = odrawpage.getbyindex(i)'Zeichnungsobjekte durchsuchen
if oshape.name = SName then 'Namen stimmen überein
oShape.string = SBeschriftung 'Beschriften
oshape.CharHeight = 14 'Schriftgroesse einstellen
endif
next i
wend
End Sub