COM Interfaces

Beschreibung der COM Interfaces

Standard

|

Expert

CLOUD ABO

|

ON-PREMISES

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erzeugt: 26.06.2003
Aktualisiert: 13.07.2023 | SetResourcePlanValue funktioniert nicht mit Planungsbearbeitern

Ein Interface im Sinne von COM beschreibt die Eigenschaften und Funktionen, welche ein COM Objekt zur Verfügung stellt.

Je nachdem, ob via COM die Desktop App (lokaler COM-Server) oder die Cloud App (Proxy für die Verbindung zum COM-Server) angesprochen wird, heissen die Interfaces unterschiedlich. Die Verwendung ist jedoch gleich, die aufrufende Applikation muss keine Unterscheidung machen.

Die unten aufgelisteten Interface Namen sind nach dem Schema COM-Name / Proxy-Name.

Alle Beispiele sind in Visual Basic geschrieben.

IVtcSession / ComCoClass

Dies ist das Standard-Interface des Vertec COM Servers. CreateObject("Vertec.App") liefert als Ergebnis eine Session Referenz. Ausgehend von IVtcSession/ComCoClass können andere Objekte angefordert werden.

Dim Vertec As Object
Set Vertec = CreateObject("Vertec.App")
Eigenschaft / Funktion Beschreibung
ArgObject

Liefert das zur Zeit aktuelle Objekt (aktueller Eintrag) in Vertec. Dies ist der Eintrag, welcher im aktiven Fenster von Vertec als Haupteintrag ausgewählt ist.

Der Typ des zurückgegebenen Interfaces entspricht dem Typ des aktuellen Objekts.

BeginSystemContext / EndSystemContext
Schaltet Vertec innerhalb dieser beiden Befehle auf erweiterte Berechtigungen. Kann via COM nur angewendet werden, wenn Vertec mit dem Parameter /SUPER gestartet wurde und der Administrator eingeloggt ist. Sonst führt der Aufruf zu einem Fehler.
CreateList(classname as string)

Erstellt eine neue leere Vertec Liste für Einträge des angegebenen Typs (classname).

Set Projektbearbeiter = Vertec.ArgObject
Set ObjectList = Vertec.CreateList("Projektbearbeiter")
ObjectList.Add Projektbearbeiter
CreateObject(classname as string)
Erzeugt ein neues Objekt in Vertec. Als Parameter muss der Klassenname des Objekts übergeben werden. Als Ergebnis liefert die Funktion eine Interface-Referenz des neu erzeugten Objekts.
DisableEvents / EnableEvents
Schaltet das Event-Script System vorübergehend aus. Kann via COM nur angewendet werden, wenn Vertec mit dem Parameter /SUPER gestartet wurde und der Administrator eingeloggt ist. Sonst führt der Aufruf zu einem Fehler.
Eval(expression as string)

Diese Funktion wertet eine beliebige OCL-Expression aus. Das Ergebnis wird als Variant zurückgegeben und kann je nach OCL-Expression als String, Integer, Float, Boolean oder Object interpretiert werden.

Vorsicht: Eval mit einer OCL-Expression lädt alle zu ihrer Berechnung notwendigen Objekte aus der Datenbank. In gewissen Fällen kann dies zu Performance-Problemen oder grossem Memory-Bedarf führen. Für Abfragen grösserer Mengen gleicher Objekte ist GetWithSQL vorzuziehen.

EvalToVariable(root as object, expression as string, varname as string)

Damit können Werte in Variablen geladen werden, die dann in OCL-Expressions verwendet werden können.

Zum Beispiel sollen Leistungen ab einem bestimmten Zeitpunkt angezeigt werden. Statt nun die Leistungen in der Art "offeneLeistungen->select(datum >=" & encodeDate(2023, 03, 01) & ") " zusammenzusuchen, kann zuerst eine Variable gesetzt:

Vertec.EvalToVariable Vertec.ArgObject, "encodeDate(2023,03,01)", "varVon"

und dann in OCL verwendet werden:

offeneLeistungen->select(datum >= varVon)

Die Expression wird auf dem angegebenen Root-Objekt ausgewertet. Es kann also auch eine Expression der Art:

Vertec.EvalToVariable Vertec.ArgObject, "projekt.rechnungen->reject(proforma)", "Rechlist"

