Freigeben über


Informationen zum Verknüpfen von Shapes mit Daten

Hinweis

Datenkonnektivitätsfeatures sind nur für lizenzierte Benutzer von Microsoft Visio Professional 2013 verfügbar.

Die Datenkonnektivität in Visio unterliegt vier Gesichtspunkten:

  • Herstellen einer Verbindung zu einer Datenquelle
  • Verknüpfen von Shapes mit Daten
  • Grafisches Anzeigen von verknüpften Daten
  • Aktualisieren verknüpfter Daten, die in der Datenquelle geändert wurden, Aktualisieren verknüpfter Shapes und Beheben möglicher Konflikte

In der Regel wenden Sie sich diesen Aspekten in der aufgeführten Reihenfolge zu. Sie verbinden also zunächst die Visio-Zeichnung mit einer Datenquelle, verknüpfen dann die Shapes in der Zeichnung mit Daten in der Datenquelle, zeigen die Daten in verknüpften Shapes grafisch an und aktualisieren bei Bedarf die verknüpften Daten.

Jedem dieser Aspekte sind Objekte und Elemente im Visio-Objektmodell zugeordnet. Dieses Thema befasst sich mit dem zweiten dieser Aspekte, dem Verknüpfen von Shapes in Ihrer Visio-Zeichnung mit Daten. Weitere Informationen zu den anderen Aspekten der Datenkonnektivität finden Sie in den folgenden Themen:

Wenn Sie eine Visio-Zeichnung programmgesteuert mit einer Datenquelle verbinden möchten, können Sie die Visio-API für Datenkonnektivität verwenden. Die API enthält die folgenden Objekte und zugehörigen Elemente:

Nachdem Sie eine Verbindung zwischen Ihrer Visio-Zeichnung und einer externen Datenquelle hergestellt haben, können Sie Shapes in der Zeichnung programmgesteuert mit Daten aus der Quelle verknüpfen. Sie können ein oder mehrere Shapes mit einer einzelnen Datenzeile in einem Datensatz oder mehreren Datenzeilen in unterschiedlichen Datensätzen verknüpfen. Sie können jedoch keine Shapes mit mehreren Datenzeilen im selben Datensatz verknüpfen.

Sie können vorhandene Shapes mit Daten verknüpfen, jeweils ein Shape oder als Gruppe; oder Sie können Shapes erstellen und gleichzeitig mit Daten verknüpfen. Sie können die Korrespondenz zwischen Shapes und Datenzeilen angeben, wenn Sie Ihnen bekannt ist, oder Sie können Visio die Korrespondenz anhand eines Vergleichs zwischen vorhandenen Shape-Daten und Daten im Datensatz automatisch ermitteln lassen.

Nachdem Sie Shapes mit Daten verknüpft haben, können Sie die Daten grafisch darstellen, indem Sie Datengrafiken zu Shapes hinzufügen. Weitere Informationen zu Datengrafiken finden Sie unter Informationen zum grafischen Anzeigen von Daten.

Die DataRecordset- und DataColumn-Objekte und die DataColumns-Sammlung zeigen verschiedene Eigenschaften, Methoden und Ereignisse an, die das Verknüpfen von Daten vereinfachen. Darüber hinaus stehen verschiedene Elemente andere Objekte im Visio-Objektmodell in Zusammenhang mit dem Verknüpfen von Daten, darunter auch die Objekte Application, Document, Page, Selection, Shape und Window.

Verknüpfen von Daten und Shape-Daten

Für das Verknüpften von Shapes mit Daten ist es nötig, dass Sie allen Visio-Shapes Shape-Daten zuweisen können. In Versionen vor Visio 2007 hatten Shape-Daten die Bezeichnung "benutzerdefinierte Eigenschaften".

Um in der Visio-Benutzeroberfläche auf Shape-Daten zuzugreifen und sie zuzuweisen, klicken Sie mit der rechten Maustaste auf ein Shape, zeigen Sie mit der Maus auf Daten, und klicken Sie dann auf Shape-Daten. Alternativ können Sie in der Visio-ShapeSheet-Tabelle auch manuell oder programmgesteuert auf Shape-Daten zugreifen und sie zuweisen. Um die ShapeSheet-Tabelle (ShapeSheet) eines ausgewählten Shapes anzuzeigen, klicken Sie mit der rechten Maustaste auf das Shape, und klicken Sie dann auf ShapeSheet anzeigen. Um diesen Befehl anzuzeigen, müssen Sie Visio im Entwicklermodus ausführen. Um Visio im Entwicklermodus auszuführen, klicken Sie auf die Registerkarte Datei, Optionen, Erweitert, und klicken Sie dann unter Allgemein auf Im Entwicklermodus ausführen.

