Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: PeterFormatissimo am November 18, 2011, 14:13:29

Titel: Diagramm im Bericht
Beitrag von: PeterFormatissimo am November 18, 2011, 14:13:29
Hallo!
Mir geht es ähnlich wie vielen anderen Kollegen, wenn man dem Internet glauben darf. Ich möchte ein Balkendiagramm abhängig vom Wert dynamisch formatieren.

Dazu wollte ich eine Prozedur schreiben - leider komme ich noch nicht zur If-Kombination, da die Anzeige der Farbe via VBA noch nicht funktioniert.

Der Code lautet:

Option Compare Database
Option Explicit

Private Sub Report_Activate()
 Dim DiagObj As Object
  Set DiagObj = Me!Diagramm1
  DiagObj(Me!Diagramm1).Activate
   Me!Diagramm1.SeriesCollection(1).InteriorColor = RGB(255, 0, 0)
End Sub

Beim Ausführen erhalte ich eine Fehlermeldung: Laufzeitfehler 438 - Objekt unterstützt diese Eigenschaft oder Methode nicht.

Da in den Forenbeiträgen dieser Code jedoch als zielführend beschrieben wird wollte ich um Rat fragen - vielleicht habt Ihr eine Ahnung was ich falsch gemacht habe.

Vielen Dank,
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: database am November 18, 2011, 20:52:16
Hallo,

nur mal soi in den Wind gereimt:

----> Dim DiagObj As Object

Du deklarierst hiermit ein Object und danach ...

Set DiagObj = Me!Diagramm1
DiagObj(Me!Diagramm1).Activate

----> warum nicht    DiagObj.Activate   
Achte darauf ob nach der Eingabe des Punkts 'Activate' im Kontext auswählbar ist!

----> Me!Diagramm1.SeriesCollection(1).InteriorColor = RGB(255, 0, 0)

analog dazu ...    DiagObj.SeriesCollection(1).InteriorColor = RGB(255, 0, 0)

HTH


Titel: Re: Diagramm im Bericht
Beitrag von: PeterFormatissimo am November 22, 2011, 12:27:42
Hallo HTH,
vielen Dank für den Tipp.

Werde ich morgen gleich ausprobieren - war leider die letzten Tage nicht verfügbar. Melde mich dann mit dem Ergebnis!

lg
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: PeterFormatissimo am November 23, 2011, 10:52:51
Hallo,
leider tritt der Laufzeitfehler 438 wieder auf.

Das Kontextmenü öffnet sich ebenso nicht - bedeutet das, dass die Variable nicht deklariert wurde? Ist die Deklarierung als "Object" falsch?

Freue mich über Hilfe.

lg
Robert
Titel: Re: Diagramm im Bericht
Beitrag von: database am November 23, 2011, 11:44:56
Hallo,

versuch mal so:

Dim ObjDiag As Chart
Set ObjDiag = Me.Diagramm1.Object

siehe auch bei donkarl.com  FAQ 6.22
Titel: Re: Diagramm im Bericht
Beitrag von: PeterFormatissimo am November 23, 2011, 14:50:45
Hallo!
DonKarl´s Weg mit dem Excel-Rekorder finde ich gut.

Leider funktioniert die Deklaration des Objekts nicht.

Code:
    Dim ObjDiag As Chart
    Set ObjDiag = Me.Diagramm1.Object

Beim Aufruf folgt die Fehlermeldung: Laufzeitfehler 2771: Das gebundene oder ungebundene Objektfeld, das Sie bearbeiten wollten, enthält kein OLE-Objekt.

Leider komme ich bei der Lösung nicht weiter.

lg
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: PeterFormatissimo am November 23, 2011, 16:27:43
So, durch den Input, welchen ich zufällig via Google gefunden habe, habe ich die Prozedur nun wie folgt verändert...

Private Sub Report_Format()
    Dim DiagObj As Graph.Chart
    Set DiagObj = Me!Diagramm1.Object
   
    DiagObj.SeriesCollection(1).InteriorColor = RGB(0, 255, 0)
End Sub

--> Laufzeitfehler gibt es NICHT mehr!
--> Der Datenbalken ist jedoch unverändert, gemäß Einstellung in Access. Eine Formatierung via VBA hat NICHT stattgefunden.

(Verwendet wird MS Graph, Version 14, d.h. Access 2010. Die Verweise sind gesetzt!)

Gibt es noch Ideen?

lg
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: DF6GL am November 23, 2011, 16:46:10
Hallo,

was soll das

Private Sub Report_Format()
für eine Ereignisprozedur sein?

Benutz mal das Ereignis "Beim Formatieren" des Berichts-Bereiches , in dem sich das Diagramm befindet.
Titel: Re: Diagramm im Bericht
Beitrag von: PeterFormatissimo am November 23, 2011, 17:00:53
Hallo!
Vielen Dankf für den Input. Ist ein Anfängerfehler, oder! Achja, ich bin ja Anfänger...

Ich habe die Prozedur gemäß Deiner Hilfe geändert.

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
   Dim DiagObj As Graph.Chart
   Set DiagObj = Me!Diagramm1.Object
   DiagObj.SeriesCollection(1).InteriorColor = RGB(255, 0, 0)
End Sub

Die Prozedur liefert jedoch noch immer keine Formatierung via VBA.

Hättest Du noch einen Tipp für mich?

lg
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: DF6GL am November 23, 2011, 20:14:24
Hallo,

lad die DB mal hier hoch (Anmeldung erforderlich)
Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am November 24, 2011, 10:19:03
Guten Morgen!
Ich habe beim Upload leider zwei Probleme:
1. Die Datei wird auch mittels Komprimierung nicht kleiner als 600 kb
2. Die Datei ist im Access2010-Format (.accdb). Dieses Format ist lt. Beschreibung der Upload-Funktion nicht möglich.
    Eine Umwandlung kleiner 600 kb konnte ich ebenso nicht realisieren.

Ich habe jetzt einmal einige Screenshots angehängt. Vielleicht ist darauf auch ein etwaiger Fehler ersichtlich...

lg
Peter

[Anhang gelöscht durch Administrator]
Titel: Re: Diagramm im Bericht
Beitrag von: database am November 24, 2011, 13:46:10
Hallo,

probiers mal mit Konvertierung auf *.mdb anschließend komprimieren/reparieren und zippen
Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 01, 2011, 10:50:07
Sorry das ich mich erst jetzt wieder melde. Das Problem ist noch immer akut. Leider war ich unterwegs.

Ich habe dummerweise übersehen, dass zip akzeptiert wird.

Ich schicke daher einmal die Original-2010-Version. Wenn notwendig, könnte dann noch immer ein Konvertierung stattfinden.

Danke für die Hilfe!

lg
Peter

[Anhang gelöscht durch Administrator]
Titel: Re: Diagramm im Bericht
Beitrag von: database am Dezember 04, 2011, 20:23:28
Hallo,

also ich habe dann mal dein Dingsda getestet - ich kann OHNE irgendwas zu verstellen KEIN Problem erkennen!
Getestet mit unterschiedlichen Farbeinstellungen!

Ausser einer Fehlermeldung zu einer fehlenden Referenz ist nichts sonderbar - vielleicht noch die Zusammenstellung deines Tabellenkonstrukts was aber nicht Thema deiner Anfrage ist.

Siehe dazu angehängete Screenshots von den grün gefärbten Diagrammbalken und den von mir geänderten Verweisen (in späterer Folge) ...  ;D

Ich gehe daher davon aus, dass es bei deiner Officeinstallation oder den gesetzten Verweisen schiebt. (ich habe alle nicht benötigten entfernt und AUCH mit unten am Bild sichtbaren getestet)

[Anhang gelöscht durch Administrator]
Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 05, 2011, 09:41:10
Also jetzt verstehe ich die Welt nicht mehr. Bei mir sind die Balken in oranger Farbe. Von einer grünen Färbung keine Spur.

Woran kann das wieder liegen?

Hättest Du dazu vielleicht eine Idee? An den zusätzlichen Verweisen kann es ja nicht liegen?

lg
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: database am Dezember 05, 2011, 09:57:07
Hallo,

wie schon geschrieben habe ... ich habe dein Beispiel geöffnet und den Bericht in der Seitenansicht geöffnet.
KEINE Fehlermeldung ausser dem fehlenden Bezug zu einer Abfrage (daher auch die Bemerkung zum Tabellenkonstrukt), der dadurch entsteht, dass du im Beziehungsfenster offensichtlich eine Beziehung zwischen Tabellen und Abfragen erstellt hast statt die Beziehungen zwischen den zu grundeliegendene Tabellen zu erstellen.

Ich habe danach versucht unterschiedliche RGB-Werte einzustellen, was ebenfalls ohne Probleme möglich war.

Daher kann es nur entweder an bei dir nicht funktionierenden Verweisen oder an der Office-Installation selbst liegen.

Hast du dein Office-Paket selbst installiert oder kommt dieses aus einer Domänenumgebung?
Wurde das Office Paket 'benutzerdefiniert' installiert oder lediglich eine Vollinstallation durchgeführt? - bei der allerdings NICHT alle Features des Office-Pakets auf der Festplatte vorhanden sind!

Hast du dein Verweisfenster schon mal kontrolliert ob da vielleicht 'gebrochene' Verweise bestehen (NICHT VORHANDEN)
Ich habe dieses jedenfalls in deinem Beispiel bei zumindest Einem festgestellt ... siehe Anhang ...



[Anhang gelöscht durch Administrator]
Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 05, 2011, 10:17:09
Hallo!
Das Tabellenkonstrukt ist lediglich ein Beispiel und wird in seiner endgültigen Fassung korrekt aufgebaut. Also daran liegt es nicht, da in meiner Original-Datei die Bezüge korrekt eingestellt funktionieren.

Bei den eingestellten Verweisen habe ich keine Fehlermeldungen erhalten. Aber bei der Office-Installation handelt es sich definitiv um eine Standard-Installation. Ich habe unserem IT-Mann bereits geschrieben und warte auf eine Antwort.

Ich hoffe es klappt dann - ich halte Dich informiert.

lg
Peter
Titel: Re: Diagramm im Bericht
Beitrag von: database am Dezember 05, 2011, 10:56:05
Hi,

ich meinte auch nicht, dass der Fehler deiner Beschreibung aus dem Tabellenkonzept entsteht - mein Einwand war auf die zugeordnete Fehlermeldung beim Aufruf des Berichts bezogen.
Ein Fehler der in einem VBA-Modul entsteht wird sehr selten ein wackeliges Datenmodel zur Ursache haben - in deinem Fall weist es auf nicht intaktes Objektverhalten hin.

Wie angedeutet könnte vielleicht eine Neuinstallation / Reparaturinstallation im Modus 'benutzerdefiniert' mit der Option 'Alles vom Arbeitsplatz starten' Abhilfe schaffen.

HTH

Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 05, 2011, 15:08:05
Also ich habe nun alles auf "von der Festplatte" geändert. Es funktioniert trotzdem nicht.

Ich habe jedoch den VBA-Code auf "Report-Current" geändert. Beim Klicken in den Report ändern sich die Farben. Ein kleiner Teilerfolg sozusagen.

Leider ist nun das nächste Problem aufgetaucht.

Das Ziel war, dass Access jede Zeile eigenständig nach dem Wert prüft und je nach Wert (>90, >70, >40, <40) entsprechend formatiert. Dies funktioniert nun leider überhaupt nicht. Hättest Du noch einen Tipp?

Der verwendete VBA-Code lautet:
   Private Sub Report_Current()
    Dim DiagObj As Chart
    Set DiagObj = Me.Diagramm1.Object
   
    If Me.MittelwertvonaurBewertung >= 90 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(4, 200, 13)
    If Me.MittelwertvonaurBewertung >= 70 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(153, 255, 102)
    If Me.MittelwertvonaurBewertung >= 40 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(4, 200, 13)
    If Me.MittelwertvonaurBewertung < 40 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(255, 51, 0)
End Sub

Es wird die erste Zeile abgefragt und dementsprechend die Farbe im ganzen Report verwendet. Wenn ich statt ...Collection(1) ... Collection(), dann gibt es einen Laufzeitfehler.

Vielen Dank für einen Tipp!

Peter
Titel: Re: Diagramm im Bericht
Beitrag von: database am Dezember 05, 2011, 21:36:05
Hallo,

steht deine Datenbank in einem 'vertrauenswürdigen Speicherort'? Dieses Feature gibt es bei Access / Office seit der Version 2007. Es ist nicht unbedingt egal, WO so eine Applikation abgelegt wird.
Kontrolliere bitte daher die Einstellungen die deine Offis-Installation in dem Zusammenhang beinhaltet - findest du im Sicherheitscenter.

ZitatIch habe jedoch den VBA-Code auf "Report-Current" geändert.
??? wenn das funktioniert kann ich mir nicht erklären wieso es beim Formatieren nicht gehen soll?

ZitatDas Ziel war, dass Access jede Zeile eigenständig nach dem Wert prüft und je nach ....

Versuch mal...