angegeben werden.

ExecuteFileReport
(templatepath As String,
rootObj As IVtcObject,
[optarg As IVtcObject],
[filename As String],
[subject As String],
[text As String],
[linkToRoot As Boolean = Falsch], [linkToOptarg As Boolean = Falsch],
[showWord As Boolean = Wahr]) As Object

Diese Funktion kann nur im Betrieb mit der Desktop App verwendet werden. Sie erlaubt es, einen Legacy Office-Bericht aufzurufen.

  • templatepath: Pfad zur Vorlage.
  • rootObj: Das Vertec Objekt, für das der Report ausgeführt werden soll.
  • optarg: Entspricht der optionalen Adresse auf dem Druckdialog. Optionales Argument. Wenn nicht verwendet, Parameter mit nothing angeben.
  • filename: Speicherpfad des neu erzeugten Dokuments. Optional. Kann absolut als gesamter Pfad oder als Filename angegeben werden (relativ, verwendet als Pfad den Dokpfad des rootObj). Ist nichts angegeben, wird das Dokument nicht gespeichert. Die Parameter linkToRoot und linkToOptarg kann nur erfolgen, wenn das Dokument gespeichert wird.
  • subject: Entspricht dem Betreff auf dem Druckdialog. Optional.
  • text: Entspricht dem Kommentar auf dem Druckdialog. Optional.
  • linkToRoot: Verknüpft das Dokument mit dem Hauptobjekt (Häkchen Auf Hauptobjekt auf dem Druckdialog). Optional. Standard: Nein. Die Verknüpfung kann nur erfolgen, wenn der Bericht gedruckt wird (siehe Parameter filename).
  • linkToOptarg: Verknüpft das Dokument mit der zugehörigen Adresse (Häkchen Auf Adresse auf dem Druckdialog). Optional. Standard: Nein. Die Verknüpfung kann nur erfolgen, wenn der Bericht gedruckt wird (siehe Parameter filename).
  • showWord: Öffnet das erstellte Dokument im Word und zeigt es auf dem Bildschirm an. Optional. Standard: Ja.

Beispiel Aufruf mit allen Parametern:

Set Vertec = CreateObject("Vertec.App")
Set Projekt = Vertec.ArgObject

Set Dok = Vertec.ExecuteFileReport("V:\Reports\Brief.dotx", Projekt, Nothing, "Brief.docx", "", "", True, False, True)

Um das Dokument zu drucken, kann

Dok.PrintOut

aufgerufen werden.

GetObjectByID(ID: String or int)

Gibt das Objekt mit der entsprechenden ID zurück. Als ID muss die Interne Id des Objekts angegeben werden, als String oder als Integer.

Set Obj = Vertec.GetObjectByID(2880)
Set Obj = Vertec.GetObjectByID("2880")

Ist kein Objekt mit dieser ID vorhanden, wird ein Fehler geworfen.

GetWithSQL(className as String, SQLWhere as String, SQLOrder as String)

Liefert das Ergebnis einer SQL-Abfrage auf einer bestimmten Vertec Klasse. Das heisst es werden per SQL alle Objekte einer bestimmten Klasse nach den angegebenen Kriterien (SQL Select, Where Clause) ausgewählt und in einer Liste zurückgegeben.

Der ausführende Benutzer muss über Administratorenrechte oder über das SQL Query Recht verfügen.

Im Gegensatz zu Eval werden nur die der SQL-Bedingung entsprechenden Objekte aus der Datenbank geladen. Beispiel:

Dim List as Object
Set List = Vertec.GetWithSQL("adresseintrag", "name like 'A%'", "name")
InputBox (Titel as String, Prompt as String, Default as String): String

Zeigt einen Eingabedialog mit Titel, Prompt-Text und Eingabefeld mit Defaultwert an.

  • Titel: Der Titel der Inputbox. Soll die Inputbox keinen Titel haben, geben Sie einen Leerstring an.
  • Prompt: Der Text, der angezeigt werden soll
  • Default: Der Text, der als Standardantwort im Feld angezeigt werden soll. Möchten Sie das Eingabefeld leer anzeigen, geben Sie hier einen Leerstring an.
Wert = Vertec.InputBox("Vertec", "Wie lautet Ihr Name?", "")

Rückgabewerte:

  • Wenn der Benutzer OK klickt (oder Enter drückt), wird der Inhalt der Textbox zurückgegeben.
  • Wenn der Benutzer Abbrechen klickt, wird ein Leerstring zurückgegeben. Es kann also nicht unterschieden werden, ob der Benutzer nichts eingegeben oder abgebrochen hat.
MsgBox (Prompt as String, [Buttons as int], [Titel as String]): integer

Zeigt eine Messagebox an.

  • Prompt: Die Meldung, die angezeigt werden soll.
  • Buttons: optional. Standard: 0. Ein Integer-Wert wie folgt:
    0 OK
    1 OK, Abbrechen
    3 Ja, Nein, Abbrechen
    4 Ja, Nein
    16 Kritische Message: rotes X und OK-Button
    48 Warnung: gelbes Ausrufezeichen und OK-Button
    64 Information: Blaues i und OK-Button
  • Titel: optional. Standard: Leer. Titel der Messagebox.
Vertec.MsgBox "Dies ist mein Text.", 1, "Titel"

Der Rückgabewert gibt an, welcher Button geklickt wurde. Dies ist einer der folgenden Integer-Werte:

1 OK
2 Abbrechen
6 Ja
7 Nein

 Wird ein Wert abgefragt, dann muss die Funktion mit einer Klammer aufgerufen werden:

Wert = Vertec.MsgBox ("Dies ist mein Text.", 1, "Vertec")
If Wert = 1 then
    ...
ScriptExecute(scripttext As String, [ArgObject As Object])
 

Ermöglicht den Aufruf eines Vertec Scripts. Der ausführende Benutzer muss über Administratorenrechte bzw. über das Recht verfügen, dieses Script auszuführen..

  • scripttext: Als Scripttext wird der Code übergeben. Dies kann der Text eines in Vertec registrierten Scripts oder ein Codetext sein.
  • ArgObject: Mit diesem Parameter können Sie das Objekt angeben, auf dem das Script ausgeführt werden soll. Wird dieser Parameter weggelassen, wird das Script auf dem aktuellen Vertec-Objekt aufgerufen.
Dim Script As Object
Dim Scripttext As String

Set Script = Vertec.ArgObject
Scripttext = Script.Member("scripttext")
Vertec.ScriptExecute (Scripttext)
SetObjVariable(Variablenname, Wert)

Setzt eine Objektvariable in OCL. Beispiel:

Vertec.SetObjVariable "myProjekt", proj

Auf diese kann anschliessend in OCL-Expressions via Variablenname zugegriffen werden:

offeneLeistungen->select(projekt=myProjekt)->size

Der Unterschied zu EvalToVariable (siehe oben) besteht darin, dass hier einfach ein Objekt übergeben wird, ohne Auswertung einer Expression.

SetResourcePlanValue(bearbeiter, projekt, phase, datum, intervalTyp, value)

Ermöglicht das Setzen von Ressourcenplanwerten via Script.

  • bearbeiter: Projektbearbeiter, auf welchem Ressourcen geplant werden. Funktioniert nicht mit Planungsbearbeitern.
  • projekt: Wenn die Planungsebene auf Projekt eingestellt ist: Das Projekt, auf welches geplant wird. Sonst: Nothing.
  • phase: Wenn die Planungsebene auf Phase eingestellt ist: Die Projektphase, auf welche geplant wird. Sonst: Nothing.
  • datum: Es wird die Periode genommen, in welcher sich das Datum befindet.
  • intervalTyp: Wird ab Vertec 6.6 nicht mehr beachtet, da das Planungsintervall fix ist und immer aus den Systemeinstellungen genommen wird. Vorher: 0 = Tag, 1 = Woche, 2 = Monat.
  • value: Wert in Minuten
Set Projektbearbeiter = Vertec.User
Set Projekt = Vertec.ArgObject

Vertec.SetResourcePlanValue Projektbearbeiter, Projekt, Nothing, Vertec.Eval("encodeDate(2023,04,24)"), 0, 540
ShowForm(obj As Object)

Methode zum Aufrufen des Detailfensters des als Argument übergebenen Vertec Objekts.

Zu beachten ist, dass sich damit das ArgObject, also das aktuelle Objekt in Vertec, ändert.

Vertec.ShowForm Projekt
Translate(text As String) As String

Übersetzt einen Text in die aktuelle Oberflächensprache.

Wert = Vertec.Translate("Projektbearbeiter")
UpdateDatabase

Vertec.UpdateDatabase schreibt alle nicht gespeicherten Daten in die Datenbank.

Speichert Änderungen in die Datenbank und validiert neu erstelle Objekte. Diese sind, sofern sie keine Regeln verletzen, danach nicht mehr ungültig.

User

Gibt den aktuell eingeloggten Benutzer zurück.

 

IVtcObject / VtcObjectProxy

Dies ist das Standard-Interface für alle Vertec Objekte.

Für gewisse Objekte wie Projekte, Rechnungen etc. sind eigene Interfaces definiert, welche von IVtcObject/VtcObjectProxy erben, d.h. die Eigenschaften und Funktionen von IVtcObject/VtcObjectProxy sind auch auf den Objekt-Interfaces vorhanden.

Eigenschaft / Funktion Beschreibung
AddTag(Tagname as String)

Fügt dem Objekt einen Tag hinzu.

Set Projektbearbeiter = Vertec.User
Projektbearbeiter.AddTag "mytag"

Kann mit RemoveTag(Name) wieder entfernt werden.

AsString

Liefert die Standardanzeige des Objekts als String.

Set Projektbearbeiter = Vertec.User
Debug.Print Projektbearbeiter.AsString

-> Christoph Keller

ClassName

Liefert den Klassennamen des Objekts als String.

Set Projektbearbeiter = Vertec.User
Debug.Print Projektbearbeiter.ClassName

-> Projektbearbeiter

DefaultInterface

Liefert bei Objekten mit speziellen Interfaces dieses, sonst IVtcObject/VtcObjectProxy.

Wird nicht mehr benötigt, da die Objekte selbst als Interface geliefert werden, so dass direkt damit gearbeitet werden kann.

Delete

Löscht das Objekt in Vertec. Liefert einen Fehler, wenn der eingeloggte Benutzer keine Berechtigung zum Löschen hat.

Set Obj = Vertec.ArgObject
Obj.Delete
Eval(expression as string)

Wertet eine OCL-Expression auf dem Objekt aus. Im Unterschied zu Eval, welches auf der Session (IVtcSession/ComCoClass) aufgerufen wird, wird hier die Expression direkt auf das Objekt angewendet.

Dim Projektbearbeiter as Object
Dim Projektliste as Object

Set Projektbearbeiter = Vertec.User
Set Projektliste = Projektbearbeiter.Eval("eigProjekte")
EvalAsString(expression as string)

Dasselbe wie Eval, es wird aber direkt die String Representation des Ergebnisses geliefert.

Dim Projektbearbeiter as Object
Dim Wert as String

Set Projektbearbeiter = Vertec.User
Wert = Projektbearbeiter.EvalAsString("stufe")
GetMLValue(Index, Language As String) As String
 

Sind auf dem Objekt Texte als Multi-Language Strings (MLStrings) vorhanden, können sie mit dieser Methode in den anderen Sprachen abgefragt werden.

  • Index: Name des Members
  • Language: Der jeweilige Languagecode (DE, DD, FR, IT, EN).
Set Taetigkeit = Leistung.Eval("typ")
Wert = Taetigkeit.GetMLValue("text", "EN")

Die Abfrage via Member (Taetigkeit.Member("text")) liefert den Wert immer in der aktuellen Oberflächensprache zurück.

Gesetzt werden die MLStrings via SetMLValue.

HasTag(tag As String) As Boolean

Fragt ab, ob ein bestimmter Tag auf dem Objekt existiert.

If Projektbearbeiter.HasTag("mytag") Then
    'Do Something
End If

Der Rückgabewert ist 1 (True) oder 0 (False).

IsOfType(typeName As String) As Boolean
 

Gibt an, ob das Objekt vom angegebenen Typ (Klassenname) ist. Beispiel:

Set Obj = Vertec.ArgObject
If Obj.IsOfType("Adresseintrag") Then
  Debug.Print "Ist ein Adresseintrag"
End If
If Obj.IsOfType("Person") Then
  Debug.Print "Ist sogar eine Person"
End If

Wie im Beispiel zu sehen, wird der gesamte Baum beachtet, also auch die Basisklassen.

LinkTo(target As Object, rolle As String)

Macht eine Verknüpfung (via Custom-Link-Typ) vom Objekt zum Ziel-Objekt (target) mit der angegebenen Rolle.

  • target: Das Objekt, mit welchem das aktuelle Objekt verknüpft werden soll
  • rolle: Die gewünschte Rolle kann auf zwei Arten angegeben werden:
    • Die Bezeichnung der Linkrolle auf dem entsprechenden Linktyp.
    • Die Eintrag Id des Linktyps, gefolgt von _A oder _B je nach Seite der Linkrolle.
Set Person = Vertec.GetObjectById(3045)
Set Firma = Vertec.GetObjectById(3174)

Person.LinkTo Firma, "VR-Mandate"
'oder
Person.LinkTo Firma, "vrlinktyp_A" 

Mit Unlink kann die Verknüpfung wieder gelöst werden.

Detaillierte Informationen dazu finden Sie im Artikel Operatoren und Methoden für Links.

Member(membername: string)

Lesezugriff auf das Member mit dem angegebenen Namen. Dies kann sowohl ein Attribut als auch ein Link (Objekt oder Objektliste) sein.

Set Projekt = Vertec.ArgObject
Set Kunde = Projekt.Member("kunde")
Nummer = Kunde.Member("standardtelefon")

Für den Schreibzugriff wird SetMember verwendet.

MemberCount (As Long)

Liefert die Anzahl Members eines Vertec Objekts.

MemberWithSQL(membName As String, sqlWhere As String, sqlOrder As String) As IVtcObjectList/VtcObjectListProxy

Erlaubt es, bei persistenten Multilink Members mittels SQL Filter nur eine Auswahl der verknüpften Objekte zu laden.

Der ausführende Benutzer muss über Administratorenrechte oder über das SQL Query Recht verfügen.

Dim Projekt As Object
Dim Rechlist As Object

Set Projekt = Vertec.Argobject
Set Rechlist = Projekt.MemberWithSQL("rechnungen", "datum between '01.01.2023' and '31.03.2023'", "nummer")
RemoveTag(Tagname as String)

Entfernt einen Tag vom Objekt.

Set Projektbearbeiter = Vertec.User
Projektbearbeiter.RemoveTag "mytag"

Tags können mit AddTag(Name) hinzugefügt werden.

SetKeyValue(key As String, Value)

Setzt einen Key-Value auf dem Objekt.

Set Projektbearbeiter = Vertec.User
Projektbearbeiter.SetKeyValue "Datum", Date
Projektbearbeiter.SetKeyValue "Checked", True

Für die Abfrage von Key-Values gibt es keine eigene Methode, sondern erfolgt via OCL:

Dim Datum As Date
Dim Checked As Boolean
Datum = Projektbearbeiter.Eval("keydate('Datum')")
Checked = Projektbearbeiter.Eval("keybool('Checked')")

Das Entfernen eines Key-Values geschieht über das Setzen des entsprechenden Keys mit Nothing bzw. Leerstring:

Projektbearbeiter.SetKeyValue "Datum", Nothing
Projektbearbeiter.SetKeyValue "Checked", ""
SetMember(membername, wert)

Schreibt den übergebenen Wert in das Member des angegebenen Namens. Der Wert kann sowohl ein Attribut als auch ein Link (Objekt) sein.

Set Projektbearbeiter = Vertec.User
Set Adresse = Vertec.ArgObject
Adresse.SetMember "betreuer", Projektbearbeiter
Adresse.SetMember "bemerkung", "Betreuer hinzugefügt"

Für den Lesezugriff wird Member(Name) verwendet.

SetMemberOutOfDate
(membername as string)

Die Methode setzt ein bestimmtes Member "out of date", so dass bei dem nächsten Zugriff erneut auf die Datenbank zugegriffen wird und so der aktuelle Wert drin steht.

Anwendungsfall: bei selbstgebauten Nummergeneratoren vor dem Zugriff auf ein Member "SetMemberOutOfDate" aufrufen, dann z.B. eins hochzählen, dann sofort "UpdataDatabase" aufrufen, so ist die Wahrscheinlichkeit klein, dass 2x die gleiche Nummer vergeben wird.