Innerhalb des ShapeSheet sind Shape-Daten im Abschnitt "Shape-Daten" (zuvor Abschnitt "Benutzerdefinierte Eigenschaften") enthalten. Um die Abwärtskompatibilität zu gewährleisten, müssen vorhandene Objektelemente die "benutzerdefinierte Eigenschaft" oder "benutzerdefinierte Eigenschaften" in ihren Namen beibehalten. Wenn Sie für ein angegebenes Shape keine Shape-Daten zuweisen, wird im ShapeSheet kein Shape-Datenbereich angezeigt. Sie können einen Shape-Datenbereich zu einem ShapeSheet hinzufügen, indem Sie das ShapeSheet wie zuvor erläutert anzeigen, dann einen Rechtsklick in das ShapeSheet-Fenster ausführen, auf Abschnitt einfügen, Shape-Daten klicken, und anschließend auf OK klicken.

Nachdem Sie die Shapes mit den Daten verknüpft haben, entsprechen viele Spalten des Abschnitts "Shape-Daten" annähernd den Eigenschaften des DataColumn-Objekts. Beispielsweise entspricht die Bezeichnungsspalte im Abschnitt "Shape-Daten", die die für ein bestimmtes Shape-Datenelement im Dialogfeld Shape-Daten angezeigte Bezeichnung bereitstellt, der DataColumn.DisplayName -Eigenschaft, die den Namen steuert, der für die verknüpfte Datenspalte im Fenster Externe Daten angezeigt wird. Weitere Informationen zum Arbeiten mit dem DataColumn -Objekt finden Sie unter Abrufen und Festlegen von Datenspalteneigenschaften.

Identifizieren von Shapes, Datensätzen und Datenzeilen

Visio verwendet eindeutige ID-Nummern, um Shapes, Datensätze und Datenzeilen zu identifizieren. Shape-IDs sind nur innerhalb des Bereichs der Seite eindeutig, in dem sie sich befinden. Nachdem Sie diese Zahlen ermittelt haben, können Sie sie an Methoden in den datenbezogenen Objekten in Visio übergeben, um genau anzugeben, wie die Shapes in Ihrem Diagramm in den mit Datenzeilen in den verfügbaren Datensätzen verknüpft werden sollen.

Um die ID für ein Shape zu ermitteln, rufen Sie den Shape.ID-Eigenschaftswert ab. Darüber hinaus vergibt Visio eindeutige IDs oder GUIDs an Shapes. Die Page.ShapeIDsToUniqueIDs -Methode übernimmt ein Array von Shape-IDs sowie einen Enumerationswert aus VisUniqueIDArgs, der angibt, ob Shape-GUIDs abgerufen, erstellt oder gelöscht werden sollen. Außerdem gibt die Page.ShapeIDsToUniqueIDs -Methode ein Array eindeutiger IDs für übergebene Shapes zurück. Im Gegensatz dazu können Sie die Page.UniqueIDsToShapeIDs -Methode verwenden, wenn Ihnen die eindeutigen IDs einer Shape-Gruppe bekannt sind, um die Shape-IDs dieser Shapes abzurufen. Sie können eine Auswahl der Shapes abrufen, indem Sie die Selection.GetIDs -Methode verwenden, um die Shape-IDs abzurufen.

Um die ID für ein DataRecordset-Objekt zu ermitteln, fügen Sie die DataRecordsets-Sammlung hinzu und rufen den DataRecordset.ID-Eigenschaftswert ab. Um die IDs für die einzelnen Zeilen im Datensatz zu ermitteln, rufen Sie die DataRecordset.GetDataRowIDs -Methode auf, die ein Array von Zeilen-IDs zurückgibt. Weitere Informationen finden Sie im Abschnitt "Programmgesteuertes Zugreifen auf Daten in Datensätzen" unter Informationen zum Herstellen von Verbindungen zu Daten in Visio.

Erstellen von mit Daten verknüpften Shapes

Wenn Sie bereits mit Daten verknüpfte Shapes auf einem Zeichenblatt erstellen möchten, das entweder keine Shapes enthält oder nur die Shapes enthält, die Sie verknüpfen möchten, können Sie die Page.DropLinked- und die Page.DropManyLinkedU-Methode verwenden, um ein oder mehrere Shapes zu erstellen, die bereits mit den Daten verknüpft sind. Diese Methoden ähneln den Page.Drop- und Page.DropManyU-Methoden insofern, als sie an der angegeben Stelle auf der Seite zusätzliche Shapes erstellen; zusätzlich erstellen sie jedoch Verknüpfungen zwischen den neuen Shapes und den in einem bestimmten Datensatz angegebenen Datenzeilen.

