Ein Makro soll einige Felder aus einer Datenbank mit DatenSatzNr. X füllen. Es soll in OO-Writer nach Druck auf eine Funktionstaste ein Makro gestartet werden, das die Datensatz-Nummer X abfragt und danach sofort in dem OO-Brief die Felder (Feldbefehle) gefüllt werden.
Wo fange ich an zu suchen? - Nach welchen Stichworten könnte ich hier im Archiv suchen? - Eine Datenbank unter OO-Base liegt schon vor und ist von OO-Writer aus auch schon sichtbar unter Einfügen -> Feldbefehl -> andere -> Datenbank.
danke schon mal
Eckard
Makro soll Felder aus Datenbank mit DatenSatzNr X füllen
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makro soll Felder aus Datenbank mit DatenSatzNr X füllen
[Beantwortung einer alten Frage - für die nachfolgend Suchenden]
Eckhard,
einen solchen Fall löse ich wie folgt:
A) Vorlage erstellen mit Textmarken ("Adresse1": erste Zeile im Anschriftenfeld, ..., "VertragID": Vertragsnummer, usw.)
B) registriere die Datenquelle, im Bsp.: "DBName" (wenn noch nicht geschehen)
C) Makro erstellen und Schaltfläche zuweisen:
Achtung:
* keine Fehlerüberprüfungen im Beispiel!
* ich hab's gerade mal aus vorhandenen eigenen Makros hier reingehackt - natürlich entstehen dabei Tipp-/Denkfehler
Für den Anfang sollte es aber reichen. Fragen?
Eckhard,
einen solchen Fall löse ich wie folgt:
A) Vorlage erstellen mit Textmarken ("Adresse1": erste Zeile im Anschriftenfeld, ..., "VertragID": Vertragsnummer, usw.)
B) registriere die Datenquelle, im Bsp.: "DBName" (wenn noch nicht geschehen)
C) Makro erstellen und Schaltfläche zuweisen:
Code: Alles auswählen
' Kontext holen
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
oDatenquelle = oDatenbankKontext.getByName( "DBName" )
' warten ?
oDatenquelle.setLoginTimeout( 10 ) ' sekunden
' Verbindung herstellen: benutzer und passwort übergeben !!!
oVerbindung = oDatenquelle.getConnection( "", "" )
' Identifikationsnummer abfragen
DBSatzNr = Inputbox( "Datensatz mit welcher Nummer?")
' SQL-Abfrage aufbauen
sSQL = "SELECT " & _
" v.id , " & _
" v.bezeichnung , " & _
" v.datum , " & _
" k.name " & _
" FROM " & _
" t093_vertrag as v " &
" WHERE " & _
" v.t090_id = " DBSatzNr
' Statement erzeugen
oStatement = oVerbindung.createStatement()
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )
' Ergebnisse auswerten
While oResultSet.Next()
' die Vertragsnummer
iVertragsNummer = TRIM( oResultSet.getString(1) ) ' id
' weitere.....
Wend
' Dokument aus Vorlage erzeugen
Dim FileProperties(0) As New com.sun.star.beans.PropertyValue
FileProperties(0).Name = "AsTemplate"
FileProperties(0).Value = true
url = ConvertToURL( "/pfad/zur/vorlage.ott" )
oDoc = StarDesktop.loadComponentFromURL(url,"_blank", 0, FileProperties())
' Textmarken füllen
oBM = oDok.getBookmarks().getByName("VertragsID")
' Inhalt setzen
oBM.getAnchor().String = iVertragsNummer
'
' weitere .....
' DB freigeben
' oResultSet.close()
' oStatement.close()
* keine Fehlerüberprüfungen im Beispiel!
* ich hab's gerade mal aus vorhandenen eigenen Makros hier reingehackt - natürlich entstehen dabei Tipp-/Denkfehler
Für den Anfang sollte es aber reichen. Fragen?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)