Die Methode kann auch auf derived Attributen benutzt und damit eine erneute Berechnung ausgelöst werden, ohne dass sich etwas geändert hat (wie das sonst bei derived Attributen der Fall ist).

SetMLValue(Index, Value As String, Language As String)
 

Setzt Texte als Multi-Language Strings (MLStrings) in den verschiedenen Sprachen.

  • Index: Name des Members
  • Value: Wert, den das Member erhalten soll
  • Language: Der jeweilige Languagecode (DE, DD, FR, IT, EN).
Taetigkeit.SetMLValue("text", "Vacanze", "IT")

Abgefragt werden die MLStrings via GetMLValue.

SetZusatzfeld(Name As String, Value As String)

Setzt den Wert des Zusatzfelds mit dem entsprechenden Namen als String. Kann nicht für Objekt-Zusatzfelder verwendet werden.

Bei Feldtypen <> Zeichen oder Text muss der String passend für den Feldtyp übergeben (Zahlen "0" bzw. "0.00", Boolean "0" oder "1" etc.) oder SetZusatzfeldAsVariant verwendet werden.

Bei Auswahl-Zusatzfeldern wird der String Wert übergeben.

Set Adresse = Vertec.ArgObject
Adresse.SetZusatzfeld "Druckoption", "Alles" 
Adresse.SetZusatzfeld "Checked", "1"
Adresse.SetZusatzfeld "Anmerkungen", "Kontrolliert"

Abgefragt werden die Zusatzfelder via Zusatzfeld(Name) oder ZusatzfeldAsVariant(Name).

SetZusatzfeldAsVariant(Name As String, Value)

Setzt den Wert des Zusatzfelds mit dem entsprechenden Namen als Variant. Kann für alle Zusatzfeld-Typen verwendet werden.

Bei Auswahl-Zusatzfeldern kann der Wert als String oder als Integer übergeben werden.

Set Adresse = Vertec.GetObjectById(3174)
Adresse.SetZusatzfeldAsVariant "Druckoption", 1
Adresse.SetZusatzfeldAsVariant "Checked", True
Adresse.SetZusatzfeldAsVariant "Anmerkungen", "Kontrolliert"
Set Bericht = Vertec.GetObjectById(51371)
Adresse.SetZusatzfeldAsVariant "Adressbericht", Bericht

Abgefragt werden die Zusatzfelder via Zusatzfeld(Name) oder ZusatzfeldAsVariant(Name).

Unlink(target: IVtcObject; rolle: string)

Entfernt eine Verknüpfung zum übergebenen Objekt mit der angegebenen Rolle.

Set Person = Vertec.GetObjectById(3045) 
Set Firma = Vertec.GetObjectById(3174) 
Person.Unlink Firma, "VR-Mandate"

Hinweis für Custom-Links: Ist darauf die Löschweitergabe konfiguriert, dann kann der Link nicht mit dieser Methode aufgelöst werden. Die Auflösung eines solchen Links ist nur durch Löschen eines der Linkpartner-Objekte möglich.

Mit LinkTo können Verknüpfungen erstellt werden.

Detaillierte Informationen dazu finden Sie im Artikel Operatoren und Methoden für Links.

UnloadObject

Entfernt das Objekt aus dem Vertec Objektspeicher. Muss mit Vorsicht verwendet werden, da anschliessende Zugriffe auf das entladene Objekt zu Fehlern führen können.

Zusatzfeld(zusatzfeldname as string)

Lesezugriff auf das Zusatzfeld. Gibt den Wert typunabhängig als String zurück (entspricht der OCL-Abfrage zusatzfeldasstring).

Falls ein Zusatzfeld den Wert NULL hat, wird ein Leerstring geliefert.

Bei Auswahlzusatzfeldern wird der String Wert geliefert.

Dim Druckoption As String
Dim Checked As String
Dim Anmerkung As String
Dim Bericht As String

Druckoption = Adresse.Zusatzfeld("Druckoption")
Checked = Adresse.Zusatzfeld("Checked")
Anmerkung = Adresse.Zusatzfeld("Anmerkungen")
Bericht = Adresse.Zusatzfeld("Adressbericht")

