Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Pivot Chart per VBA verwalten

Begonnen von MrMojoRisin, Juni 19, 2017, 13:15:50

⏪ vorheriges - nächstes ⏩

MrMojoRisin

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ß
  •  

DF6GL

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.

MrMojoRisin

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
  •  

DF6GL

Hallo,


weise mal die Abfrage/Prozedur der Eigenschaft "Rowsource" des Diagramms zu.

MrMojoRisin

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.
  •  

markusxy

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
  •  

Lachtaube

Eine Passthrough-Abfrage mit entsprechend eingestellter Connect-Eigenschaft sollte funktionieren. Aber den Parameter musst Du vorher selbst im SQL-Text gegen den Zielwert austauschen.
Grüße von der (⌒▽⌒)
  •  

MrMojoRisin

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.
  •  

markusxy

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
  •  

MrMojoRisin

Öhm, ja gut, sry, dass mit dem "wie gesagt" war nur so dahin geschrieben.  :-*

Hatte ich anfangs vergessen zu erwähnen. Sry.
  •  

Lachtaube

Mein Tipp funktioniert somit auch nicht, weil es keine Passthrough-Abfragen in einer ADP gibt.
Grüße von der (⌒▽⌒)
  •  

markusxy

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?
  •  

MrMojoRisin

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.
  •  

markusxy

@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.
  •  

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •