Nicht bearbeitbare transformierte Zeilenquelle für MS Access Chart setzt die Sortierreihenfolge weiterhin zurück

Wenn Sie ein Balkendiagrammobjekt in ein Microsoft Access-Formular einfügen, werden die Daten in einer Sortierreihenfolge angezeigt, die ich beim ersten Entwurf der zugrunde liegenden Abfrage nicht festgelegt habe.

geben Sie hier die Bildbeschreibung ein

Ich kann sehen, dass die unerwünschte Sortierreihenfolge in einer festen, nicht bearbeitbaren Eigenschaft Transformed Row Source angezeigt wird, die die Eigenschaft Row Source überschreibt.

`Row Source`: SELECT * FROM SumOfUtilizationByPersonnelAndDate WHERE [Month] >= 7 AND [Month] <= 7 AND [Year] >= 2019 AND [Year] <= 2019 ORDER BY [SumOfUtilization] DESC , [Created By] DESC; 

`Transformed Row Source`: SELECT [Created By], Sum([SumOfUtilization]) AS [SumOfSumOfUtilization] FROM (SELECT * FROM SumOfUtilizationByPersonnelAndDate WHERE [Month] >= 7 AND [Month] <= 7 AND [Year] >= 2019 AND [Year] <= 2019 ORDER BY [SumOfUtilization] DESC , [Created By] DESC) GROUP BY [Created By] ORDER BY [Created By]

Sobald ich meine vorbereitete, richtig sortierte Abfrage in der Eigenschaft Row Source auswähle, erhält die Eigenschaft Transformed Row Source sofort geschrieben-und die ORDER BY Klausel darin scheint einen eigenen Verstand zu haben, Spalten auszuwählen und Sequenzierung zu sortieren, die ich nicht wollte.

Außerdem ist die Eigenschaft Transformed Row Source völlig uneditierbar! Der Versuch, das SQL der Eigenschaft Transformed Row Source manuell so zu bearbeiten, wie ich es möchte, verursacht die Fehlermeldung

"Sie können diesem Objekt keinen Wert zuweisen.

Das Objekt kann ein Steuerelement in einem schreibgeschützten Formular sein.

Das Objekt befindet sich möglicherweise in einem Formular, das in der Entwurfsansicht geöffnet ist.

Die der Wert kann für dieses Feld zu groß sein."

Was kann ich tun, damit dieses Balkendiagramm die Daten nach Belieben sortiert? Die Abfrage zeigt die Daten im Ansichtsmodus in der richtigen Reihenfolge an. Warum kann das Balkendiagramm nicht einfach dasselbe tun?

Ich habe Bar Clustered, Bar Stacked und Bar Stacked 100% chart type ausprobiert und alle haben das gleiche Problem. Beachten Sie, dass ich dies brauche, um ein Balkendiagramm zu bleiben.

UPDATE: Keine Kommentare unten bis Sept. 17th, 2019, haben geholfen, andere als aktualisieren Sie mich mit dem Verständnis, dass Microsoft Access kürzlich moderne Diagramme eingeführt hat, die sich von klassischen Diagrammen unterscheiden. Was ich verwende, ist ein modernes Diagramm. Die Kommentare bis September 17th haben mich nur dazu gebracht, dies als klassisches Diagramm ohne bessere Ergebnisse, sondern eher mit mehr Nachteilen neu zu erstellen.

UPDATE 2 (9/21/2019): Jetzt habe ich versucht, meine ORDER BY Klausel in meiner Zeilenquellenabfrage zu entfernen, aber die Sortierung wird immer noch falsch gesetzt. Ich habe jedoch durch diese Übung gelernt, dass die Achse (Kategorie) Datenquelleneigenschaft unter Diagrammeinstellungen definiert/wählt diese REIHENFOLGE NACH Feldliste aus-die sowohl Sortierreihenfolge als auch Kategoriedatenauswahl im Diagramm heiratet-eine sehr unglückliche Ehe in der Tat, weil ich das NICHT will! Welche Felder auch immer ich nach Achsenkategorie überprüfe, sie werden in der transformierten Zeilenquellenreihenfolge NACH Klausel angezeigt UND AUCH als Teil meiner Kategorieachse umgewandelt! Nicht gut! Ich möchte, dass das von Feld erstellte Feld NUR die Achse (Kategorie) und die sortierreihenfolge (ORDER BY) Klausel, um auf etwas völlig Separates gesetzt zu werden, was SumOfUtilization ist! Dies scheint ein Microsoft-Fehler zu sein, für den ich noch keine Problemumgehung gefunden habe! Ich habe vorerst Feedback über das Microsoft Access-Menü an Microsoft gesendet.

geben Sie hier die Bildbeschreibung ein

Author: Community, 2019-09-04

4 answers

Sie sortieren / ordnen nach einzelnen "SumOfUtilization" , aber präsentieren / Auswählen von " Sum ([SumOfUtilization])".

Warum fügen Sie nicht einfach eine GROUP BY-Klausel (zum Feld [Created By]) in Ihrer ursprünglichen Abfrage hinzu und aggregieren Sie mit "Sum([SumOfUtilization])", damit die ORDER BY mit der Achse übereinstimmt?