Geschrieben werden Zusatzfelder mit SetZusatzfeld oder SetZusatzfeldAsVariant.

ZusatzfeldAsVariant
(zusatzfeldname as string)

Lesezugriff auf das Zusatzfeld. Gibt den Wert abhängig vom Typ zurück. 

Falls ein Zusatzfeld den Wert NULL hat, so wird der Defaultwert für den Feldtyp geliefert (Zahlen 0 bzw. 0.00, String "").

Bei Auswahlzusatzfeldern wird der Integer Wert geliefert.

Dim Druckoption As Integer
Dim Checked As Boolean
Dim Anmerkung As String
Dim Bericht As Object

Druckoption = Adresse.ZusatzfeldAsVariant("Druckoption")
Checked = Adresse.ZusatzfeldAsVariant("Checked")
Anmerkung = Adresse.ZusatzfeldAsVariant("Anmerkungen")
Set Bericht = Adresse.ZusatzfeldAsVariant("Adressbericht")

Geschrieben werden Zusatzfelder mit SetZusatzfeld oder SetZusatzfeldAsVariant.

 

IVtcObjectList / VtcObjectListProxy

Alle Listenergebnisse (z.B. Rückgabewerte von Eval, Member etc.) werden durch ein IVtcObjectList/VtcObjectListProxy Interface dargestellt. Dieses hat folgende Eigenschaften und Funktionen:

Eigenschaft / Funktion Beschreibung
Add(obj As IVtcObject/VtcObjectProxy)

Fügt ein Objekt in die Liste ein:

Set Projektbearbeiter = Vertec.User
Set Bearbeiterlist = Vertec.CreateList("Projektbearbeiter")

Bearbeiterlist.Add Projektbearbeiter

Falls es sich bei der Liste um ein Link-Member eines Vertec Objekts handelt, dann wird effektiv eine neue Verknüpfung erzeugt:

Set Benutzergruppe = Vertec.ArgObject
Set Bearbeiterlist = Benutzergruppe.Eval("benutzer")

Bearbeiterlist.Add Projektbearbeiter
AddList(list As IVtcObjectList/VtcObjectListProxy)

Fügt die übergebene Liste der aktuellen Liste hinzu.

Set Benutzergruppe = Vertec.ArgObject
Set Benutzerlist = Benutzergruppe.Eval("benutzer")
Set Bearbeiterlist = Vertec.GetWithSQL("projektbearbeiter", "bold_id IN (Select Projektleiter FROM Projekt)", "name")

Benutzerlist.AddList Bearbeiterlist
Count As Long
Anzahl Objekte in der Liste.
Eval(expression As String)

Wertet die angegebene OCL Expression auf der Liste aus.

Set Projektbearbeiter = Vertec.User
Set Leistlist = Projektbearbeiter.Eval("offeneLeistungen")
Vertec.SetObjVariable "aktBearb", Projektbearbeiter

Set Projektliste = Leistlist.Eval("self->select(projekt.projektleiter=aktBearb)")
EvalAsString(expression As String) As String
Gleich wie Eval, das Ergebnis wird als String zurückgegeben.
Includes(item As IVtcObject/VtcObjectProxy) As Boolean

Gibt an, ob ein Objekt in der Liste vorhanden ist.

Set Projektbearbeiter = Vertec.User
Set Benutzergruppe = Vertec.ArgObject
Set Benutzerlist = Benutzergruppe.Eval("benutzer")

If Benutzerlist.Includes(Projektbearbeiter) Then
    ...
IndexOf(item As IVtcObject/VtcObjectProxy) As Long

Gibt die Position des angegebenen Objekts in der Liste an.

0-basiert. Falls nicht enthalten: -1.

Set Projektbearbeiter = Vertec.User
Set Benutzergruppe = Vertec.ArgObject
Set Benutzerlist = Benutzergruppe.Eval("benutzer")

i = Benutzerlist.IndexOf(Projektbearbeiter)
Objects(Index As Long) As Object

Liefert unter Angabe eines Index ein Objekt aus der Liste. 0-basiert.

Set Projektliste = Projektbearbeiter.Eval("eigProjekte")
For i = 0 To Projektliste.Count - 1
    Set Projekt = Projektliste.Objects(i)
    Projekt.SetMember "code", UCase(Projekt.Member("code"))
