von komma4 » Sa, 14.07.2007 15:23
[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:
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()
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?
[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:
[code]' 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()
[/code]
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?