Hallo Gemeinde,
ich habe folgendes Problem:
Bei einer unter Win XP laufenden Datenbank A2003 wird eine integrierte Grafik nicht angezeigt. Folgendes Phänomen habe ich festgestellt:
Wenn die Grafik aufgerufen wird, erscheint ein leeres Formular. Wenn dieses Formular manuell minimiert wird und anschließend wieder maximiert wird, ist die Grafik vollständig vorhanden.
Ich bastelte schon lange an diesem Problem herum. Auch über google bin ich diesem Problem nicht auf die Schliche gekommen. Zuletzt habe ich aus Eurer Gemeinde unter der Rubrik "Smalltalk - Anfrage aus anderen Foren hier geduldet?" Hinweise erhalten, die mich aber auch nicht weitergebracht haben.
Wenn es keine direkte Lösung zu diesem Problem geben sollte, könnte ich mir vorstellen, dass über einen VBA-Code das, was manuell mit minimieren/maximieren zum Ziel führt, auch in einen Code gepackt werden kann.
Ich wäre euch sehr dankbar, wenn Ihr mir einen solchen Code (möglichst detailliert erklärt) hier posten könntet.
Meine Systeme:
1. Windows 7 Home Premium
2. Access 2003 unter Win XP pro
Einen Vorschlag folgend hänge ich eine abgespeckte Version der DB mit Phantasiedaten an.
NS: Oben beschriebenes Phänomen tritt nicht nur bei dieser DB auf, sondern auch bei anderen DBs mit Grafik.
mfg Hans
[Anhang gelöscht durch Administrator]
Hi,
warum rufts Du das Diagramm in einem Formular auf?
könnte nicht auch ein Bericht für die Diagramm-Anzeige gehen?
Harald
Hi bahasu, Harald,
sollte es im Bericht besser laufen? Ich habe bisher nur das Formular benutzt. Und unter XP hat es auch so funktioniert. Warum bei WIN7 nicht mehr?
mfg Hans
Hi Hans
als Bericht ist die Grafik leicht anzeigbar: siehe Anhang
(Beim Button habe ich statt des Makros einen VBA-Zweizeiler eingebaut, der den Bericht aufruft (Dieser ist noch nicht "schön" angepaßt worden ...)
Keine Ahnung, warum das unter xp ok war. Aber wozu gibt es die Gurus ;D
Harald
[Anhang gelöscht durch Administrator]
Hallo bahasu / Harald,
ja, so etwa könnte es gehen. Ich bin ja nicht gegen Bericht. Aber dein Code müsste noch angepasst werden, Ich möchte das Diagramm als "Liniendiagramm" quer dargestellt haben (siehe mein Beispiel).
Da ich VBA-Laie bin, kann ich deinen Vorschlag nicht umwandeln.
mfg Hans
Hi Hans
siehe Anhang
Harald
[Anhang gelöscht durch Administrator]
Hallo Harald,
ja, so etwa soll das Diagramm dargestellt werden. Aber bei deinem Beispiel werden auf der Abzisse nur Ost West ..etc. dargestellt, nicht die Daten (Monatsdatum). Auch die Werte werden nicht in korrekten Größen angezeigt. Hier muss wohl nachgebessert werden.
NS.: Nur zur Information, meine DB hat z.Z. 460 Datensätze, die dargestellt werden sollen.
mfg Hans
Hi Hans,
Vorschlag: Vielleicht hilft es, wenn Du aus dem Formular-Entwurf die Grafik kopierst und in den Bericht einfügst.
Harald
Hallo Knubbel,
so ich habe mir deine Datei im ersten Beitrag mal angesehen.
Der Grund für die Nichtanzeige des Diagramms liegt m.E. daran, dass die Datenherkunft noch nicht erstellt wurde, obwohl das Diagramm bereits angezeigt wird.
Das beschriebene Minimieren und Maximieren oder ein Wechsel zwischen den Datensätzen des Formulars löst dann das Anzeigen aus.
Abhilfe:
Im Formularentwurf ----> Eigenschaften des Formulars ----> Zeitgeber Wert 100 einstellen.
Ereignis 'Bei Zeitgeber' folgenden Code:
Private Sub Form_Timer()
Me!OLEUngebunden0.Requery
Me!TimerInterval = 0
End Sub
... zeigt das Diagramm OHNE Probleme an ;)
TimerInterval = 100 besagt, dass nach dem Abgeschlossenen Laden des Formulars 100 Millisekunden gewartet wird und dann das Ereignis Timer ausgelöst wird.
TimerInterval = 0 muss sein sonst wird laufend aktualisiert und das soll ja nicht sein!
...und ausser diesem und dem Code zum Schließen des Formulars befindet sich KEINE WEITERE ZEILE Code im Formular!
HTH
p.s. sollte das Timerintervall 100 (100 Millisekunden) nicht ausreichen, wenn alle 460 Datensätze ausgewertet werden, kannst du den Wert erhöhen.
[Anhang gelöscht durch Administrator]
Hallo Peter.
Zunächst vielen Dank für deine ausführliche Erklärung, die sogar ich verstanden habe.
Die Lösung führt jedoch nur teilweise zum Erfolg:
Mit 500 bei Zeigeber werden alle bisher vorhandenen 460 Datensätze ausgewertet und richtig im Diagramm angezeigt.
Jedoch kommt dann die Fehlermeldung: "Laufzeitfehler 2465 MOA kann 'Timerinterval' nicht finden". Auch wenn ich statt Timerinterval Zeitgeberinterval (so, wie es in der Eigenschaftenliste heißt) eingebe, kommt die Fehlermeldung.
Was kann / muß ich nun noch tun?
mfg Hans
Hallo,
hast du das alles entsprechend meinem Beispiel gemacht?
Wenn du ím Ereignis 'Bei Zeitgeber' des Formulars mit dem Diagramm eingibst
Me gefolgt von einem Punkt MÜSSTE eigentlich die Eigenschaft
TimerInterval auszuwählen sein.
Und wenn dieses der Fall ist verstehe ich eigentlich die Fehlermeldung nicht...
Ich befürchte da eher einen Schreibfehler deinerseits - kopier' einfach die Zeilen aus meinem Beitrag in deine DB
Zitat... wenn ich statt Timerinterval Zeitgeberinterval ...
Du kannst die Deutsche Schreibweise, die aus der übersezten Oberfläche stammt keinesfalls in einem VBA Code einsetzen - das funktioniert nicht.
Hallo Peter.
Habe jetzt deinen Code kopiert und eingefügt. Gleiches Ergebnis: Laufzeitfehler!
Habe nun im Code das Me! durch Me. ersetz. Laufzeitfehlermeldung wird nicht mehr angezeigt. Das Diagramm erscheind kurz, und verschwindet dann wieder.
Was nun?
mfg Hans
Pfffffff....
Zitatdurch Me. ersetz. Laufzeitfehlermeldung wird nicht mehr angezeigt
wenn du den Punkt eingibst, muss ja der Kontext aufgehen - gibts da TimerInterval zum auswählen?
Zeig mal deinen GESAMTEN Code aus dem Form her bitte - KOPIE!!!
Sonst kann dir nur noch anbieten die DB zu zippen und wenn nicht anders möglich die relevanten Tabellen samt einem repräsentativen Bestand und dem einen Form mit dem Diagramm hochzuladen - ich kann mir das nicht vorstellen, bei mir läuft's ja auch - hast du mein Beispiel auf deinem Recher ausprobiert?
Hallo Peter,
hier eine Kopie von meinem Code:
Private Sub Form_Timer()
Me.OLEUngebunden0.Requery
Me.TimerInterval = 0
End Sub P
Ja, in dem sich öffnenden Dropdown ist "TimerInterval" vorhanden.
Ich hatte garnicht gesehen, dass du dein Beispiel angehängt hattest.
Habe die DB jetzt heruntergeladen.
Sie weist das gleiche Problem auf: leeres Formular.
mfg Hans
Habe zur Vorsicht die von mir angehängte Datei runtergeladen - die funktioniert einwandfrei!
Rufst du auch das Formular 'Diagramm Monatseinkommen' auf, da habe ich nämlich die Änderung eingebaut und nicht ins Formular 'Diagramm' ?
Ausserdem würde ich empfehlen die Diagrammobjekte in unterschiedlichen Formualren auch unterschiedlich zu benennen.
Hallo Peter,
ja, ich rufe das richtige Formular auf. Habe mein Original auch mit der Beispiel-DB verglichen. Kann keinen Unterschied feststellen.
Mich wundert halt nur, dass die Beispiel-DB bei dir läuft nud bei mir nicht. Liegt wohl an meinem Rechner. Beide DBs laufen auf dem XP-Rechner problemlos.
Gibt es denn nicht den Weg Minimieren - Maximieren? Danach wird das Diagramm ja angezeigt.
Wie müsste denn solch ein Code aussehen? Mit meinen bescheidenen VBA-Kenntnissen kriege ich das nicht hin.
Mach dir aber bitte heute noch einen schönen Sonntagabend.
mfg Hans
Hallo Peter,
ja, ich rufe das richtige Formular auf. Habe mein Original auch mit der Beispiel-DB verglichen. Kann keinen Unterschied feststellen.
Mich wundert halt nur, dass die Beispiel-DB bei dir läuft nud bei mir nicht. Liegt wohl an meinem Rechner. Beide DBs laufen auf dem XP-Rechner problemlos.
Gibt es denn nicht den Weg Minimieren - Maximieren? Danach wird das Diagramm ja angezeigt.
Wie müsste denn solch ein Code aussehen? Mit meinen bescheidenen VBA-Kenntnissen kriege ich das nicht hin.
Mach dir aber bitte heute noch einen schönen Sonntagabend.
mfg Hans
Hmmm, ...
aufgegeben wird in der Regel ein Brief!
Was mich jetzt noch interessieren würde - du verwendest Windows 7 Home Premium ... und welche Office Version mit welchem Service-Pack?
Hallo,
ja, WIN 7 Home Premium
Officeversion: Office 2003 pro unter Office 11
Hilft dir das weiter?
mfg Hans
Hi,
welches Service Pack ist auf Office 2003 installiert?
Brauch die Info um das morgen im Betrieb virtuell anchstellen zu können
Sorry, hab ich vergessen zu schreiben: SP3
mfg Hans
So, los gehts!
1. Bearbeite dein Makro, mit dem du das Formular 'Diagramm Monatseinkommen' öffnest (7)
Setze hier den Wert für Datenmodus auf 'Bearbeiten'
2. Öffne das Formular 'Diagramm Monatseinkommen' im Entwurfsmodus und zeige die Eigenschaften des Diagramm-Objekts an.
Setze auf der Registerkarte Daten Aktiviert auf JA und gesperrt auf NEIN
3. Zeige die Eigenschaften des Diagrammobjekts an (OLEUngebunden0) und gehe zur Registerkarte 'Andere'
Setze hier den Wert für Objektaktivierung auf 'Fokus' - eventuelle Warnung bestätigen und auf Speichern klicken.
4. Enferne die Zeitgebereinstellung (wieder auf 0 stellen) in den Formulareigenschaften Registerkarte Ereignisse
5. Lösche die Ereignisprozedur 'Bei Zeitgeber' ganz raus.
6. Gehe zu 'Beim Öffnen' und erzeuge eine Ereignisprozedur.
Füge in diese den folgenden Code ein:
Me!Befehl1.SetFocus
Me!OleUngebunden0.AutoActivate = acOLEActivateGetFocus
Me!OLEUngebunden0.SetFocus
7. Vergrößere dein Formular ein wenig, sodass der Schliessen-Button oberhalb des Diagrammobjekts im Fenster liegt.
Speichere die Datei und schließe sie.
Starte die Datei neu und ruf das Diagramm mal auf.
HTH
Hallo Peter,
habe alles so gemacht, wie du beschrieben. Als Ergebnis beim Diagrammaufruf kommt bei mir ein Formular mit zwei übereinanderliegenden, unterschiedlich großen Diagrammen, ein Ausschnitt aus dem Abfrageergebnis, und den Schließenbuttom bekomme ich auch nicht angezeigt (das Diagramm ist soweit in Ordnung). Das Formular sieht aus wie in der Entwurfsansicht. Es gibt aber keine Möglichkeit in die Formularansicht umzuschalten. Ist hier noch eine Erweiterung des Code erforderlich?
mfg Hans
Hallo, guten Morgen,
habe dir meine Musterdatei angehängt, die bei mir unter W7 / ACC2003 läuft.
In dieser Datei sind alle Änderungen, die ich im vorangegangenem Posting beschrieben habe beinhaltet.
HTH
[Anhang gelöscht durch Administrator]
Hallo Peter,
die Lösung ist zwar nicht optimal, aber ich kann damit leben.
Vielen Dank für deine Hilfe und dein Bemühen. Vor Allem Dank für deine Geduld.
mfg Hans
Hallo,
was ist daran NICHT optimal?
Meinst du die Ansicht der Diagrammwerte oder was ... ?
Das Problem des Nichtanzeigens war nicht wie ursprünglich angenommen die Zeit bis zum Anzeigen (das war unter W7 Office 2007 so)
sondern dass ein 2003-er Diagramm unter W7 einmalig aktiviert werden muss um es zur Anzeige zu bringen.
Wenn du mir mitteilst was dir an der Lösung nicht gefällt kann ich versuchen vielleicht noch Änderungen in deine Richtung zu finden.
Hallo Peter,
du gibst wohl nicht auf ? Bist ja auch kein Brief :) :)
In der Anlage habe ich einen Screenshoot von der Diagrammdarstellung beigefügt. Auch bei meiner Freundin kommt gleiches Bild unter WIN 7 zur Anzeige. Ich hätte jedoch gern ein Diagramm, dass das ganze Formular ausfüllt ohne zusätzliche Informationen. So, wie es funktioniert bei Minimieren / Maximieren.
Gibt es nicht doch den Weg über einen Code, der Minimieren/Maximieren abarbeitet?
mfg Hans
[Anhang gelöscht durch Administrator]
Hallo,
tut mir leid, hat ein wenig gedauert, aber ...
Zitatdu gibst wohl nicht auf
NEIN
Ich habe nun einen Weg gefunden dieses Diagramm auf dem Formular anzuzeigen ohne das Fenster zu minimieren und dann zu maximieren.
Wobei zu bemerken ist, dass der ganze Effekt nur in der Kombination Windows 7 und Office 2003 auftritt. Unter W7 und Office 2007 / 2010 funktioniert das einwandfrei.
Auch zu bemerken ist, dass es nicht üblich ist ein Diagramm in einem Formular anzuzeigen OHNE den Bearbeitungsmodus zu verwenden.
'Normalerweise' sollte ein Diagramm in einem Bericht erscheinen.
So aber egal - hier gehts halt um's Formular.
Der Trick dabei ist ein Doppelklick, der per VBA ausgeführt wird.
Ich habe die weiter oben von mir beschriebenen Änderungen am Makro wieder zurückgenommen, auch das Diagrammobjekt selbst wieder 'Eanbled = False' und 'Locked=True' gesetzt.
Einzig das Formular selbst muss ein wenig vergrößert werden. Am Besten wird sein, du nimmst überhaupt das Form aus dem angehängten Beispiel und änderst das nicht mehr!
Wo liegt nun der Hase in der Pfeffersauce ...
Mit viel herumprobieren habe ich bemerkt, dass ein Doppelklick auf die Diagammfläche das Ding anzeigt allerdings im Bearbeitungsmodus (das ist das was du als 2 übereinanderliegende Diagramme interpretiert hattest)
ein Doppelklick auf das Formular - ausserhalb der Diagrammfläche hat dann diesen Bearbeitungsmodus wieder beendet und das Diagramm 'normal' angezeigt.
So nun habe ich ein paar API-Spielereien in dein Formular eingebaut, dass diese Vorgänge per Code simuliert.
Wichtig ist, dass das Hauptauswahlform im Vollbildmodus gestartet wird, da ansonst die Ausgangsposition des Mauszeigers nicht stimmt.
Nach dem Klicken auf '7' sollte auch die Maus möglichst nicht bewegt werden.
Das Form springt halt jetzt ein wenig herum und zuckt aber das Diagramm sird ordnungsgemäß angezeigt.
Vielleicht kann man das noch ein wenig optimieren (die Positionsbestimmung und das Repainten) aber dazu habe ich ehrlich gesagt keine Zeit ... :-\
Die Änderungen habe ich nur für das eine Formular durchgeführt!
HTH
Nun schau dir mal das Beispiel im Anhang an...
[Anhang gelöscht durch Administrator]
Hallo Peter,
danke für deinen Einsatz.
Aber auch dein letztes Beispiel meldet sich halt nur mit einer Fehlermeldung.
Bitte gib jetzt alle weiteren Versuche auf. Ich selbst werde es probieren, das Diagramm in einem Bericht anzuzeigen.
Unverständlich für mich ist jedoch das Grundproblem: Warum funktionieren unter XP entwickelte Objekte unter WIN 7 nicht einwandfrei?
Wie dem auch sei, ich werde nun diesen Threat als beantwortet deklarieren und hoffe auf keine zusätzlichen Mitteilungen.
Nochmals herzlichen Dank an alle Helfer.
mfg Hans
Hallo,
welche Fehlermeldung?
Bei mir gibt es keine!
Zitathoffe auf keine zusätzlichen Mitteilungen
...an diese Anregung werde ich mich halten - somit solltest du dann dieses Posting als nicht für dich gedacht ansehen. :(
Für den Rest jener Mitlesenden, die sich eine Erklärung erhoffen ... ;)
ZitatWarum funktionieren unter XP entwickelte Objekte unter WIN 7 nicht...
Weil das Office 2003 Paket für eine andere Betriebssystemgeneration konzipiert wurde.
Die Projekte funktionieren prinzipiell unter Windows 7 ordnungsgemäß, wenn sie im entsprechenden Kompatibilitätsmodus ausgeführt werden.
Das heißt in gegenständlichem Fall, der Kompatibiltätsmodus für Access.exe muss auf Windows XP SP2 oder SP3 eingestellt sein um die höchstmögliche Kompatibilität aufzuweisen.
Weiter ist in diesem Fall ein Access 2003 - OLE-Objekt im Einsatz.
Da nicht absehbar ist, inwieweit diese Objekte mit einem NEUEN Betriebssystem vereinbar sind, wenn sie aus einem veraltetem Office-Paket stammen,
kann es vereinzelt unter besonderen Aspekten zu Problemen kommen. Meine in dem Fall angebotenen Lösungen konnten daher nur einen
Workaroundfür Konstellationen darstellen, die nicht der Regel entsprechen. Wie ich bereits erwähnt habe, läuft die gegenständliche
URSPRUNGSDATEI unter Windows 7
mit dem dafür konzipierten
Office 2007 PROBLEMLOS und das als *.mdb sowie auch im neuen Dateiformat als *.accdb
Hallo,
jetzt meine letzte Meldung zu diesem Problem.
Hallo Peter,
folgende Fehlermeldung kommt beim Aufruf deiner letzten Version:
"Das OLE-Objekt kann nicht aktiviert werden, sobald es den Fokus erhalten hat"
Was die Kompatibilität angeht: Mein altes Office SP3 ist auch unter WIN 7 installiert. Bei der Kompatibilitäts-Auswahl kommt bei XP SP3 halt die Fehlermeldung
"Bei der Wiedergabe des Befehls an das Programm ist ein Fehler aufgetreten". Daher habe ich Vista gewählt, da diese Meldung nicht mehr kommt.
Inzwischen habe ich das Diagramm in einen Bericht gestellt (Kopie aus dem Formular). Hier funktioniert das komischer Weise (gleiches OLE-Objekt). Der Bericht ist zwar nicht so detailgenau wie das Formular, aber ich kann damit leben.
Nochmals herzlichen Dank für Eure Unterstützung.
Bis zu meinem nächsten Problem verbleibe ich
mfg Hans
Hallo,
ich habe das Problem von "Knubbel" ebenso und hab mir interessiert Eure Lösungsversuche durchgelesen. Das hat mich auf eine Idee gebracht - und siehe da, es funktioniert wunderbar. Also hier meine Lösung, wie noch unter Access 2003 hergestellte Diagramme in Formularen auch unter Access 2007 sofort angezeigt werden:
Makro erstellen, das folgende Befehle enthält: 1. Zeile "AktualisierenDaten", 2. Zeile "StoppMakro"
Dieses Makro speichern, bei mir unter "Mak_Diagramme_anzeigen"
Formular mit dem Diagramm in der Entwurfsansicht öffnen,
Unter "Beim Laden" das Makro "Mak_Diagramme_anzeigen" auswählen.
Hoffe, es klappt bei Euch auch so wunderbar.
Wonny
In einem anderen Forum habe ich folgende Lösung ohne Makro gefunden:
Im Eigenschaftenfenster des Diagrammobjekts unter ,,Bei OLE-Aktualisierung" als Ereignisprozedur
Me!Diagrammname.Object.Application.Chart.Refresh
eintragen. ,,Diagrammname" ist natürlich der jeweilige Name des Diagramm-Steuerelements.
Damit werden die Balkendiagramme bei mir wieder einwandfrei dargestellt.