Die DropLinked-Methode gibt das neue, verknüpfte Shape-Objekt zurück und übernimmt folgende Parameter:

  • ObjectToDrop – Das konkrete Shape (beispielsweise ein Rechteck), das Sie erstellen möchten.
  • x – Die x-Koordinate des Mittelpunkts des neuen Shapes auf der Seite.
  • y – Die y-Koordinate des Mittelpunkts des neuen Shapes auf der Seite.
  • DataRecordsetIDDer Wert der ID-Eigenschaft des DataRecordset-Objekts, das die zu verknüpfende Datenzeile enthält.
  • DataRowID – Der Wert der ID-Eigenschaft der Datenzeile, zu der eine Verknüpfung erstellt werden soll.
  • ApplyDataGraphicAfterLink Ein Boolescher Wert, der angibt, ob die Datengrafik des Shapes automatisch angewendet wird, wenn sie bereits über einen verfügt, oder falls das nicht der Fall ist, ob die zuletzt verwendete Datengrafik verwendet werden soll. Standardmäßig wird keine Datengrafik angewendet. Weitere Informationen zu Datengrafiken finden Sie unter Informationen zum grafischen Darstellen von Daten.

Der folgende Beispielcode veranschaulicht, wie die DropLinked-Methode verwendet werden kann, um auf einem aktiven Zeichenblatt ein Shape zu erstellen, das bei den Seitenkoordinaten (2, 2) zentriert und mit einer Datenzeile verknüpft ist. Dazu übernimmt er das übergebene DataRecordset -Objekt, ruft die ID ab, und gibt die ID anschließend zusammen mit der zu verknüpfenden ID der Datenzeile an die DropLinked-Methode weiter. Das verworfene Shape ist ein einfaches Dreieck aus der Basic_U.VSS-Schablone, das der Code im Visio-Zeichnungsfenster verankert öffnet.

In diesem Beispiel wird für die ID der Datenzeile der Wert 1 festgelegt; vergewissern Sie sich, dass eine Zeile mit der ID vorhanden ist oder ändern Sie den ID-Wert im Code entsprechend, bevor Sie den Code ausführen.

Public Sub DropLinkedShape(vsoDataRecordset As Visio.DataRecordset) 
 
    Dim vsoShape As Visio.Shape 
    Dim vsoMaster As Visio.Master 
    Dim dblX As Double 
    Dim dblY As Double  
    Dim lngRowID As Long 
    Dim lngDataRecordsetID As Long 
 
    lngDataRecordsetID = vsoDataRecordset.ID 
    Set vsoMaster = Visio.Documents.OpenEx("Basic_U.VSS", 0).Masters("Rectangle") 
    x = 2 
    y = 2 
    lngRowID = 1 
    Set vsoShape = ActivePage.DropLinked(vsoMaster, dblX, dblY, lngDataRecordsetID, lngRowID, True) 
 
End Sub

Die DropManyLinkedU-Methode erstellt auf ähnliche Weise eine Gruppe verknüpfter Shapes, die als Array von Shape-IDs zurückgegeben werden. Sie übernimmt Parameterarrays von zu verwerfenden Shapes, Koordinaten und Datenzeilen, zu denen eine Verknüpfung erstellt werden soll. Einträge an entsprechenden Arrayindexpositionen bestimmen, welche Beziehung zwischen Shapes und Datenzeilen besteht und wo auf der Seite einzelne Shapes verworfen werden.

Verknüpfen von vorhandenen Shapes mit Daten

Wenn Sie genau wissen, wie ein oder mehrere Shapes in einer Visio-Zeichnung und eine oder mehrere Zeilen in einem Datensatz zusammenhängen, können Sie die vorhandenen Shapes folgendermaßen mit Daten verknüpfen:

  • Verknüpfen eines einzelnen Shapes mit einer einzelnen Datenzeile
  • Verknüpfen einer Auswahl von Shapes mit einer oder mehreren Datenzeilen
  • Verknüpfen mehrerer Shapes mit mehreren Datenzeilen

Wenn Sie die genaue Zuordnung von Form zu Daten nicht kennen, können Sie Visio außerdem anweisen, die bestmögliche Übereinstimmung, basierend auf den von Ihnen bereitgestellten begrenzten passenden Informationen zu erzielen.

Verknüpfen eines einzelnen Shapes mit einer Datenzeile

Um ein einzelnes Shape mit einer einzelnen Datenzeile zu verknüpfen, müssen Sie die Shape.LinkToData-Methode verwenden. Diese Methode übernimmt eine Datensatz-ID und Datenzeilen-ID sowie ein optionales Boolean-Flag, das angibt, ob die verknüpften Daten in einer Datengrafik angezeigt werden sollen. Standardmäßig wird die Datengrafik angezeigt.

Verknüpfen mehrerer Shapes mit Daten

Mit zwei Elementen des Selection-Objekts, der Selection.LinkToData- und der Selection.AutomaticLink-Methode sowie der Page.LinkShapesToDataRows-Methode können Sie ein oder mehrere Shapes in einer Auswahl mit Daten verknüpfen.