If Me.MittelwertvonaurBewertung >= 90 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(4, 200, 13)
If Me.MittelwertvonaurBewertung >= 70 AND Me.MittelwertvonaurBewertung <90 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(153, 255, 102)
If Me.MittelwertvonaurBewertung >= 40 AND Me.MittelwertvonaurBewertung  <70 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(4, 200, 13)
If Me.MittelwertvonaurBewertung < 40 Then DiagObj.SeriesCollection(1).Interior.Color = RGB(255, 51, 0)


Du musst bei der Angabe eines unteren Grenzwertes auch dessen obere Grenze anführen sonst wirkt das Ganze nicht so recht  ;)

Alternativ kannst auch das testen:


Select Case Me.MittelwertvonaurBewertung
        Case Is >= 90
            DiagObj.SeriesCollection(1).Interior.Color = RGB(4, 200, 13)
        Case 70 To 90
            DiagObj.SeriesCollection(1).Interior.Color = RGB(153, 255, 102)
        Case 40 To 70
            DiagObj.SeriesCollection(1).Interior.Color = RGB(4, 200, 13)
        Case Is < 40
            DiagObj.SeriesCollection(1).Interior.Color = RGB(255, 51, 0)
    End Select
Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 06, 2011, 10:12:20
Ja, die Settings im Sicherheitscenter stimmen. Die Anzahl an Verweisen habe ich auch auf ein Minimum reduziert.

Der grundsätzliche If- oder (alternativ) Case-Befehl funktioniert - und zwar dann, wenn ich in die jeweilige Zelle klicke. In diesem Fall werden aber alle Diagramme/Datenbalken des Berichts in die jeweilige Farbe transferiert. Es gibt wieder keine farbliche Differenzierung.

Der Bericht hat ja ein eigenständiges Diagramm je Zeile im Bericht. Basis dafür sind die Werte in "aurHflRefID" / "MittelwertvonaurBewertung".

Kann Access nun zwischen den einzelnen Diagrammen nicht unterscheiden? Mit meinem Laien-Wissen vermute ich das - könnten da Variablen ins Spiel kommen um zu differenzieren?

Danke für die Geduld (!!!) und für Tipps natürlich auch!

Peter

Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 06, 2011, 17:50:39
Schönen Abend!
Ich denke ich habe das Problem identifiziert. Es ist die Logik!

Das Diagramm hat den Namen "diagramm1". Somit kann Access/VBA nicht differenzieren, da der Name nicht variabel ist. Variablen schaffen jedoch keine Abhilfe.

Ich denke, es ist somit nicht möglich meinen Bedarf umzusetzen, oder?

Freue mich über eine Rückmeldung.

Peter


Titel: Re: Diagramm im Bericht
Beitrag von: database am Dezember 07, 2011, 22:31:09
Hallo,

ZitatIch denke ich habe das Problem identifiziert. Es ist die Logik!
NÖ!

sieh mal im Anhang...

Beim Aufbau des Berichts wird JEDE Zeile des Detailbereichs für sich 'gezeichnet' und berechnet.
Wodurch es dann nicht zum Tragen kommt, dass sich der Name des Diagramms nicht pro Zeile ändert - was ja auch ein Wahnsinn wäre - denk mal wenn es da 55287 Zeilen (Datensätze) im Abfragergebnis geben würde.

Nimm mal die Seitenansicht (also die Druckvorschau) und nicht die Berichtsansicht - Bericht also nicht durch Doppelklick öffnen!
Mit dem Doppelklick funktioniert es bei mir auch nicht

[Anhang gelöscht durch Administrator]
Titel: Re: Diagramm im Bericht
Beitrag von: database am Dezember 07, 2011, 22:35:30
<<gelöscht - doppelt gesendet!>>

Titel: Re: Diagramm im Bericht
Beitrag von: PeFo am Dezember 09, 2011, 12:30:58
Heureka! Ich bin sprachlos - habe ich jetzt unzählige Stunden verschwendet, weil ich die falsche Ansicht genutzt habe...? Ja, so sieht es aus. Hauptsache es funktioniert, über die verschwendeten Stunden wird demnächst keiner mehr nachdenken. Jetzt kann ich die Anwendung ohne Systembruch nutzen, soll heißen, ich erspare mir die Auslagerung der Berichtserstellung ins Excel.

Vielen, vielen Dank - ohne Deiner Hilfe hätte ich das nicht realisieren können.

Viele Grüße,
Peter