Beschriftung von Standardformen mit Base-daten

Zeichnungen erstellen

Moderator: Moderatoren

F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Beschriftung von Standardformen mit Base-daten

Beitrag von F3K Total »

Hallo Pascal,
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.
Dann funktioniert das Ganze mit folgendem Makro, welches Du z.B. über eine Schaltfläche starten kannst.

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