Die Selection.LinkToData-Methode funktioniert ähnlich wie die gleiche Methode des Shape-Objekts, sie verknüpft jedoch eine Auswahl von Shapes (statt nur ein einzelnes Shape) mit einer einzelnen Datenzeile.

Wenn Sie unsicher sind, welche Beziehung zwischen Shapes und Datenzeilen besteht, jedoch wissen, dass zwischen einem bestimmten Attribut jedes Shapes und den Daten in einer Spalte des Datensatzes eine Übereinstimmung vorliegt, stellt die Selection.AutomaticLink-Methode eine Möglichkeit bereit, eine Auswahl vorhandener Shapes mit mehreren Datenzeilen zu verknüpfen. Beachten Sie, dass es sich dabei für alle Shapes um dasselbe Attribut handeln muss. Weitere Informationen zu dieser Methode finden Sie unter Automatisches Verknüpfen mit Daten.

Die Page.LinkShapesToDataRows-Methode ähnelt insofern der Selection.LinkToData-Methode, als sie mehrere Shapes verknüpft. Sie verwenden diese Methode jedoch, um Shapes auf derselben Seite zu verknüpfen, statt Shapes in einer Auswahl. Die LinkShapesToDataRows -Methode verknüpft Shapes mit mehreren Datenzeilen, die LinkToData-Methode jedoch mehrere Shapes mit einer einzelnen Zeile. Um Shapes zu verknüpfen, müssen Sie ein Arraypaar an die LinkShapesToDataRows -Methode übergeben: ein Array für Shapes und ein Array für Datenzeilen. Beachten Sie, dass sich die übereinstimmenden Arraypositionen entsprechen müssen. Daraus folgt beispielsweise, dass das Shape bei Position 1 im Shape-Array mit den Daten an Position 1 im Datenzeilenarray verknüpft ist. Beim Aufruf der Methode können Sie optional angeben, ob eine vorhandene Datengrafik auf verknüpfte Shapes angewendet werden soll.

Automatisches Verknüpfen mit Daten

Sie können die Selection.AutomaticLink-Methode verwenden, um Shape-Datenwerte in ausgewählten Shapes (d. h., einem Auswahlobjekt zugewiesenen Shapes) automatisch mit Datenzeilen in einem Datensatz zu verknüpfen (d. h., ohne die genaue Beziehung zwischen allen Shapes und Datenzeilen anzugeben). Um Visio ausreichend Informationen zum Erstellen der Verknüpfungen bereitzustellen, müssen Sie jedoch mindestens eine Gruppe übereinstimmender Daten angeben: den Namen einer Spalte in der Datenbank, einen Shape-Attributtyp, und gegebenenfalls einen Shape-Wert, alle an derselben Indexposition des entsprechenden Arrays, das Sie an die Methode übergeben.

Der Shape-Attributtyp gibt das Attribut des Shapes an, auf dem der Abgleich basiert. Das Attribut kann der Wert eines Shape-Datenelements sein (zuvor als benutzerdefinierter Eigenschaftswert bezeichnet), Shape-Text oder ein anderer der in der VisAutoLinkFieldTypes-Aufzählung angegebenen Werte.

Hinweis

Angenommen Sie, Ihre Zeichnung enthält eine Auswahl von Shapes, die verschiedene Mitarbeiter darstellen. Der Shape-Text bezeichnet die Shapes, was in diesem Fall die entsprechenden Namen der Mitarbeiter wären. (Sie können einige der Mitarbeiternamen aus der OrgData.xls Arbeitsmappe verwenden, die im Lieferumfang von Visio enthalten ist, und dann eine Verbindung mit dieser Datenquelle herstellen. Standardmäßig wird OrgData.xls unter folgendem Pfad installiert: C:\Programme\Microsoft Office\Office15\Visio Content[ langID], wobei langID je nach Land oder Region variiert.) Auf einigen Computern kann der Pfad "Programme (x86)" anstelle von "Programme" enthalten.