SELECT [Created By], Sum([SumOfUtilization]) AS [SumOfSumOfUtilization] FROM SumOfUtilizationByPersonnelAndDate WHERE [Month] >= 7 AND [Month] <= 7 AND [Year] >= 2019 AND [Year] <= 2019 GROUP BY [Created By] ORDER BY Sum([SumOfUtilization]) DESC , [Created By] DESC;

Sie können NACH einem Aggregatwert ordnen, indem Sie ein Aggregat für dieses Feld neu angeben ("ORDER BY Sum ([SumOfUtilization])") oder indem Sie es durch seine Select Ordinal in die ORDER BY-Klausel ("ORDER BY 2").

Oder Sie können Ihre ursprüngliche Abfrage als Unterabfrage abfragen, indem Sie dieselbe GRUPPE NACH Aggregation wie oben ausführen.

Bei Bedarf gibt es verschiedene Möglichkeiten, die Achsanzeige auszutauschen, sobald die Daten korrekt organisiert sind. Insbesondere können Sie die Diagrammanzeigeeinstellungen anpassen, die Haupt - /Nebenachse austauschen oder die Reihenfolge der Auswahl aus der Abfrage ändern.

DETAILS

Wie ich mich erinnere, ÜBERSCHREIBT eine eingebettete ORDER BY-Klausel alle sortierung auf Objektebene. Sobald die ORDER BY außerhalb von SQL ist, können die Präsentationsobjekte ihre eigene Sortierreihenfolge anwenden.

Um dies zu überschreiben, verwenden Sie die ursprüngliche Abfrage als Datenquelle für eine Unterabfrage, die Sie als echte Datenquelle verwenden. Dies ist, was das Chart-Objekt Ihnen hier antut.

Diagramm API Referenz: "https://docs.microsoft.com/en-us/office/vba/api/access.chart.transformedrowsource "

Diese Zeichenfolge [transformierte Zeilenquelle] wird generiert aus einer Kombination der RowSource Eigenschaft und ausgewählten Achsenfelder.

Wenn Sie sich Ihre Zeilenquellenauswahl ansehen, sieht es so aus, als ob die Reihenfolge, in der Sie auswählen, die Standardeinstellung des Diagramms als AxisOrder ist. Sie können Ihre Werte explizit auswählen, um das Diagramm manuell nach Ihren Wünschen zu sequenzieren.

Wie in, WÄHLEN SIE [SumOfUtilization], [Created By] ...

`Row Source`: SELECT [SumOfUtilization], [Created By], * FROM SumOfUtilizationByPersonnelAndDate WHERE [Month] >= 7 AND [Month] <= 7 AND [Year] >= 2019 AND [Year] <= 2019 ORDER BY [SumOfUtilization] DESC , [Created By] DESC;

Bearbeiten: Aufräumen.

 1
Author: AenAllAin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-09-25 20:13:04

Übrigens, weil die Zeit ohne eine zufriedenstellende Lösung in Access abgelaufen war, erstellte ich am Ende eine Excel-Tabelle, die mit der Schaltfläche Get Data von Excel mit meiner Zugriffsabfrage verknüpft war, und generierte daraus eine PivotTable innerhalb Excel und Erstellen eines Diagramms basierend auf dieser PivotTable. Excel charting-Fähigkeiten sind weit mehr ausgezeichnete, und in der Lage, als das, was scheint derzeit verfügbar in Access und ich habe meine Art, um zu kommen, wie ich wollte. Nicht die Lösung, die ich gehofft hatte denn seitdem zwinge ich meinen Kunden, zwei separate Office-Produkte zu verwenden, aber es funktioniert.

PS: Danke an alle, die versucht haben zu helfen. Ich verlor 50 Punkte an Reputation, die ich gerne jemandem als Kopfgeld gegeben hätte, wenn er mir helfen könnte, aber die Zeit lief ab. superuser.com. Nichts, was ich tun könnte, um diese Punkte jetzt jemandem zuzuweisen, und ich bekomme sie auch nicht zurück.

 0
Author: ShieldOfSalvation,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-10-09 05:24:33

Ich habe in meinen Diagrammeigenschaften festgestellt, dass es bei der Auswahl meiner Achse Eigenschaften gab, die ich ändern konnte (Achten Sie darauf, dass kleine Abwärtspfeile rechts neben den ausgewählten Optionen angezeigt werden. Es ist leicht zu übersehen) und dann, als ich zu dieser transformierenden Sache zurückkehrte (mit der ich stundenlang frustriert war), konnte ich sehen, dass sie sich jetzt aktualisiert hatte, um die ganze Zeit zu tun, was ich wollte. Es transformierte sich immer noch, aber jetzt auf eine Weise, die nachahmte, was meine zugrunde liegende Abfrage tat, also keinen Unterschied in der Ende.

 0
Author: Rob Welsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-05-12 12:16:59

Ich habe das Diagramm nach Belieben sortiert, indem ich das Feld in die erste Spalte der zugrunde liegenden Abfrage gezogen habe.

 -2
Author: Tomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-11-18 15:04:18