Einer Teilnehmerin letzte Woche in der Visio-Schulung fiel es auf: die Shapes in der Schablone „Vebinder“ (Visio-Extras) sind eigentlich keine Verbinder. Bei allen Shapes (außer dem ersten „Dynamischer Verbinder“) ist die Registerkarte „Verbinder“ in Entwicklertools / Verhalten ausgeblendet.
Autor: Rene_Martin
Datenbankassistent
Hallo Herr Martin,
kürzlich habe ich mir Ihr Buch „Visio 2010 – Das Handbuch“ (ISBN 978-3-86645-135-3) gekauft.
Anfänglich teilte ich ihre Begeisterung doch inzwischen hält sich die Begeisterung bei mir sehr in Grenzen.
Warum?
Zunächst habe ich zwei vorhandene MS Access Datenbanken per Reverse-Engineering importiert (Entitäten-Diagramm) was nach einigem Gefummel auch gut funktioniert hat.
Dann wollte ich die Objekte bzw. Tabellen aus der ersten Zeichnung in die zweite Zeichnung kopieren um dort alle Tabellen zusammen zur Verfügung zu haben.
Aus irgend einem mir unerfindlichen Grund hat Visio nach dem Einfügen an alle eingefügten Tabellen am Tabellenname eine „1“ angehängt?!?! Hätte ich das Einfügen in der gleichen Zeichnung durchgeführt in der die Tabellen ja schon vorhanden sind dann könnte ich das Verhalten verstehen, man müsste ja doppelte Tabellen verhindern. Ich fügte aber in eine andere Zeichnung ein in der die eingefügten Tabellen noch nicht vorhanden waren. Dieses Verhalten ist auch gegeben wenn man in eine völlig leere Zeichnung einfügt. Kann man dieses Verhalten irgendwie verhindern? (In Ihrem Buch habe ich dazu leider nichts gefunden.)
Daraufhin habe ich versucht die Tabellennamen per VBA zu ändern. Es ist mir auch gelungen den Text im oberen Shape zu ändern aber in den Datenbankeigenschaften stand immer noch der Name mit der „1“ am Ende. Das wollte ich in meiner Naivität dann einfach auch per VBA ändern und musste feststellen, das daß offensichtlich nicht geht.
Bei meiner viele Stunden dauernden Internet-Recherche fand ich zu dem merkwürdigen Verhalten beim Kopieren keinen einzigen Eintrag. Zu der Sache mit dem Auslesen der Datenbankeigenschaften fand ich dann einige Hinweise die allerdings alle ausagten, daß das nicht möglich ist. Es gibt keine API-Schnittstelle!?! Können Sie das bestätigen?
Gruß, RE
Hallo Herr E.,
Ich bin übrigens noch immer „ziemlich“ begeistert von Visio. Ich gestehe: da ich in einigen Visio-Programmierprojekten involviert bin und das Teilchen auf Herz und Nieren abklopfe, verfluche ich es manchmal schon – vor allem das manchmal merkwürdige Eigenleben … Aber das ich in einen Buch, das in einem Verlag erschienen ist, der den Namen „Microsoft“ im Titel trägt, nicht schreiben … Und: an die US-amerikanischen Programmierer kommen wir hier in Deutschland leider nicht ran – sonst hätte ich auch einige Fragen an sie …
Zu Ihrem Problem: Ich habe es mir angeschaut – Sie haben recht mit dem Namenändern der Tabellen. Auf den Shapes der DB-Vorlage liegt im ShapeSheet ein Schutz – den kann man leicht aushebeln und sich so die einzelnen Teile ansehen. Dabei habe ich festgestellt, dass der Tabellenname nicht im ShapeSheet steht. Ein Ändern des Tabellennamens schreibt den Text als Text in die Felder (irgendeine *dll steuert dies). Ich hätte vermutet, dass er in einer userdefined Cell oder irgendwo in den Daten liegt. Wo Visio die Datenbankeigenschaften speichert, ist mir nicht klar – da Visio 2010 ein binäres Format hat, finden wir es nicht. Erst in Visio 2013 kann man die Zeichnung als *.vsdx speichern und in der xml-Datei nachsehen, wo die Daten liegen. Auch ein Speichern der Datei als xml (oder svg) bringt keinen Erfolg – ich weiß nicht, wo Visio diese Daten kapselt. Das heißt: Sie werden wohl nicht an den Tabellennamen rankommen, da er mit Sicherheit irgendwo gekapselt liegt.
Das heißt: ich fürchte, Sie müssen die beiden Datenbanken so konfigurieren, dass sich die Tabellennamen unterscheiden. Oder doch in getrennten Dateien liegen lassen.
Sorry, dass ich Ihnen nicht helfen kann
schöne Grüße
Rene Martin
Hallo Herr Martin,
vielen Dank für ihre Antwort auf meine Anfrage.
Nochmal kurz zum Problem. Genaugenommen sind es ja zwei Probleme…
1. Tabellennamensänderung nach copy&paste
Wenn eine Tabelle mit Namen „tblKunden“ aus Zeichnung A kopiert wird nach Zeichnung B, die vollkommen leer ist, und danach heißt die Tabelle in Zeichnung B dann „tblKunden1“ dann ist das ein Bug.
2. Auslesen dar Datenbankeigenschaften per VBA
Wie ich bereits vermerkt hatte gibt es im Internet ein Reihe von Statements die besagen, daß es keine Objekte gibt die man ansprechen könnte. Microsoft hat offensichtlich bewusst keine API-Zugriffe auf die Datenbankeigenschaften eingerichtet. Das ist ein Skandal … – zumindest aber eine Frechheit. Na ja, so kenn man Microsoft.
Ihre Forschungsergebnisse decken sich also mit den meinen. Das ist natürlich sehr frustrierend und unbefriedigend. Immerhin habe ich eine Menge Geld ausgegeben für die 2010 Premium Version. Dennoch betrachte ich es nicht als eine Fehlinvestition, auch wenn genau das wofür ich es zunächst gebraucht hatte nicht funktioniert. Das Programm bietet ja noch eine Menge weiterer nützlicher Funktionalitäten, da werde ich sicher noch einige davon gerauchen können.
Gruß, RE.
Eckenabrundung
In der letzten Visio-Schulung, in der wir einen Computer gezeichnet haben, beschwerten sich die Teilnehmer darüber, dass die Ecken der Tasten nicht abgerundet sind. Die Standardeinstellung „Rechteck“ sah nicht sehr originell aus, die kleinste Eckenabrundung lieferte bei den kleinen Rechtecken ovalähnliche Formen. Die Lösung: in den Linieneinstellungen kann man die Eckenrundung manuell eingeben. Übrigens auch die Linienstärke – man muss nicht auf die Vorgaben der Liste zurückgreifen. Die Teilnehmer waren mit dem Ergebnis zufrieden.
Ausrichten und Formatieren
In der letzten Schulung wurde ich gefragt, wie man so etwas in Visio macht, wie auf dem Foto zu sehen. Nun – hierfür sind mehrere Schritte notwendig:
1. Die Shapes Ende (10), Eschborn (8), Numbering (7), München (2) und TP2 (1) markieren und vertikal verteilen.
2. Die Shapes München (4), München (5), Eschborn (8) und Nürnberg (9) markieren und horizontal verteilen.
3. Damit das Shape Eschborn an seiner Position bleibt zuerst dieses (8) markieren, dann die Shapes München (4), München (5) und Nürnberg (9) markieren und ausrichten (vertikal zentrieren).
4. München (4) , München (5) und München (3) markieren und verteilen.
5. Zuerst München (3) markieren, anschließend München (2) und TP2 (1) und ausrichten (horizontal zentrieren).
6. München (2) markieren und Nürnberg (6) dazu ausrichten.
7. Nürnberg (9) markieren und Nürnberg (6)dazu ausrichten.
8. Eschborn (8) markieren und Numbering Agent (7) und Ende (10) dazu ausrichten.
Fazit: mit einem Klick ist es nicht getan, aber es auch keine stundenlange Arbeit, um Shapes in Visio ordentlich auszurichten und zu verteilen.
Liniensprung
Bleistift
Gestern bemerkte ich in der Visio-Schulung, dass ein Teilnehmer Schwierigkeiten mit dem Werkzeug „Bleistift“ hatte. Also erklärte ich es ihm: Der Bleistift hat zwei Funktionen in Visio – zum einen dient er zum Zeichen von freien gerade Linien oder Kurven. Zum anderen kann man damit vorhandene Shape – falls kein Schutz auf ihnen liegt – deformieren. Wenn man die Knoten markiert, kann man die „Eckpunkte“ verschieben; wenn man die Punkte zwischen den Knoten verschiebt, kann man Kurven erzeugen. Das leuchtet ein.
Fotos beschneiden
Nein, man kann in Visio keine Fotos beschneiden. Man kann nicht einen ovalen Bereich extrahieren. Aber man kann zwei Rechtecke darüber legen und diese mit den Vorgängen kombinieren, so dass ein Loch durch das eine Rechteck hindurchgestanzt wird. So kann man abgerundete Ecken bei einem Pixelbild in Visio erzeugen.
ShapeSheet
Viele Anwender fürchten sich vor den ShapeSheet in Visio. Dabei kann man auch ohne profunde Kenntnis der parametrisierten Daten dort Dinge entdecken und korrigieren. Beispielsweise die Position der Verbindungspunkte – man kann kontrollieren, ob sie sich genau in der Mitte befinden. Der mittlere, untere beispielsweise sitzt nicht genau in der Mitte – er müsste auf Width*0.5 geändert werden.
Shapes löschen
Warum löscht Visio die Verbinderlinie, wenn ein Shape entfernt wird? Nun – die Antwort ist trivial: an dem Shape klebt eine Verbinderlinie; der Anfangs- oder Endpunkt ist identisch mit der Position des Verbindungspunktes. Wird dieser gelöscht, hätte die Linie nur noch einen Punkt; das kann nicht sein.
Erstaunlicher ist jedoch, dass dieses Verhalten nicht immer auftritt – manchmal bleibt die Linie auch stehen !?!
Neuer Verbindungspunkt
Warum muss ich denn beim Erstellen eines neuen Verbindungspunktes die [Strg]-Taste drücken, wollte letzte Woche ein Teilnehmer in der Visio-Schulung wissen. Ich weiß es nicht – ist halt so. Übrigens ist der Beschriftungstext des Symbols nicht ganz korrekt – zum Verschieben und Löschen muss man nicht die [Strg]-Taste drücken.