Um eine Verbindung zwischen diesen Shapes und einer Datenbank herzustellen, in der ein Mitarbeiterdatensatz eine Zeile der Datenbank einnimmt, geben Sie die folgenden Parameter an die AutomaticLink-Methode weiter:

  • DataRecordsetID – Der Wert der ID-Eigenschaft des DataRecordset-Objekts, das die zu verknüpfende Datenzeile enthält. Im folgenden Beispiel wird ein bereits vorhandener Datensatz an die Prozedur übergeben und dessen ID abgerufen.
  • ColumnNames() – Ein Zeichenfolgearray, das aus den Namen der Spalten in der Datenbank besteht. Mindestens eine Position im Array muss einen Wert aufweisen, der mit den Werten der gleichen Position in den AutoLinkFieldTypes- und FieldNames-Arrays übereinstimmt. Im folgenden Beispiel geben wir ein Array weiter, das als Spaltennamen "Name" bei Arrayposition 0 enthält.
  • AutoLinkFieldTypes() – Ein Array von Long-Werten aus der VisAutoLinkFieldTypes-Aufzählung, die aus Shape-Attributtypen besteht. Mindestens eine Position im Array muss einen Wert aufweisen, der mit den Werten der gleichen Position in den ColumnNames- und FieldNames-Arrays übereinstimmt. Im folgenden Beispiel wird der Aufzählungswert visAutoLinkShapeText bei Arrayposition 0 weitergegeben.
  • FieldNames() – Ein Zeichenfolgenarray, das aus Shape-Werten besteht. Mindestens eine Position im FieldNames-Array muss einen Wert aufweisen, der mit den Werten an der gleichen Position in den ColumnNames- und AutoLinkFieldTypes-Arrays übereinstimmt.
  • Für die meisten Werte von AutoLinkFieldTypes, z. B. visAutoLinkShapeText, ist es nicht erforderlich, den FieldNames-Wert anzugeben. Sie können stattdessen den NULL-Wert übergeben. Das ist in unserem Beispiel der Fall, wir geben also eine leere Zeichenfolge weiter. Wenn Sie jedoch die VisAutoLinkCustPropsLabel-, visAutoLinkUserRowName-, visAutoLinkPropRowNameU- oder visAutoLinkUserRowNameU-Werte von AutoLinkFieldTypes übergeben, müssen Sie einen Wert für FieldNames übergeben, um das Shape-Datenelement vollständig anzugeben, das mit dem Datenspaltennamen verglichen werden soll.
  • AutoLinkBehavior – Ein Wert aus der VisAutoLinkBehaviors-Aufzählung. Diese aufgezählten Werte stellen Optionen zum Anpassen der Methode bereit, beispielweise zum Ersetzen vorhandener Verknüpfungen durch neue. Das folgende Beispiel gibt den Standardwert 0 weiter.
  • ShapeIDs() – Ein Array, das die Methode bei der Rückgabe mit den IDs der verknüpften Shapes füllt.

Das folgende Beispiel zeigt eine Möglichkeit zur Verwendung der AutomaticLink-Methode zum automatischen Verknüpfen von Shapes und Daten. In dem Beispiel wird davon ausgegangen, dass Sie wie oben erläutert eine Verbindung zwischen Ihrer Zeichnung und den Daten in der Arbeitsmappe "OrgData.xls" hergestellt haben. Beachten Sie, dass das für dem Code die erste Datenspalte die Bezeichnung "Name" tragen muss, wie es in der Datei "OrgData.xls" der Fall ist. Beachten Sie außerdem, dass der Shape-Text der einzelnen Shapes in Ihrer Zeichnung, die Sie mit Daten verknüpfen möchten, mit einem der Namen in der Spalte "Name" in der Datei "OrgData.xls" übereinstimmen muss.

Public Sub LinkToDataAutomatically(vsoDataRecordset As Visio.DataRecordset) 
 
    Dim vsoSelection As Visio.Selection 
    Dim columnNames(1) As String 
    Dim fieldTypes(1) As Long 
    Dim fieldNames(1) As String 
    Dim shapesLinked() As Long 
 
    columnNames(0) = "Name" 
    fieldTypes(0) = Visio.VisAutoLinkFieldTypes.visAutoLinkShapeText 
    fieldNames(0) = "" 
    ActiveWindow.DeselectAll 
    ActiveWindow.SelectAll 
    Set vsoSelection = ActiveWindow.Selection 
    vsoSelection.AutomaticLink vsoDataRecordset.ID, _ 
                    columnNames, _ 
                    fieldTypes, _ 
                    fieldNames, 0, shapesLinked 
 
End Sub

Mit folgenden Methoden können Sie ermitteln, welche Shapes mit Daten verknüpft sind. Zu wissen, wie Shapes mit Daten verknüpft sind, kann dabei helfen, Konflikte und fehlerhafte Verknüpfungen zu vermeiden:

Wie die Namen schon sagen, können Sie die Methoden Shape.BreakLinkToData und Selection.BreakLinkToData verwenden, um vorhandene Verknüpfungen zwischen Shapes und Daten programmgesteuert aufzuheben. Außerdem können diese Verknüpfungen durch die verschiedenen an der Benutzeroberfläche vorgenommenen Änderungen aufgehoben werden. Wenn Benutzer beispielsweise einen Datensatz, eine verknüpfte Zeile oder ein verknüpftes Shape löschen oder Benutzer im Kontextmenü eines Shapes auf Verknüpfung mit Zeile aufheben klicken oder die Verknüpfung zu einem Kontextmenü einer Zeile aufheben, können fehlerhafte Verknüpfungen auftreten.

Außer wenn ein Benutzer einen Datensatz, eine Zeile oder ein Shape aus der Benutzeroberfläche löscht, lösen all diese Aktionen das Shape.ShapeLinkDeleted-Ereignis aus. Sie können auch die im vorherigen Abschnitt aufgeführten Methoden verwenden, um den Verknüpfungsstatus zu ermitteln.