Next i
Remove(obj As IVtcObject)

Entfernt ein Objekt aus der Liste.

Falls es sich bei der Liste um ein Link-Member eines Vertec Objekts handelt, wird effektiv eine Verknüpfung gelöscht.

Es muss geprüft werden, ob sich das zu entfernende Objekt wirklich in der Liste befindet, sonst erscheint der Fehler Item not in List.

Set Projektbearbeiter = Vertec.User
Set Benutzergruppe = Vertec.Argobject
Set Benutzerlist = Benutzergruppe.Eval("benutzer")

If Benutzerlist.Includes(Projektbearbeiter) Then
    Benutzerlist.Remove Projektbearbeiter
End If
RemoveByIndex(Index As Long)

Entfernt ein Element aus der Liste aufgrund seines Indexes. 0-basiert.

Falls es sich bei der Liste um ein Link-Member eines Vertec Objekts handelt, wird effektiv eine Verknüpfung gelöscht.

Dabei muss beachtet werden, dass sich die Indizes der verbleibenden Objekte in der Liste ändern. Werden Elemente aufgrund der Indizes entfernt, empfehlen wir, dies in der Reihenfolge rückwärts zu tun.

Set Benutzergruppe = Vertec.ArgObject
Set Benutzerlist = Benutzergruppe.Eval("benutzer")

For i = Benutzerlist.Count - 1 To 0 Step -1
    Benutzerlist.RemoveByIndex (i)
Next i

 

Weitere Interfaces

Für gewisse Objekte wie Projekte, Rechnungen etc. sind eigene Interfaces definiert, welche von IVtcObject/VtcObjectProxy erben. Zusätzlich dazu verfügen diese Interfaces noch über eigene Funktionen, welche nur darauf zur Verfügung stehen, z.B. bei Rechnungen das Verbuchen oder Stornieren.

Interface Methoden
IAktivitaet / AktivitaetProxy SetPfad
ITimAuslage / TimAuslageProxy MakeOffen, MakeVerrechnet
ITimBearbeiter / TimBearbeiterProxy StartTimer, StopTimer
ITimLeistung / TimLeistungProxy MakeOffen, MakeVerrechnet, UpdateSatz
ITimRechnung / TimRechnungProxy Buchen, CreateBeleg, ImportZahlungen, MakeOffen, MakeVerrechnet, ManipulateToOriginalState, ManipulateToTotalBetrag, SetTotal, Stornieren
ITimSpesen / TimSpesenProxy MakeOffen, MakeVerrechnet
ITimWaehrung / TimWaehrungProxy GetKursTo

 

Vertec Type Library

Für Einsicht in den Objektkatalog, code completion und compile-time type checking kann die Vertec Type Library in der externen Applikation eingebunden werden. Hier im Beispiel verwenden wir zur Ansicht Microsoft Excel.

Als erstes referenzieren wir die Vertec Type Library. Dies geschieht im Visual Basic Editor über das Menü Extras > Verweise. Es öffnet sich folgendes Fenster:

In den verfügbaren Verweisen aktivieren wir die Vertec Typelibrary.

Nun haben wir Zugriff auf den Objektkatalog:

Objektkatalog

Über das Menü Ansicht > Objektkatalog oder die Funktionstaste F2 öffnet sich der Objektkatalog.

In der Combobox <Alle Bibliotheken> wählen wir Vertec aus. Folgende Ansicht erscheint:

Wird links eine Klasse markiert (hier im Beispiel das IVtcObject), werden rechts die dazugehörigen Methoden (als Symbol die grünen Würfel) und Eigenschaften (als Symbol die Hand) dargestellt.

Wichtig ist, dass nicht die Objekte nicht direkt auf Typen wie z.B. IVtcObject, App etc. deklariert werden. Die Deklaration von Objekten, Objektlisten, Session etc. erfolgt immer auf Object. Also nicht:

Dim Projektbearbeiter as IVtcObject

Sondern:

Dim Projektbearbeiter as Object

Die entsprechenden Interfaces sind im laufenden Betrieb dann vorhanden, sobald das Objekt geladen wird.

Bitte wählen Sie Ihren Standort