Ich habe eine Datenbank, in der gibt es mehrere Tabellen. Weiter gibt es drei Abfragen, die als Filter dienen sollen.
Ich habe ein Formular erstellt, in der ich über Textfelder filtern kann, was ich angezeigt bekomme. Desweiteren sind Textfeld angegeben, die meine Auswahl aus der Tabelle nochmal darstellen.
Diese Filterung und Auswahl findet drei mal statt. Jetzt möchte ich die Daten, die in der aktuellen Auswahl stehen nach CALC exportieren.
Im Forum habe ich dazu dieses Thema dazu gefunden: viewtopic.php?f=18&t=45526
Hiereinmal eine Kopie des Quellcodes:
Code: Alles auswählen
Sub ExportData
REM Speicherpfad
sPath = "C:"
REM Dateiname
sTitle = "Datenexport vom " & Date & ".ods"
REM Name der Abfrage, Tabelle oder SQL-Statement
'sQueryName = "meineTabelle"
'sQueryName = "meineAbfrage"
sQueryName = "SELECT * FROM ""meineTabelle"""
sURL = ConvertToURL(sPath & "/" & sTitle)
If FileExists(sURL) Then
i = MsgBox(">" & sTitle & "<" & Chr(13) & "Datei existiert bereits." & _
Chr(13) & Chr(13) & "Überschreiben?",52,"Hinweis")
If i <> 6 Then
Exit Sub
End If
End If
oCon = thisComponent.Parent.CurrentController.ActiveConnection
If oCon.Tables.hasByName(sQueryName) Then
oPrepStatement = oCon.prepareCommand(sQueryName,0)
ElseIf oCon.Queries.hasByName(sQueryName) Then
oPrepStatement = oCon.prepareCommand(sQueryName,1)
Else
oPrepStatement = oCon.prepareCommand(sQueryName,2)
End If
oResult = oPrepStatement.executeQuery
aColumns = oPrepStatement.Columns.ElementNames
oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, Array())
oSheet = oDoc.Sheets(0)
nColumnCount = UBound(aColumns)
Dim aLine(nColumnCount)
Dim aData(0)
aData(0) = aColumns
nUpperBoundary = 0
Do While oResult.Next
nUpperBoundary = UBound(aData)+1
ReDim Preserve aData(nUpperBoundary)
ReDim aLine(nColumnCount)
For i = 0 To nColumnCount
aLine(i) = oResult.getString(i+1)
Next i
aData(nUpperBoundary) = aLine
Loop
oRange = oSheet.getCellRangeByPosition(0,0,nColumnCount,nUpperBoundary)
oRange.setDataArray(aData)
Dim args(0) as New com.sun.star.beans.PropertyValue
args(0).Name = "Overwrite"
args(0).Value = True
oDoc.StoreAsURL(sURL,args)
oDoc.close(False)
End Sub
Wenn ich nun mehrere Abfragen und Auswahlfelder habe, wie muss ich die in den Code einbinden, damit sie übertragen werden? Muss ich den zweiten Teil mehrmals durchführen, da ich ja auch auf mehrere Tabellen/Abfragen zugreiffe?
In die zweite vollständige If-Abfrage muss ich meine Tabellen- und Abfragenamen eingeben, richtig?
MfG