Abrufen und Festlegen von Datenspalten-Eigenschaften

Jedes DataRecordset-Objekt enthält eine DataColumns-Sammlung aller DataColumn-Objekte, die dem DataRecordset-Objekt zugeordnet sind. Mit diesen Objekten können Sie Datenspalten Zellen im Datenabschnitt des ShapeSheet zuordnen.

Im folgenden Beispiel wird veranschaulicht, wie Sie den Wert der Zelle "Bezeichnung" im Abschnitt "Shape-Daten" für die erste Spalte im Datensatz abrufen können, der an die Methode weitergegeben und im Direktfenster angezeigt wird. Anschließend wird der Wert festgelegt und der neue Wert angezeigt.

Indem dieser Wert geändert wird, wird die Bezeichnung des Shape-Datenelements für alle mit Zeilen im Datensatz verknüpfte Shapes im Dialogfeld Shape-Daten geändert. Um den Bezeichnungszellenwert abzurufen und festzulegen, geben wir den visDataColumnPropertyDisplayName -Wert aus der VisDataColumnProperties -Aufzählung an die DataColumn.GetProperty - und DataColumn.SetProperty -Methoden weiter.

Public Sub ChangeColumnProperties(vsoDataRecordset As Visio.DataRecordset) 
 
    Dim strPropertyName As String 
    Dim strNewName As String 
    Dim vsoDataColumn As Visio.DataColumn 
 
    strNewName = "New Property Name" 
    Set vsoDataColumn = vsoDataRecordset.DataColumns(1) 
    strPropertyName = vsoDataColumn.GetProperty(visDataColumnPropertyDisplayName) 
    Debug.Print strPropertyName 
 
    vsoDataColumn.SetProperty visDataColumnPropertyDisplayName, strNewName 
    strPropertyName = vsoDataColumn.GetProperty(visDataColumnPropertyDisplayName) 
    Debug.Print strPropertyName 
 
End Sub

Aktualisieren von verknüpften Daten und Beheben von Konflikten

Wenn Daten in der Datenquelle geändert werden, mit der Ihre Zeichnung verbunden ist, können Sie die Daten in Ihrer Visio-Zeichnung aktualisieren, damit diese Änderungen widergespiegelt werden. Sie können angeben, dass Visio die Daten in einem bestimmten Intervall aktualisiert, indem Sie die DataRecordset.RefreshInterval-Eigenschaft festlegen. Sie können Daten programmgesteuert aktualisieren, indem Sie die DataRecordset.Refresh -Methode aufrufen.

Außerdem können Sie ggf. vorhandene Konflikte in der Beziehung zwischen Shapes und Datenzeilen beheben. Konflikte können beispielsweise auftreten, wenn Sie den Datensatz und einige Datenzeilen aktualisieren, die vor dem Aktualisierungsvorgang mit Shapes verknüpft waren, die nicht mehr existieren, da Änderungen an der Datenquelle vorgenommen wurden. Andere Konflikte sind möglich, wenn zwei oder mehr Zeilen im aktualisierten Datensatz identische Primärschlüssel aufweisen.

Automatisches Aktualisieren von verknüpften Daten

Wenn Sie ein DataRecordset-Objekt erstellen, wird der RefreshInterval-Eigenschaftswert auf den Standardwert 0 festgelegt. Diese Einstellung gibt an, dass Daten nicht automatisch aktualisiert werden. Indem Sie das DataRecordset.RefreshInterval auf einen positiven Long -Wert festlegen, können Sie den Zeitraum zwischen den automatischen Aktualisierungen in Minuten angeben. Das Mindestintervall beträgt eine Minute. Diese Einstellung entspricht dem Wert, den ein Benutzer im Dialogfeld Aktualisierung konfigurieren.

Um das Datum und die Uhrzeit des letzten Aktualisierungsvorgange zu ermitteln, müssen Sie die DataRecordset.TimeRefreshed-Eigenschaft abrufen.

Außerdem können Sie mit der DataRecordset.RefreshSettings-Eigenschaft die automatischen Datenaktualisierungen anpassen. Indem Sie diese Eigenschaft auf eine Kombination von Werten in der VisRefreshSettings -Aufzählung festlegen, können Sie angeben, dass eine oder beide der folgenden Dinge eintritt:

  • Die Benutzeroberfläche zum Beheben von Aktualisierungskonflikten (der Aufgabenbereich Konflikte aktualisieren) ist deaktiviert. (Weitere Informationen erhalten Sie im nächsten Abschnitt.)
  • Aktualisierungsvorgänge überschreiben automatisch an den Daten in der Benutzeroberfläche vorgenommene Änderungen. Der Standardwert für diese Eigenschaft lautet 0, d. h. keines dieser Ereignisse tritt auf.

