von komma4 » Fr, 22.12.2006 13:51
Carsten01 hat geschrieben:Danke, das hört sich doch vielversprechend an. Wäre schön, wenn Du es mal zur Verfügung stellen könntest. Funktioniert die SQL-Abfrage auch mit einer Datenquelle im dBase-Format?
Wie geschrieben:
habe alles aus anderen Beispielen....
Wo liegen Deine Schwierigkeiten (Fragen)?
Ob die Abfrage auch mit DBase geht? Warum nicht?
a) Dialog anzeigen
Code: Alles auswählen
' Laden der Bibliothek mit dem Dialog
DialogLibraries.LoadLibrary( "wr" )
' Dialog erzeugen
oDialog = _
createUnoDialog( _
DialogLibraries.GetByName( "wr" ).GetByName( "GUI_Rechnungsdruck" ) )
' Objekt der Listbox holen
oListe = oDialog.getControl("ListBox1")
' SQL erstellen, um Listbox zu füllen
' RechnungsNummer und der Kundenname werden aus der DB geholt
' verknüpfung ist die Kunden-ID im Rechnungs-Datensatz
' Ergebnis wird aufsteigend sortiert: älteste Daten zuerst
sSQL = "SELECT " & _
" r.nummer , " & _
" k.name " & _
" FROM " & _
" t091_rechnung as r, " & _
" t090_kunde as k " & _
" WHERE " & _
" r.t090_id = k.id "& _
" ORDER BY "& _
" r.nummer ASC ;"
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )
' Listbox mit Ergebnis füllen
' Ergebnis1 bis ErgebnisNNN
While oResultSet.Next()
' string zusammensetzen
sCombi = oResultSet.getString(1) & " " & _
TRIM( oResultSet.getString(2) )
' immer oben einfügen, dadurch kommt jüngster Datensatz nach oben
oListe.addItem(sCombi,0)
Wend
' obersten Eintrag markieren
oListe.SelectItemPos(0, TRUE)
' DB freigeben
oResultSet.close()
oStatement.close()
' Anzeigen
oDialog.Execute()
b) SQL-Abfrage (mit Feldwert aus Dialog)
Code: Alles auswählen
sQuery = "SELECT t090_kunde.name, "_
& " t090_kunde.strasse, " _
& " t090_kunde.plzort, "_
& " t091_rechnung.jahr, " _
& " t091_rechnung.monat , " _
& " t091_rechnung.nummer, " _
& " to_char( t091_rechnung.datum , 'YYYY-MM-DD' ), " _
& " to_char( t091_rechnung.netto, '99G999D99 L' ), " _
& " to_char( t101_mwst.mwst_satz, '99' ), " _
& " to_char( ( t091_rechnung.netto * t101_mwst.mwst_satz / 100 ), '9G999D99 L' )," _
& " to_char( ( ( t091_rechnung.netto * t101_mwst.mwst_satz / 100 ) "_
& " + t091_rechnung.netto ), '99G999D99 L' ), " _
& " t093_vertrag.bezeichnung , " _
& " t093_vertrag.datum" _
& " FROM " _
& " t090_kunde t090_kunde, " _
& " t091_rechnung t091_rechnung, " _
& " t093_vertrag t093_vertrag, " _
& " t101_mwst t101_mwst " _
& "WHERE " _
& " ( t090_kunde.id = t091_rechnung.t090_id "_
& " AND t093_vertrag.id = t091_rechnung.t093_id " _
& " AND t101_mwst.id = t091_rechnung.t101_id " _
& " AND t091_rechnung.nummer = '"& sNr & "') "
' Abfrage absetzen
oResultSet2 = oStatement2.executeQuery( sQuery )
sStr = ""
' nur einen Treffer !
oResultSet2.Next()
c) Erzeugen Dokument aus Vorlage und Füllen Textmarken
Code: Alles auswählen
Dim DateiEigenschaft(0) As New com.sun.star.beans.PropertyValue
' aus einer Vorlage erstellen
DateiEigenschaft(0).Name = "AsTemplate"
DateiEigenschaft(0).Value = True
' Speicherort und Name der Vorlage
sURL = "file:///zentrale/firma/vorlagen/firma/Rechnung2005.stw"
sURL = "file:///zentrale/firma/vorlagen/firma/Rechnung2006.ott"
' Dokument erstellen
oDok = StarDesktop.loadComponentFromURL( sURL , "_blank", 0, DateiEigenschaft() )
' in der Vorlage sind die folgenden Textmarken (Bookmarks) gesetzt, die nun
' mit dem Inhalten des Abfrageergebnisses gefüllt werden
' wiederholen:
' Textmarke holen
oBM = oDok.getBookmarks().getByName("Anschrift1")
oBM.getAnchor().String = Trim( oResultSet2.getString(1) )
Hilft das?
[quote="Carsten01"]Danke, das hört sich doch vielversprechend an. Wäre schön, wenn Du es mal zur Verfügung stellen könntest. Funktioniert die SQL-Abfrage auch mit einer Datenquelle im dBase-Format?[/quote]
Wie geschrieben:
habe alles aus anderen Beispielen....
Wo liegen Deine Schwierigkeiten (Fragen)?
Ob die Abfrage auch mit DBase geht? Warum nicht?
a) Dialog anzeigen
[code]
' Laden der Bibliothek mit dem Dialog
DialogLibraries.LoadLibrary( "wr" )
' Dialog erzeugen
oDialog = _
createUnoDialog( _
DialogLibraries.GetByName( "wr" ).GetByName( "GUI_Rechnungsdruck" ) )
' Objekt der Listbox holen
oListe = oDialog.getControl("ListBox1")
' SQL erstellen, um Listbox zu füllen
' RechnungsNummer und der Kundenname werden aus der DB geholt
' verknüpfung ist die Kunden-ID im Rechnungs-Datensatz
' Ergebnis wird aufsteigend sortiert: älteste Daten zuerst
sSQL = "SELECT " & _
" r.nummer , " & _
" k.name " & _
" FROM " & _
" t091_rechnung as r, " & _
" t090_kunde as k " & _
" WHERE " & _
" r.t090_id = k.id "& _
" ORDER BY "& _
" r.nummer ASC ;"
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )
' Listbox mit Ergebnis füllen
' Ergebnis1 bis ErgebnisNNN
While oResultSet.Next()
' string zusammensetzen
sCombi = oResultSet.getString(1) & " " & _
TRIM( oResultSet.getString(2) )
' immer oben einfügen, dadurch kommt jüngster Datensatz nach oben
oListe.addItem(sCombi,0)
Wend
' obersten Eintrag markieren
oListe.SelectItemPos(0, TRUE)
' DB freigeben
oResultSet.close()
oStatement.close()
' Anzeigen
oDialog.Execute()[/code]
b) SQL-Abfrage (mit Feldwert aus Dialog)
[code]sQuery = "SELECT t090_kunde.name, "_
& " t090_kunde.strasse, " _
& " t090_kunde.plzort, "_
& " t091_rechnung.jahr, " _
& " t091_rechnung.monat , " _
& " t091_rechnung.nummer, " _
& " to_char( t091_rechnung.datum , 'YYYY-MM-DD' ), " _
& " to_char( t091_rechnung.netto, '99G999D99 L' ), " _
& " to_char( t101_mwst.mwst_satz, '99' ), " _
& " to_char( ( t091_rechnung.netto * t101_mwst.mwst_satz / 100 ), '9G999D99 L' )," _
& " to_char( ( ( t091_rechnung.netto * t101_mwst.mwst_satz / 100 ) "_
& " + t091_rechnung.netto ), '99G999D99 L' ), " _
& " t093_vertrag.bezeichnung , " _
& " t093_vertrag.datum" _
& " FROM " _
& " t090_kunde t090_kunde, " _
& " t091_rechnung t091_rechnung, " _
& " t093_vertrag t093_vertrag, " _
& " t101_mwst t101_mwst " _
& "WHERE " _
& " ( t090_kunde.id = t091_rechnung.t090_id "_
& " AND t093_vertrag.id = t091_rechnung.t093_id " _
& " AND t101_mwst.id = t091_rechnung.t101_id " _
& " AND t091_rechnung.nummer = '"& sNr & "') "
' Abfrage absetzen
oResultSet2 = oStatement2.executeQuery( sQuery )
sStr = ""
' nur einen Treffer !
oResultSet2.Next()
[/code]
c) Erzeugen Dokument aus Vorlage und Füllen Textmarken
[code]Dim DateiEigenschaft(0) As New com.sun.star.beans.PropertyValue
' aus einer Vorlage erstellen
DateiEigenschaft(0).Name = "AsTemplate"
DateiEigenschaft(0).Value = True
' Speicherort und Name der Vorlage
sURL = "file:///zentrale/firma/vorlagen/firma/Rechnung2005.stw"
sURL = "file:///zentrale/firma/vorlagen/firma/Rechnung2006.ott"
' Dokument erstellen
oDok = StarDesktop.loadComponentFromURL( sURL , "_blank", 0, DateiEigenschaft() )
' in der Vorlage sind die folgenden Textmarken (Bookmarks) gesetzt, die nun
' mit dem Inhalten des Abfrageergebnisses gefüllt werden
' wiederholen:
' Textmarke holen
oBM = oDok.getBookmarks().getByName("Anschrift1")
oBM.getAnchor().String = Trim( oResultSet2.getString(1) ) [/code]
Hilft das?