Eine Pivot-Tabelle habe ich in Calc auf Grund einer “in Libreoffice angemeldeten Datenquelle” erstellt. Jetzt finde ich aber nicht mehr was diese Datenquelle war. “Layout bearbeiten” aus dem Kontext-Menü gibt zwar “Quelle und Zielbereich” doch die Quelle ist leer (siehe Bild). Ist das ein Bug? Oder stimmt etwas bei mir nicht? Versionen: LibreOffice 6.0.7.3 unter Ubuntu 18.04.03.
Aus der Hilfe (F1):
Datenquellenansicht
Wählen Sie Ansicht>Datenquellen
oder drücken Sie Strg+Umsch+F4
, um die Datenquellenansicht in einem Text- oder Tabellendokument zu öffnen.
Links sehen Sie den Datenquellen-Explorer. Wenn Sie dort eine Tabelle oder Abfrage auswählen, sehen Sie rechts den Inhalt dieser Tabelle oder Abfrage. Am oberen Rand ist die Datenbankleiste.
Ich hoffe es hilft dir weiter.
Wenn meine Antwort dein Problem gelöst hat, klicke bitte auf das Häkchen im Kreis links neben der Antwort und auf den Pfeil ^ fuer eine positive Abstimmung. Damit wird der Community angezeigt, dass die Frage richtig beantwortet wurde.
Bei mir Windows 10 Home; Version 1903; 64-Bit | LibreOffice, Version: 6.3.3.2 (x64).
Danke, dieser Hinweis hilft mir weiter. Diese Datenquellenansicht habe ich noch nicht gekannt. Meine Frage ist aber damit noch nicht beantwortet: Aktualisieren der Pivot-Tabelle funktioniert. Calc weiss also woher die Daten stammen, gibt es aber nicht bekannt. Das bedeutet, lieber auf solche Pivot-Tabellen verzichten … und vielleicht finde ich mit der Datenquellenansicht eine Ersatz-Lösung.
Das gibt eine gute Ersatz-Lösung. Sie genügt für mich. So ist meine Frage ist beantwortet.
Vieles geht besser mit dieser Datenquellenansicht: Fehlermeldungen wie “Es konnte keine Verbindung hergestellt werden” und “Die Schnittstelle XQueriesSupplier ist nicht verfügbar” kommen nicht mehr, Datenformat kommt mit, Formatierung wird beibehalten.
ich habe genau das gleiche Problem. Der Screenshot könnte bei mir genauso aussehen. Die Möglichkeit, Datenquellen generell anzuzeigen, kenne ich schon. Ich habe aber um die 50 verschiedene Abfragen in meiner .odb-Datei gespeichert. Darum wäre ich schon dankbar, wenn mir die Quelle angezeigt würde.
Ich habe die Dateien (ods und odb) ursprünglich mit OpenOffice angelegt. Dort werden die Quellen angezeigt. Kann es sein, dass ein “Übergabeproblem” zu LibreOffice ist? Zur Info, möglicherweise irrelevant: die odb-Datei verbindet sich mit einer MySQL-Datenbank.
Ich nehme eher an, dass das ein Bug ist. Der benannte Bereich wäre ja ein Bereich innerhalb der Tabelle von Calc. Die Auswahl wäre auch nur ein Bereich innerhalb von Calc. Du könntest also lediglich dann auf die Datenbasis kommen, wenn Du in einer Tabelle von Calc die Tabelle von Base reinziehst, damit die dort dargestellt wird. Bei solchen Bereichen wird dann auch die Quelle angezeigt.
Wo ist denn in OpenOffice die Tabelle sichtbar?
Ich habe das gerade einmal mit AOO 4.1.8 getestet. Da ist die Tabelle, aus der die Daten kommen, genauso wenig zu erkennen. Das Ganze müsste also als Feature Request im Bugtracker gemeldet werden.
137420 – Pivot Table named range does not list database ranges (zu importierten Daten - zu direkt geladenen Daten aus einer Datenbank existiert anscheinend bisher kein Bug)
Ich bezog mich auf eine angemeldete Datenquelle odb, welche sämtliche Informationen aus einer externen MySQL-Datenbank bezieht. Die Abfragen und die Pivot-Tabelle funktionieren, nur die Datenquelle ist in den Eigenschaften nicht sichtbar.
Bei OO gab es im Fenster “Bearbeitungslayout” zur Pivot-Tabelle das Feld “Auswahl aus”. Da konnte ich das dann sehen. Das entspricht in LO dem Fenster “Eigenschaften”. In LO ist das dann mit “Quelle/Zielbereich” optisch schöner gelöst. Jetzt müsste nur noch die Info da stehen. Mehr kann ich mit meinem Laienwissen nicht sagen, wenngleich der Code von Villeroy schon schön ausschaut. Ich weiß nicht, ob es eine Diskrepanz zwischen Schönheit und Funktion gibt
@gmuellritter : Dass das mit einer angemeldeten Datenquelle läuft war mir schon klar. Sonst hätte ich als Datenbänkler ja gar nicht zu diesem Thread geschrieben.
Der Haken ist doch, dass die Quelle nicht mehr zu ermitteln ist. Bei einem Import geht das, aber auch der wird etwas Stiefmütterlich behandelt (siehe Bug).
Das, was Du zu OpenOffice schreibst, kann ich hier mit AOO nicht nachvollziehen. Das Feld “Auswahl aus” ist dort genauso leer wie bei LibreOffice “Auswahl”. Die Infos beziehen sich auf eine Calc-Tabelle in dem aktuellen Calc-Dokument, nicht auf eine Datenbank mit Tabelle. Kann ich ja einfach mit der Standarddatenbank “Bibliograpy” überprüfen.
Es stimmt! Ich habe seit Jahren nicht mehr mit OO gearbeitet. Nun habe ich es rekonstruiert. In OO kann ich das nicht (mehr?!?) sehen. Das Feld ist ausgegraut. Ich war mir sehr sicher, dass ich das früher konnte. Möglicherweise bilde ich mir das mittlerweile nur noch ein, weil es ja so sein sollte. Sorry.
Ich habe das einmal als Bug gemeldet: 166961 – PIVOTTABLE: No possibility to see Data Source of a registered Database in an existing Pivot Table
Es braucht jetzt nur noch eine Bestätigung, damit das auf “New” gesetzt werden kann.
Ich vermute, dass Du in OpenOffice das hier gesehen hast:
Ganz unten wird die Quelle eines Datenbankbereiches angezeigt, also das, was Du bekommst, wenn Du eine Abfrage aus dem Datenquellenfenster auf eine Calc-Zelle ziehst.
Wenn Du mein Makro laufen lässt, während der Zellcursor in der Pivottabelle ist, dann siehst Du
also die Datenquelle “PowerFilter”, Element “qAll”, welches eine “interpretierte Abfrage” ist (d.h. Gegenteil von “direkter Modus”).
Sub Show_PivotSource()
'calls: getPilotAtActiveCell,
REM report database source of pivot table having the cell cursor
Dim oSel, sh, pv, pvc%, i%, p, oImportDescriptor()
Dim sDBName$, sSource$, iType%, bNative As Boolean,sDrvURL$
Dim sMsg$, sType$
oSel = ThisComponent.getCurrentSelection()
sh = oSel.getSpreadSheet()
pv = getPilotAtActiveCell()
REM com.sun.star.sheet.DatabaseImportDescriptor
oImportDescriptor= pv.ImportDescriptor()
for each p in oImportDescriptor()
if p.Name = "DatabaseName" then
sDBName = p.Value
elseif p.Name = "SourceType" then
iType = p.Value
elseif p.Name = "IsNative" then
bNative = p.Value
elseif p.Name = "SourceObject" then
sSource = p.Value
elseif p.Name = "ConnectionResource" then
sDrvURL = p.Value
endif
next
if iType = com.sun.star.sheet.DataImportMode.TABLE then
sType = "Table or View"
elseif iType = com.sun.star.sheet.DataImportMode.SQL then
if bNative then
sType = "Native SELECT"
else
sType = "Parsed SELECT"
endif
elseif iType = com.sun.star.sheet.DataImportMode.QUERY then
sType = "Query"
elseif iType = com.sun.star.sheet.DataImportMode.NONE then
sType = "NO_IMPORT"
end if
sMsg = "DB Name = "& sDBName _
& Chr(10)& "Source Type = "& sType _
& Chr(10) & "Source: " & sSource _
& Chr(10) & "Connection Ressource = "& sDrvURL
Msgbox sMsg, "Database Source of Pivot """& pv.getName()
End Sub
Function getPilotAtActiveCell()
'calls: getActiveCell
oCtrl = ThisComponent.getCurrentController()
oCell = getActiveCell(oCtrl)
oDPE = oCell.Spreadsheet.DataPilotTables.createEnumeration()
do while oDPE.hasMoreElements()
oDP = oDPE.nextElement()
oAddr = oDP.getOutputRange()
n = oCell.queryIntersection(oAddr).getCount()
if n > 0 then
getPilotAtActiveCell = oDP
else
getPilotAtActiveCell = Null
endif
loop
End Function
Function getActiveCell(Optional oView )
Dim as1(), lSheet&,lCol&,lRow$, sDum as String,bErr as Boolean
If isMissing(oView) then oView = ThisComponent.getCurrentController()
as1() = Split(oView.ViewData, ";")
lSheet = CLng(as1(1))
sDum = as1(lSheet +3)
as1() = Split(sDum, "/")
on error goto errSlash
lCol = CLng(as1(0))
lRow = CLng(as1(1))
on error goto 0
getActiveCell = oView.Model.getSheets.getByIndex(lSheet).getcellByPosition(lCol,lRow)
exit Function
errSlash:
if NOT(bErr) then
bErr = True
as1() = Split(sDum, "+")
resume
endif
End Function