Identifizieren von Datensatzzeilen für Aktualisierungsvorgänge

Da Shapes nach ihren Shape-IDs mit bestimmten Datenzeilen verknüpft werden, wenn Visio verknüpfte Daten aktualisiert, muss es ermitteln, welche Zeilen in den verknüpften Datensätzen hinzugefügt, geändert oder entfernt wurden, seitdem die Daten zuletzt gespeichert wurden. Um diese Zeilen zu ermitteln, verwendet Visio die Zeilen-IDs, die den Zeilen in dem Datensatz zugewiesen sind. Visio kann diese Zeilen-IDs in zweierlei Hinsicht zuweisen, je nachdem, ob Sie beim Erstellen des Datensatzes Primärschlüssel ausgewählt haben.

Aktualisieren von Datensätzen, die keine Primärschlüssel besitzen

Wenn Sie einen Datensatz erstellen, weist Visio allen Zeilen im Datensatz auf Grundlage der vorhandenen Sortierung der Zeilen in der Datenquelle Zeilen-IDs zu. Deshalb wird der ersten Zeile im Datensatz immer Zeilen-ID 1 zugewiesen, und der zweiten Zeilen-ID 2 usw.

Anschließend können Sie Datenzeilen aus der ursprünglichen Datenquelle entfernen oder hinzufügen. Wenn Sie anschließend die Daten aktualisieren, spiegelt der Datensatz diese Änderungen wieder. Dadurch kann es vorkommen, dass sich die Zeilenreihenfolge im Datensatz ändert.

Wenn in einem fünfzeiligen Datensatz beispielsweise die vierte Zeile in der Datenquelle entfernt wird, wenn Visio den mit der Datenquelle verbundenen Datensatz aktualisiert, wird die fünfte Zeile im Datensatz die neue vierte Zeile, und sie erhält Zeilen-ID 4. Zeilen-ID 5 wird aus dem Datensatz entfernt.

Das hat zur Folge, dass mit Zeilen-ID 5 verknüpfte Shapes ihre Verknüpfungen verlieren, und mit Zeilen-ID 4 verknüpfte Shapes nun Daten aus der Zeile abrufen, die zuvor an fünfter Stelle stand. Wie Sie sehen können, führt das nicht Zuweisen von Primärschlüsseln zu Datensätzen beim Erstellen zu fehlerhaften Verknüpfungen zwischen Shapes und Daten oder in Visio werden beim Verknüpfen von Shapes mit Zeilen werden sie nicht mit den Zeilen verknüpft, mit denen sie verknüpft werden sollten.

Aktualisieren von Datensätzen mit Primärschlüsseln

Sie können dabei helfen, zu verhindern, dass diese fehlerhaften oder nicht übereinstimmenden Verknüpfungen auftreten, indem Sie den Datensätzen Primärschlüssel zuweisen. Ein Primärschlüssel ermittelt den Namen der Datenspalte oder -spalten, die eindeutige Bezeichner für die einzelnen Zeilen enthalten. Der Wert in der Primärschlüsselspalte für die einzelnen Zeilen ermittelt die Zeile im Datensatz eindeutig. Primärschlüssel sind oftmals ID-Werte, Sie können jedoch jede beliebige Spalte oder Spaltenkombination als Primärschlüssel festlegen. Um beim Aktualisieren von Daten jedoch konsistente Ergebnisse zu erzielen, ist es jedoch entscheidend, den Primärschlüsselspaltenwert (oder den Wertesatz für mehrere Primärschlüsselspalten) für jede Zeile eindeutig zu gestalten.

Dadurch werden beim Aktualisieren oder Aktualisieren eines Datensatzes durch Visio, der Primärschlüssel enthält, dieselben Zeilen-IDs beibehalten, die sie bereits vor dem Aktualisierungsvorgang hatten. Da Visio die Shapes mit Datenzeilen nach ID verknüpft - Shape-ID oder Zeilen-ID - und die Zeilen-IDs nach dem Aktualisierungsvorgang gleich bleiben, bleiben datenverknüpfte Shapes mit der korrekten Zeile verknüpft. Beachten Sie, dass Zeilen-IDs für einen angegebenen Datensatz niemals erneut verwendet werden.

Sie können die DataRecordset.GetPrimaryKey-Methode verwenden, um den vorhandenen Primärschlüssel für einen Datensatz zu ermitteln, wenn einer angegeben ist. Diese Methode gibt die Primärschlüsseleinstellung für den Datensatz als Wert aus der VisPrimaryKeySettings -Aufzählung zurück. Sie können einzelne oder zusammengesetzte Primärschlüssel verwenden. Ein einzelner Schlüssel begründet die Zeilenermittlung auf den Werten einer einzelnen Spalte. Ein zusammengesetzter Primärschlüssel verwendet zwei oder mehr Spalten, um eine Zeile eindeutig zu ermitteln.

