Hallo,
ich habe ein Pivot Chart. Das Problem ist, wenn ich eine Datenquelle per vba zuweise, verliert das Chart alle Einstellungen, die ich gemacht habe.
Kann man und wenn ja, wie, das Pivot Chart per VBA verwalten. Das heißt, ich weiße Datenquelle zu und stelle alles, wie es im Moment ist, über vba ein. Habe bisher nichts dazu gefunden bzw. probiert und nix hat geklappt.
Wenn das nicht geht, müsste ich ca. 90 Charts erstellen, die ich alle per invisible Wert ein- bzw. ausblende. Das wäre nicht sehr komfortabel.
Oder Alternativvorschläge?
Hoffe das geht per vba :D
Gruß
Hallo,
??
warum willst Du die Datenquelle (welche Eigenschaft meinst Du damit?) verändern?
Was ist das "Pivot Chart" bei Dir? Ein Form in Pivot-Ansicht oder ein Diagramm auf Basis einer Kreuztabelle?
Wenn sich die Datenherkunft eines Diagramms strukturell ändert (vom vorherigen unterscheidet) , klappt die Chart-Darstellung naturgemäß nicht mehr.
Also gut, dann fang ich mal an, mich zu erklären. Vielleicht hab ich ja nen falschen Ansatz.
Arbeite mit Access 2010. DB ist auf einem SQL Server 2012. Es geht darum Werte über die Zeit aufzutragen, einfach ein Liniendiagramm.
So, die Werte ändern sich aber je nach Auswahl. Sagen wir, ich habe x Arbeitsplätze. Die Auswertung ist jeweils gleich aufgebaut. Ich schalte dann per Auswahl den Arbeitsplatz um, d.h. der Server bzw. die Abfrage, muss mir ja andere Werte liefern. Würde einfach eine Variable an Prozedur an SQL Server mit übergeben, die den Arbeitsplatz repräsentiert, also die ID. Gespeicherte Prozedur liefert mir dann die Ergebnisse. Zuweisen würde ich das dann folgendermaßen:
ME.Form.RecordSource = "EXEC [dbo].[sp_Datenquelle] ArbeitsplatzID
Wenn ich das aber mache, hab ich immer ein leeres Chart. Irgendwie haut das nicht hin. Wenn das prinzipiell gehen soll, dann hab ich wohl nen Fehler drin und muss suchen. Wenn nicht, bin ich für jeden Lösungvorschlag dankbar. Denn bei ca. 30 Arbeitsplätzen und je Arbeitsplatz hab ich 3 unterschiedliche Charts... das würden dann 90 einzelne Charts erstellen müssen.
Danke und Grüße
Hallo,
weise mal die Abfrage/Prozedur der Eigenschaft "Rowsource" des Diagramms zu.
Das ist ja das nächste Problem. Ich habe irgendwie gar kein Objekt, bei dem ich RowSource verwenden könnten. Normalerweise mach ich ja immer z.B. Me.Form.Kombinationsfeld.RowSource = Datenquelle. Aber für das Pivot Chart, für das Formular oder was auch immer es ist, kann ich keinen Namen wählen und ich kann es im vba Editor auch nicht auswählen.
Ich habe mal ein Bild in der Entwurfsansicht angehängt.
Zitat von: MrMojoRisin am Juni 19, 2017, 13:47:21
Gespeicherte Prozedur liefert mir dann die Ergebnisse. Zuweisen würde ich das dann folgendermaßen:
ME.Form.RecordSource = "EXEC [dbo].[sp_Datenquelle] ArbeitsplatzID
Wie kommst du zu dieser Vorgehensweise?
Seit wann kann die Jet mit SP umgehen?
Was ich versuchen würde:
Ändere nichts am Recordsource.
Öffne per VBA ein Recordset.
Entweder ein DAO.Querydef mit der Abfrage erstellen, oder gleich mit ADO - dann kannst du auch die SP verwenden.
Weise dem Form das Recordset direkt zu.
LG Markus
Eine Passthrough-Abfrage mit entsprechend eingestellter Connect-Eigenschaft sollte funktionieren. Aber den Parameter musst Du vorher selbst im SQL-Text gegen den Zielwert austauschen.
Danke euch zwei. Kann ich mir mal anschauen. Problem ist, dass ich das noch nie so gebraucht habe. Wie gesagt, arbeite mit SQL Server und Access adp.
Da geht es schon los, dass bei adp oben das Diagramm Steuerelement fehlt. Ich habe die Möglichkeit ein unter Erstellen-Formulare-Weitere Formulare ein Pivot-Chart auszuwählen. Damit hab ich es auch gemacht. Dann hab ich gestern noch rausgefunden, dass ich ein Ungebundenes Objektfeld einfügen kann und hier dann ein Microsoft Graph Element. Da komm ich aber auch nicht weiter, da ich da irgendwie keine Datenquelle wählen kann.
Ich verzweifel echt langsam.
Wo hast du gesagt, dass du mit ADP arbeitest?
ADP kann ja grundsätzlich mit SP umgehen, da wird intern ja auch ADO verwendet. Habe da aber keine Erfahrung.
LG Markus
Öhm, ja gut, sry, dass mit dem "wie gesagt" war nur so dahin geschrieben. :-*
Hatte ich anfangs vergessen zu erwähnen. Sry.
Mein Tipp funktioniert somit auch nicht, weil es keine Passthrough-Abfragen in einer ADP gibt.
Grundsätzlich sollte es aber trotzdem so funktionieren wie ich es gepostet habe.
Wie verwendest du eine SP bei einem Formular?
Wie übergibst du die Parameter?
Gibt es da ein eigene Methoden in ADP?
Also generell alles recht unkompliziert.
Wenn ich einem Formular ne neue sp oder die Parameter ändern will, dann sage ich einfach:
Me.Form.RecordSource = "EXEC [dbo].[sp]" & Parameter
Oder wenn ich zum Beispiel einem Steuerelement was zuweisen will:
Me.Kombinationsfeld.RowSource = "EXEC....
Ich werde mal mit Recordset was probieren. Da kenne ich mich nicht so aus, muss ich mich mal einlesen. Brauche das bei .adp eigentlich nie. Hoffe jetzt schreien nicht 10 Leute auf *Duck*. Aber habe das nie richtig gelernt, kam an einen Arbeitsplatz, wo halt SQL/ADP verwendet wird. Das meiste musst ich mir selbst beibringen.
@MrMojoRisin
Das Form macht ja nichts anderes. Es erstellt ein Recordset aufgrund der Anweisung im Recordsource.
Also wird es vermutlich nichts bringen, wenn du das RS selbst per Code zuweist.
Testen schadet aber nie. Dann weiß man es für die Zukunft.
In einer normalen Access Anwendung, gibt es dazu aber keine Alternative, da die Anweisung für die SP nicht verarbeitet werden kann.
Zitat von: MrMojoRisin am Juni 19, 2017, 13:15:50ich habe ein Pivot Chart. Das Problem ist, wenn ich eine Datenquelle per vba zuweise, verliert das Chart alle Einstellungen, die ich gemacht habe.
Ich kann das Problem nachvollziehen. Es geht um ein Form in der PivotChart-Ansicht.
Alternativ InputParameter zu verwenden, funktioniert leider genausowenig.
Man kann über die
ChartSpace- bzw.
PivotTable-Property des Forms auf dieses Objekt zugreifen.
Es handelt sich dabei um ein
Microsoft Office ChartSpace bzw. ...
PivotTable-Object aus der Bibliothek
Microsoft Office Web Components. Ein Verweis auf die OWC11.DLL bringt die entsprechenden Objekte in den Object Browser.
Ob man darüber die gewünschte Steuerung per VBA erreichen kann, habe ich noch nicht probiert.
Also danke, aber die owc11.dll bringt mich auch nicht weiter. Da bekomm ich auch leider nicht mehr Zugriff.
So wie es aussieht, muss ich doch ca. 60 Charts entwerfen. Das wird ein Spaß bei Änderungen...
20 Arbeitsstationen x 3 Charts/Arbeitsstation :(
Zitat von: MrMojoRisin am Juni 21, 2017, 13:53:10
Also danke, aber die owc11.dll bringt mich auch nicht weiter. Da bekomm ich auch leider nicht mehr Zugriff.
Auch wenn ich Moment keine Zeit habe das anzuschauen, würde mich schon interessieren, was "bekomme keinen Zugriff" genau bedeuten soll.
Zitat von: PhilS am Juni 21, 2017, 23:04:55
Zitat von: MrMojoRisin am Juni 21, 2017, 13:53:10
Also danke, aber die owc11.dll bringt mich auch nicht weiter. Da bekomm ich auch leider nicht mehr Zugriff.
Auch wenn ich Moment keine Zeit habe das anzuschauen, würde mich schon interessieren, was "bekomme keinen Zugriff" genau bedeuten soll.
Damit meinte ich, dass ich, wenn ich einen Punkt eingebe, dass da keine Vorschläge kommen. Heißt, entweder muss ich mich einlesen oder es gibt einfach dadurch keine weiteren Optionen.
Aber im Moment komme ich leider nicht dazu. Ich mache es jetzt wie schon mal gesagt, ich erstelle für jede Station drei eigenständige Charts und schließe die nicht benötigten immer. Wie gesagt, im Moment habe ich leider keine Zeit mehr zum probieren.
Aber falls ich irgendwann mal eine zufriedenstellende Lösung finde, werde ich sie hier mitteilen für nachfolgende Leser. :)
Zitat von: PhilS am Juni 21, 2017, 11:57:34Alternativ InputParameter zu verwenden, funktioniert leider genausowenig.
Hier war ich beim Testen nicht sorgfältig.
InputParameter zu verwenden, funktioniert nicht, wenn man direkt hardcodierte Werte für die Parameter in die
InputParameters-Eigenschaft schreibt und diese dann per VBA ändert. - Wenn man aber eine Referenz auf ein Form-Steuerelement oder eine VBA-Funktion dort hinterlegt, die zur Laufzeit die aktuellen Parameterwerte liefern, dann funktioniert das durchaus.
Dies habe ich ausführlich in dem Text
Datensatzherkunft eines Access 2010 PivotChart-Forms ändern (http://codekabinett.com/rdumps.php?Lang=1&targetDoc=access-form-pivotchart-datensatzherkunft) beschrieben.
Ebenso ist dort beschrieben, wie man in
besonders schweren Fällen über die
ChartSpace-Property des Forms die PivotChart-Ansicht per VBA steuern kann.