Wenn die Primärschlüsseleinstellung visKeySingle oder visKeyComposite lautet, gibt die Methode außerdem ein Array von Primärschlüssel-Spaltennamenzeichenfolgen zurück. Wenn die Primärschlüsseleinstellung visKeyRowOrder lautet (Standard), gibt die Methode ein leeres Array von Primärschlüsseln zurück.

Analog dazu können Sie die DataRecordset.SetPrimaryKey-Methode verwenden, um die Primärschlüsseleinstellung für den Datensatz, sowie den Namen der Spalte oder Spalten anzugeben, die Sie als Primärschlüsselspalte oder -spalten festlegen möchten. Vergewissern Sie sich beim Festlegen der Primärschlüssel, dass die von Ihnen als Primärschlüsselspalten ausgewählte Spalte oder Spalten eindeutige Werte (oder Wertesätze) für jede Zeile enthalten.

Programmgesteuertes Aktualisieren von verknüpften Daten

Um einen verknüpften Datensatz programmgesteuert zu aktualisieren, müssen Sie die DataRecordset.Refresh-Methode aufrufen.

Indem Sie diese Methode aufrufen, wird die dem Datensatz zugewiesene Abfragezeichenfolge ausgeführt und anschließend werden die verknüpften Shapes mit den von der Abfrage zurückgegebenen Daten aktualisiert. Indem Sie die Refresh-Methode zu einem bestimmten DataRecordset-Objekt aufrufen, werden alle anderen DataRecordset-Objekte im Zusammenhang mit dem gleichen DataConnection-Objekt aktualisiert (d. h. sie besitzen den gleichen Wert für die DataConnection-Eigenschaft). DataRecordset-Objekte, die den gleichen DataConnection-Eigenschaftswert besitzen, werden als durchgeführte Datensätze bezeichnet.

Wenn das Aufrufen von Refresh zu Konflikten führt, zeigt Visio den Aufgabenbereich Konflikte aktualisieren in der Benutzeroberfläche an, sofern Sie die RefreshSettings-Eigenschaft nicht so festgelegt haben, dass der visRefreshNoReconciliationUI-Aufzählungswert eingeschlossen wird.

Bevor Sie verknüpfte Daten aktualisieren, müssen Sie die DataRecordset.CommandString-Eigenschaften auf einen neuen Wert festlegen, wenn Sie die Abfrage ändern möchten, die Visio verwendet, um die Daten abzurufen und damit eine andere Tabelle in derselben Datenbankeigenschaft auf einen neuen Wert abzufragen. Um eine Verbindung zu einer komplett neuen Datenquelle herzustellen, müssen Sie die beiden DataRecordset.CommandString- und DataConnection.ConnectionString-Eigenschaftswerte festlegen.

Die DataRecordset.GetLastDataError-Methode ruft den Active X-Datenobjekt-Fehlercode (ADO), die ADO-Beschreibung und die Datensatz-ID des zuletzt aufgetretenen Fehlers auf, die beim Hinzufügen eines neuen Datensatzes oder Aktualisieren der Daten in einem vorhandenen Datensatz aufgetreten sind.

Identifizieren und Beheben von Konflikten

Wenn Sie oder Visio Daten aktualisiert und ein Konflikt auftritt, können Sie die DataRecordset.GetAllRefreshConflicts- und DataRecordset.GetMatchingRowsForRefreshConflict-Methoden verwenden, um zu ermitteln, warum der Konflikt auftrat. Die GetAllRefreshConflicts -Methode gibt einen Array von Shapes zurück, für die ein Konflikt zwischen den Daten im Shape und den Daten in der Datensatzzeile vorliegt, mit der das Shape verknüpft ist. Um zu ermitteln, welche Datensatzzeilen den Konflikt generiert haben, können Sie anschließend die einzelnen Shapes an die GetMatchingRowsForRefreshConflict -Methode übergeben, die einen Array von Zeilen zurückgibt, für die ein Konflikt vorliegt.

Zeilen im Datensatz können zu einem Konflikt führen, wenn zwei oder mehr davon identische Primärschlüssel aufweisen, und möglicherweise eine Verknüpfung zu demselben Shape aufweisen. Wenn dieser Fall auftritt, gibt GetMatchingRowsForRefreshConflict ein Array zurück, das mindestens zwei Zeilen-IDs enthält.

Konflikte können außerdem auftreten, wenn eine vorherige datenverknüpfte Zeile aus dem Datensatz entfernt wurde. Wenn dieser Fall auftritt, gibt die Methode einen leeren Array zurück.

Um den Konflikt zu beheben, müssen Sie das Shape an die DataRecordset.RemoveRefreshConflict-Methode übergeben, sodass die widersprüchlichen Informationen aus dem aktuellen Dokument entfernt werden.

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.