01.03.2013 Aufrufe

Programmierschnittstelle UDS for ELO Universelle ...

Programmierschnittstelle UDS for ELO Universelle ...

Programmierschnittstelle UDS for ELO Universelle ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmierschnittstelle</strong><br />

<strong>UDS</strong> <strong>for</strong> <strong>ELO</strong><br />

<strong>Universelle</strong> Datenschnittstelle<br />

für <strong>ELO</strong><br />

Version 2.5<br />

<strong>UDS</strong> <strong>for</strong> <strong>ELO</strong> wird exklusiv vertrieben durch:<br />

cns computer & netzwerk service gmbh<br />

Bahnhofplatz 4<br />

D-90762 Fürth<br />

Fon +49 911 76674-55<br />

Fax +49 911 76674-74<br />

E-Mail: uds@cns-nuernberg.de<br />

Internet: www.cns-nuernberg.de<br />

Seite 1


<strong>Programmierschnittstelle</strong><br />

<strong>UDS</strong> <strong>for</strong> <strong>ELO</strong> - <strong>Universelle</strong> Datenschnittstelle für <strong>ELO</strong><br />

Autoren: STARCON GmbH / cns computer & netzwerk service gmbh<br />

Stand: 2005-05-28<br />

Copyright 2005 STARCON GmbH<br />

Die Urheberrechte an den Inhalten und der Form des vorliegenden Dokuments liegen<br />

bei STARCON GmbH. Jede Verwertung außerhalb der engen Grenzen des<br />

Urheberrechtsgesetzes ist ohne Zustimmung von STARCON GmbH unzulässig und<br />

strafbar. Alle im Rahmen dieses Dokumentes erwähnten Warenzeichen dienen nur<br />

der Kenntlichmachung und sind Warenzeichen der jeweiligen Hersteller. Alle Rechte<br />

vorbehalten.<br />

Seite 2


Inhalt:<br />

Übersicht....................................................................................................................................5<br />

Objekt Main..............................................................................................................................7<br />

Function callServerScript......................................................................................................7<br />

Function createDict ...............................................................................................................8<br />

Sub doLookup........................................................................................................................9<br />

Function doLookupInvisible..............................................................................................10<br />

Function getLicInfo .............................................................................................................11<br />

Function getMeta.................................................................................................................12<br />

Function isEloOffice............................................................................................................12<br />

Function lookup...................................................................................................................13<br />

Function lookupArray ........................................................................................................14<br />

Function lookupDict ...........................................................................................................15<br />

Function lookupDict2 .........................................................................................................16<br />

Function lookupDict3 .........................................................................................................17<br />

Objekt Meta ............................................................................................................................18<br />

Function getLookupList .....................................................................................................18<br />

Objekt MetaLookupList .......................................................................................................19<br />

Function count .....................................................................................................................19<br />

Function item .......................................................................................................................19<br />

Objekt MetaLookup..............................................................................................................20<br />

Property Datasource ...........................................................................................................20<br />

Property FieldID..................................................................................................................20<br />

Property MaskID .................................................................................................................20<br />

Property Name.....................................................................................................................20<br />

Function getFilterMapping ................................................................................................21<br />

Function getFilterMappingCount .....................................................................................21<br />

Function getOption .............................................................................................................22<br />

Function getOutputMapping.............................................................................................23<br />

Function getOutputMappingCount..................................................................................23<br />

Objekt MetaLookupMapping .............................................................................................24<br />

Property DBFieldName ......................................................................................................24<br />

Property FieldID..................................................................................................................24<br />

Seite 3


Objekt DataDict .....................................................................................................................25<br />

Sub add .................................................................................................................................25<br />

Function count .....................................................................................................................26<br />

Function get..........................................................................................................................26<br />

Function getName ...............................................................................................................27<br />

Function getValue ...............................................................................................................27<br />

Objekt DictArray ...................................................................................................................28<br />

Function count .....................................................................................................................28<br />

Function get..........................................................................................................................28<br />

Anlage 1 – doLookup Skript................................................................................................29<br />

Anlage 2 – doLookupInvisible Skript................................................................................32<br />

Seite 4


Übersicht<br />

Main Das Hauptobjekt, das die Highlevel-Funktionen wie<br />

doLookup() und doLookupInvisible() zur Verfügung<br />

stellt. Der Zugriff auf alle anderen Objekte erfolgt in der<br />

Regel ebenfalls über dieses Objekt.<br />

Methoden • callServerScript<br />

• createDict<br />

• doLookup<br />

• doLookupInvisible<br />

• getLicInfo<br />

• getMeta<br />

• isEloOffice<br />

• lookup<br />

• lookupArray<br />

• lookupDict<br />

• lookupDict2<br />

• lookupDict3<br />

Meta Beinhaltet alle Metain<strong>for</strong>mationen, die über das Config<br />

Tool eingestellt wurden.<br />

Methoden • getLookupList<br />

MetaLookupList Liste mit allen Lookups, die zu einer bestimmten Maske<br />

eines Archivs hinterlegt sind.<br />

Methoden • count<br />

• item<br />

Seite 5


MetaLookup Objekt, das die Lookupin<strong>for</strong>mation für ein bestimmtes<br />

Feld einer Maske beinhaltet<br />

Eigenschaften • Datasource<br />

• FieldID<br />

• MaskID<br />

• Name<br />

Methoden • getFilterMapping<br />

• getFiltermappingCount<br />

• getOption<br />

• getOutputMapping<br />

• getOutputMappingCount<br />

MetaLookupMapping Zugriff auf Ausgabe- und Filtermapping In<strong>for</strong>mationen<br />

einer bestimmten Maske eines Archivs<br />

Eigenschaften • DBFieldName<br />

• FieldID<br />

DataDict Dictionary für Daten und Filterdefinitionen<br />

Methoden • add<br />

• count<br />

• get<br />

• getName<br />

• getValue<br />

DictArray Ein Array mit Dictionary Objecten.<br />

Methoden • count<br />

• get<br />

Für den normalen Einsatz von <strong>UDS</strong> in <strong>ELO</strong> sind nur zwei Funktionen des Main<br />

Objekts notwendig: doLookup und doLookupInvisible. Falls allerdings das<br />

Standardverhalten geändert werden soll, oder mehrere Datensätze abgerufen werden<br />

sollen kann direkt über die nachfolgend beschriebenen API Funktionen gearbeitet<br />

werden.<br />

Als umfassendes Beispiel für die Programmierung von <strong>UDS</strong> sind in Anlage 1 und<br />

Anlage 2 die Skripten angefügt, die normalerweise innerhalb der DLL ausgeführt<br />

werden wenn Main.doLookup oder Main.doLookupInvisible aufgerufen wird.<br />

Seite 6


<strong>UDS</strong> API Objekt Main<br />

Objekt Main<br />

Das Main Objekt ist das zentrale Zugriffsobjekt von <strong>UDS</strong>. Alle Aufrufe werden über<br />

dieses Objekt initiiert. Um das Main Objekt zu erzeugen, verwenden Sie folgende<br />

Anweisung:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

Function callServerScript<br />

Seit <strong>UDS</strong> 2.5 ist es möglich, vom Client aus Skripten auf dem <strong>UDS</strong> Server ausführen<br />

zu lassen.<br />

Es sind dazu folgende Schritte notwendig:<br />

1. Erstellen Sie auf dem <strong>UDS</strong> Server im <strong>UDS</strong> Verzeichnis einen Ordner „ServerScripts“<br />

2. Erstellen Sie in diesem Verzeichnis beliebige Skript-Dateien. Die Skripte müssen<br />

eine Funktion „Process“ besitzen, die als Argument einen String erwartet und als<br />

Ergebnis einen String zurückliefert (kann auch leer sein).<br />

3. Fügen Sie in Ihrem Client-Skript einen Aufruf „callServerScript(NameDesSkripts,<br />

Argument)“ ein.<br />

Function callServerScript(Name As String, DataIn As String) As String<br />

Name: Name des Serverscripts (ohne Datei-Endung)<br />

DataIn: String, der an das Skript übergeben wird<br />

Rückgabewert:<br />

Die Ausgabe des Serverscripts<br />

Seite 7


<strong>UDS</strong> API Objekt Main<br />

Beispiel:<br />

Skript „C:\Programme\<strong>ELO</strong>x<strong>UDS</strong> 2 Server\ServerScripts\Logging.VBS“:<br />

function Process(strInput)<br />

const cnForAppending = 8<br />

dim objFSO<br />

dim objStream<br />

set objFSO = CreateObject("Scripting.FileSystemObject")<br />

on error resume next<br />

set objStream = objFSO.OpenTextFile("C:\temp\<strong>UDS</strong>.log", cnForAppending, true)<br />

objStream.WriteLine now() & " - " & strInput<br />

objStream.Close<br />

set objStream = nothing<br />

set objFSO = nothing<br />

if err.number 0 then<br />

Process = err.description<br />

end if<br />

end function<br />

Aufruf im Clientscript:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

strRet = obj<strong>UDS</strong>.callServerScript("Logging", "Dokument abgelegt")<br />

if len(strRet) > 0 then<br />

msgbox "Beim Schreiben des Logs ist folgender Fehler aufgetreten: " & strRet<br />

end if<br />

Function createDict<br />

Erzeugt ein leeres DataDict Objekt. Dies wird z.B. verwendet, um eigene<br />

Filterkriterien zu definieren.<br />

Function createDict() as DataDict<br />

Rückgabewert:<br />

Ein leeres DataDict Object<br />

Siehe auch:<br />

Seite 8


<strong>UDS</strong> API Objekt Main<br />

Function lookupDict2<br />

Sub doLookup<br />

Die Funktion wird üblicherweise während des Ereignisses „Beim Bearbeiten der<br />

Verschlagwortung“ aufgerufen. Innerhalb der Funktion finden folgende Aktionen<br />

statt:<br />

1. Prüfen, ob für die aktuelle Maske Lookups definiert wurden<br />

2. Einfügen von Skriptbuttons hinter allen Feldern, für die ein Lookup definiert wurde<br />

3. Ausführen der Datenbankabfrage, falls<br />

- ein Lookup-Feld verlassen wurde<br />

- der Skriptbutton betätigt wurde<br />

- die „Übernehmen“ oder „OK“ Schaltfläche der Maske betätigt wurde<br />

4. War das Ergebnis der Datenbankabfrage nicht eindeutig oder leer, wird der Lookup<br />

Dialog geöffnet<br />

5. Bei eindeutigem Ergebnis werden die in Output Mapping definierten Felder befüllt<br />

6. Wird das Lookup Feld geleert, werden die Werte der Output Mapping Felder<br />

gelöscht<br />

7. Wurde festgelegt, dass nur Datenbankwerte zulässig sind, wird das Schließen der<br />

Maske mit „OK“ nur dann zugelassen, wenn sich ein gültiger Wert im Lookup Feld<br />

befindet, oder das Feld leer ist.<br />

Falls die Funktion nicht Ihren Wünschen entspricht, können Sie stattdessen das in<br />

Anlage 1 aufgeführte Skript „doLookup.VBS“ anpassen und verwenden.<br />

Sub doLookup()<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject(„eloxUds2Library.Main“)<br />

obj<strong>UDS</strong>.doLookup()<br />

Seite 9


<strong>UDS</strong> API Objekt Main<br />

Function doLookupInvisible<br />

Führt ebenfalls einen Datenbank Lookup aus. Allerdings wird bei nicht eindeutigem<br />

oder leerem Ergebnis kein Dialog geöffnet. Die Funktion liefert true zurück, wenn<br />

genau ein Datensatz gefunden wurde.<br />

Wie bei doLookup können Sie als Ersatz für diese Funktion auch ein eigenes Skript<br />

verwenden (Anlage 2, „doLookupInvisible.VBS“).<br />

Function doLookupInvisible() As Boolean<br />

Rückgabewert:<br />

true, falls alle für diese Maske definierten Lookups genau ein Datenbankergebnis<br />

zurückgeliefert haben, false sonst.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

if not obj<strong>UDS</strong>.doLookupInvisible() then<br />

msgbox "Es wurde kein eindeutiger Datensatz gefunden"<br />

end if<br />

Seite 10


<strong>UDS</strong> API Objekt Main<br />

Function getLicInfo<br />

Liefert In<strong>for</strong>mationen zur <strong>UDS</strong> Lizenz zurück<br />

Function getLicInfo(Name as String) As String<br />

Name: Einer der folgenden Strings:<br />

- appcode<br />

- code<br />

- date<br />

- info<br />

- modules<br />

- name<br />

- type<br />

- validto<br />

Rückgabewert:<br />

Der zugehörige Wert.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

msgbox obj<strong>UDS</strong>.GetLicInfo("info")<br />

Seite 11


<strong>UDS</strong> API Objekt Main<br />

Function getMeta<br />

Liefert das Meta Objekt, das die komplette Konfiguration enthält zurück. Auf die<br />

In<strong>for</strong>mationen zu einzelnen Masken in bestimmten Archiven kann über die<br />

MetaLookupList zugegriffen werden (siehe Objekt MetaLookup).<br />

function getMeta() As Meta<br />

Rückgabewert:<br />

Das Meta-Objekt<br />

Siehe auch:<br />

Function getLookupList<br />

Function isEloOffice<br />

Prüft, in welchem Kontext <strong>UDS</strong> aufgerufen wurde. Ist sowohl <strong>ELO</strong>office, als auch<br />

<strong>ELO</strong>professional gestartet, wird <strong>ELO</strong>professional angenommen.<br />

function isEloOffic() as Boolean<br />

Rückgabewert:<br />

True, wenn <strong>UDS</strong> im Kontext von <strong>ELO</strong>office aufgerufen wurde, sonst false<br />

(<strong>ELO</strong>profesional).<br />

Seite 12


<strong>UDS</strong> API Objekt Main<br />

Function lookup<br />

Führt einen Lookup durch und liefert den Wert des 1. Feldes der angegebenen<br />

Datenquelle zurück. Wird kein Filterkriterium angegeben oder ist das Ergebnis<br />

trotzdem nicht eindeutig, wird der Lookup-Dialog angezeigt (falls Visible = true).<br />

Als "Query" wird dabei der Name einer Datenquelle verwendet. Das Argument<br />

"Name" ist ein bestimmtes Feld dieser Quelle, über das "Value" kann ein Filter für<br />

dieses Feld mitgegeben werden und "Visible " bestimmt, ob bei nicht eindeutigen<br />

Ergebnissen ein Lookup-Dialog angezeigt werden soll.<br />

Function lookup (Query as String, [Name As String], [Value As String], [Visible As<br />

Boolean = true]) As String<br />

Query: Name einer Datenquelle<br />

Name (optional): Ein Feld der Datenquelle das gefiltert werden soll<br />

Value (optional): Der Filter für das mit "Name" angegebene Feld<br />

Visible (optional): Falls true wird der Lookup-Dialog angezeigt<br />

Rückgabewert:<br />

Der Wert der ersten Spalte der Datenquelle wenn das Ergebnis eindeutig ist bzw.<br />

wenn der Benutzer im Lookup-Dialog einen Datensatz ausgewählt hat.<br />

Wurde Visible = false gesetzt und kein eindeutiger Datensatz gefunden oder hat der<br />

Benutzer den Lookup-Dialog mit Abbrechen beendet wird ein Leerstring<br />

zurückgeliefert.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

msgbox obj<strong>UDS</strong>.lookup("Bücher", "Titel", "Lehrbuch", false)<br />

Seite 13


<strong>UDS</strong> API Objekt Main<br />

Function lookupArray<br />

Liefert einen kompletten Dataset zurück, der über eine FOR Schleife durchlaufen<br />

werden kann.<br />

Function lookupArray(Query As String, Filter As DataDict) As DictArray<br />

Query: Name einer Datenquelle<br />

Filter: Ein DataDict mit Filterbedingungen<br />

Rückgabewert:<br />

Ein DictArray Objekt mit allen Datensätzen. Wurden keine Datensätze gefunden,<br />

wird ein leeres Objekt mit Count = 0 zurückgeliefert.<br />

Es können maximal 500 Datensätze abgerufen werden. Wurde im Config Tool für<br />

diese Datenquelle eine niedrigere Zahl (Max. Ergebnismenge) festgelegt, so ist diese<br />

Zahl ausschlaggebend.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

set objFilter = obj<strong>UDS</strong>.CreateDict()<br />

objFilter.Add "ISBN", "3-"<br />

objFilter.Add "Autor", "A"<br />

set objResult = obj<strong>UDS</strong>.LookupArray("Bücher", objFilter)<br />

if objResult.Count = 0 then<br />

strMsg = "Kein Datensatz gefunden"<br />

else<br />

<strong>for</strong> i = 0 to objResult.Count - 1<br />

strMsg = strMsg & objResult.get(i).get("ISBN") & ";"<br />

strMsg = strMsg & objResult.get(i).get("Titel") & ";"<br />

strMsg = strMsg & objResult.get(i).get("Autor") & vbNewLine<br />

next<br />

end if<br />

msgbox strMsg<br />

Seite 14


<strong>UDS</strong> API Objekt Main<br />

Function lookupDict<br />

Wie Funktion lookup, liefert allerdings den gesamten Datensatz in einem DataDict<br />

Objekt zurück.<br />

Function lookupDict(Query As String, [Name As String], [Value As String],<br />

[Visible As Boolean = true]) As DataDict<br />

Query: Name einer Datenquelle<br />

Name (optional): Ein Feld der Datenquelle das gefiltert werden soll<br />

Value (optional): Der Filter für das mit "Name" angegebene Feld<br />

Visible (optional): Falls true wird der Lookup-Dialog angezeigt<br />

Rückgabewert:<br />

Ein DataDict Objekt mit dem ausgewählten Datensatz.<br />

Wurde Visible = false gesetzt und kein eindeutiger Datensatz gefunden oder hat der<br />

Benutzer den Lookup-Dialog mit Abbrechen beendet wird ein DataDict Objekt mit<br />

Count = 0 zurückgeliefert.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

set objDict = obj<strong>UDS</strong>.lookupDict("Bücher", "Titel", "Lehrbuch", false)<br />

<strong>for</strong> i = 0 to objDict.Count - 1<br />

strMsg = strMsg & objDict.getName(i) & "=" & objDict.getValue(i) & vbNewLine<br />

next<br />

msgbox strMsg<br />

Seite 15


<strong>UDS</strong> API Objekt Main<br />

Function lookupDict2<br />

Arbeitet ähnlich wie lookupDict, allerdings können hier mehrere Filterkriterien in<br />

Form eines DataDict Objektes übergeben werden.<br />

Function lookupDict2(Query As String, Filter As DataDict, [Visible As Boolean =<br />

true]) As DataDict<br />

Query: Name einer Datenquelle<br />

Filter: Ein DataDict mit Filterbedingungen<br />

Visible (optional): Falls true wird der Lookup-Dialog angezeigt<br />

Rückgabewert:<br />

Ein DataDict Objekt mit dem ausgewählten Datensatz.<br />

Wurde Visible = false gesetzt und kein eindeutiger Datensatz gefunden oder hat der<br />

Benutzer den Lookup-Dialog mit Abbrechen beendet wird ein DataDict Objekt mit<br />

Count = 0 zurückgeliefert.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

set objFilter = obj<strong>UDS</strong>.createDict()<br />

objFilter.add "ISBN", "3-15"<br />

objFilter.add "Titel", "Faust II"<br />

set objDict = obj<strong>UDS</strong>.lookupDict2("Bücher", objFilter, false)<br />

<strong>for</strong> i = 0 to objDict.Count - 1<br />

strMsg = strMsg & objDict.getName(i) & "=" & objDict.getValue(i) & vbNewLine<br />

next<br />

msgbox strMsg<br />

Seite 16


<strong>UDS</strong> API Objekt Main<br />

Function lookupDict3<br />

Wie lookupDict2, liefert aber zusätzlich die Anzahl der gefundenen Datesätze zurück.<br />

Function lookupDict3(Query As String, Filter As DataDict, Visible As Boolean,<br />

ResDict As DataDict) As Long<br />

Query: Name einer Datenquelle<br />

Filter: Ein DataDict mit Filterbedingungen<br />

Visible: Falls true, wird der Lookup-Dialog angezeigt<br />

ResDict Enthält bei eindeutigem Ergebnis ein DataDict Objekt mit<br />

dem Datensatz, sonst ein leeres DataDict Objekt<br />

Rückgabewert:<br />

Anzahl der gefundenen Datensätze.<br />

Beispiel:<br />

set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

set objFilter = obj<strong>UDS</strong>.CreateDict()<br />

objFilter.Add "ISBN", "3-0"<br />

i = obj<strong>UDS</strong>.LookupDict3("Bücher", objFilter, false, objResult)<br />

strMsg = "Anzahl Datensätze: " & i & vbNewLine<br />

if i = 1 then<br />

strMsg = strMsg & "ISBN: " & objResult.get("ISBN")<br />

end if<br />

msgbox strMsg<br />

Seite 17


<strong>UDS</strong> API Objekt Meta<br />

Objekt Meta<br />

Das Meta Objekt ist die Schnittstelle zum Abrufen der Metain<strong>for</strong>mationen, die über<br />

das Config Tool eingestellt wurden.<br />

Function getLookupList<br />

Liefert eine Liste aller Konfigurationen, die zu einer bestimmten Maske in einem<br />

bestimmten Archiv existieren.<br />

Function getLookupList(Archive As String, MaskID As Long) As MetaLookupList<br />

Archive: Name des Elo Archivs<br />

MaskID: Masken ID der <strong>ELO</strong> Verschlagwortungsmaske<br />

Rückgabewert:<br />

Ein MetaLookupList Objekt das den Zugriff auf alle Lookups ermöglicht, die für diese<br />

Maske definiert sind<br />

Beispiel:<br />

Set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

Set objMeta = obj<strong>UDS</strong>.getMeta()<br />

Set objMetaList = objMeta.getLookupList("Elo4Archiv", "14")<br />

For i = 0 To objMetaList.count - 1<br />

strMsg = strMsg & objMetaList.Item(i).Datasource & vbNewLine<br />

Next<br />

msgbox strMsg<br />

Seite 18


<strong>UDS</strong> API Objekt MetaLookupList<br />

Objekt MetaLookupList<br />

Die MetaLookupList ermöglicht den Zugriff auf die einzelnen MetaLookup Objekte.<br />

Function count<br />

Gibt die Anzahl der Elemente zurück<br />

Function count() As Long<br />

Rückgabewert:<br />

Anzahl der MetaLookup Objekte<br />

Siehe auch:<br />

Function getLookupList<br />

Function item<br />

Liefert ein einzelnes MetaLookup Objekt zurück. Der Index beginnt bei 0 und endet<br />

bei MetaLookupList.count - 1<br />

Function item(Index As Long) As MetaLookup<br />

Index: 0-basierter Index<br />

Rückgabewert:<br />

Das MetaLookup Objekt an Position ID<br />

Siehe auch:<br />

Function getLookupList<br />

Seite 19


<strong>UDS</strong> API Objekt MetaLookup<br />

Objekt MetaLookup<br />

Das MetaLookup Objekt korrespondiert mit den Lookups die im Config Tool angelegt<br />

wurden.<br />

Property Datasource<br />

Liefert den Namen der Datenquelle zurück<br />

Property Datasource As String<br />

Property FieldID<br />

<strong>ELO</strong> Indexnummer des Feldes, das den Lookup auslöst (beginnt bei 0).<br />

Property FieldID As Long<br />

Property MaskID<br />

<strong>ELO</strong> Nummer der Verschlagwortungsmaske<br />

Property MaskID As Long<br />

Property Name<br />

Name der Lookupkonfiguration<br />

Property Name As String<br />

Seite 20


<strong>UDS</strong> API Objekt MetaLookup<br />

Function getFilterMapping<br />

Liefert eine Liste mit den Filtermappings (Zuordnungen Elo Maskenfeld –<br />

Datenbankfeld für das Vorfiltern der Datensätze).<br />

Function getFilterMapping(Index As Long) As MetaLookupMapping<br />

Index: 0-basierter Index<br />

Rückgabewert:<br />

Ein MetaLookupMapping Object<br />

Beispiel:<br />

Set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

Set objMeta = obj<strong>UDS</strong>.getMeta()<br />

Set objMetaList = objMeta.getLookupList("Elo4Archiv", "15")<br />

For i = 0 To objMetaList.count - 1<br />

<strong>for</strong> j = 0 to objMetaList.item(i).getFiltermappingCount – 1<br />

set objFilterMapping = objMetaList.item(i).getFiltermapping(i)<br />

strMsg = strMsg & objFilterMapping.FieldID & "="<br />

strMsg = strMsg & objFilterMapping.DBFieldName & vbNewLine<br />

next<br />

Next<br />

msgbox strMsg<br />

Function getFilterMappingCount<br />

Stellt fest, wie viele Filtermappings für eine bestimmte Maske definiert wurden.<br />

Function getFilterMappingCount() As Long<br />

Rückgabewert:<br />

Anzahl der Filtermappings<br />

Siehe auch:<br />

Function getFilterMapping<br />

Seite 21


<strong>UDS</strong> API Objekt MetaLookup<br />

Function getOption<br />

Im Augenblick wird nur die Option "dbvaluesonly" unterstützt, die angibt, ob<br />

ausschließlich Datenbankwerte eingetragen werden dürfen. In Zukunft werden hier<br />

noch weitere Optionen verfügbar sein.<br />

Function getOption(Name As String) As String<br />

Name: Der Name einer bestimmten Konfigurations-Option<br />

Es wird momentan nur "dbvaluesonly" unterstützt.<br />

Rückgabewert:<br />

Der Wert dieser Option<br />

Beispiel:<br />

Set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

Set objMeta = obj<strong>UDS</strong>.getMeta()<br />

Set objMetaList = objMeta.getLookupList("Elo4Archiv", "15")<br />

For i = 0 To objMetaList.count - 1<br />

strMsg = strMsg & objMetaList.item(i).Name & "="<br />

strMsg = strMsg & objMetaList.item(i).getOption("dbvaluesonly")<br />

Next<br />

msgbox strMsg<br />

Seite 22


<strong>UDS</strong> API Objekt MetaLookup<br />

Function getOutputMapping<br />

Die Funktion ist analog zu getFilterMapping und liefert eine Liste aller<br />

Ausgabemappings zurück (Zuordnungen Elo Maskenfeld – Datenbankfeld für das<br />

Ausgeben der Datensätze)<br />

Function getOutputMapping(Index As Long) As MetaLookupMapping<br />

Index: 0-basierter Index<br />

Rückgabewert:<br />

Ein MetaLookupMapping Object<br />

Siehe auch:<br />

Function getFilterMapping<br />

Function getOutputMappingCount<br />

Liefert die Anzahl der Ausgabemappings zurück.<br />

Function getOutputmappingCount() As Long<br />

Rückgabewert:<br />

Anzahl der Ausgabemappings<br />

Siehe auch:<br />

Function getFilterMapping<br />

Seite 23


<strong>UDS</strong> API Objekt MetaLookupMapping<br />

Objekt MetaLookupMapping<br />

Das MetaLookupMapping Objekt beinhaltet die Beschreibung, welches <strong>ELO</strong>-<br />

Maskenfeld mit welchem Datenquellenfeld verknüpft ist (sowohl bei Filter- als auch<br />

bei Ausgabemappings).<br />

Property DBFieldName<br />

Name des des Datenbankfelds<br />

Property DBFieldName As String<br />

Siehe auch<br />

Function getFilterMapping<br />

Property FieldID<br />

Elo Indexnummer des Maskenfeldes<br />

Property FieldID As Long<br />

Siehe auch:<br />

Function getFilterMapping<br />

Seite 24


<strong>UDS</strong> API Objekt DataDict<br />

Objekt DataDict<br />

Das DataDict ist ein Dictionary, das bei der Definition von Filtern oder bei der<br />

Rückgabe eines Datensatzes verwendet wird. Der lesende Zugriff erfolgt entweder<br />

assoziativ über den Namen des Eintrags (Function get) oder über die Position<br />

(Function getName bzw. getValue).<br />

Sub add<br />

Fügt einen neuen Eintrag hinzu. Werden mehrere Elemente mit gleichem Namen<br />

hinzugefügt, wird der vorherige Wert überschrieben.<br />

Sub add(Name As String, Value As String)<br />

Name: Eindeutiger Name, über den der Eintrag identifiziert wird<br />

Value: Wert dieses Eintrags<br />

Beispiel:<br />

Set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

Set objDict = obj<strong>UDS</strong>.CreateDict()<br />

objDict.add "ISBN", "0-3"<br />

objDict.add "Titel", "Lehrbuch"<br />

objDict.add "Titel", "Schulbuch"<br />

msgbox objDict.get("Titel")<br />

Seite 25


<strong>UDS</strong> API Objekt DataDict<br />

Function count<br />

Liefert die Anzahl der Einträge des DataDict zurück<br />

Function count() As Long<br />

Rückgabewert:<br />

Anzahl der Elemente<br />

Beispiel:<br />

Set obj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

Set objDict = obj<strong>UDS</strong>.CreateDict()<br />

objDict.add "ISBN", "0-3"<br />

objDict.add "Titel", "Lehrbuch"<br />

msgbox "Anzahl der Elemente: " & objDict.count()<br />

Function get<br />

Liefert den Wert eines Eintrags über dessen Namen zurück<br />

Function get(Name As String) As String<br />

Name: Name des Eintrags, dessen Wert zurückgegeben werden soll<br />

Rückgabewert:<br />

Wert des Eintrags oder der Leerstring, falls der Eintrag nicht vorhanden ist.<br />

Siehe auch:<br />

Sub add<br />

Seite 26


<strong>UDS</strong> API Objekt DataDict<br />

Function getName<br />

Liefert den Namen eines Eintrags über dessen Position (beginnt bei 0) zurück<br />

Function getName(Index as Long) As String<br />

Index: 0-basierter Index<br />

Rückgabewert:<br />

Name des Eintrags. Wird auf einen Index zugegriffen, der nicht existiert, wird ein<br />

"List index out of bounds" Fehler erzeugt.<br />

Siehe auch:<br />

Seite 27


<strong>UDS</strong> API Objekt DataDict<br />

Function lookupDict<br />

Function getValue<br />

Liefert den Wert eines Eintrags über dessen Position (beginnt bei 0) zurück<br />

Function getValue (Index as Long) As String<br />

Index: 0-basierter Index<br />

Rückgabewert:<br />

Wert des Eintrags. Wird auf einen Index zugegriffen, der nicht existiert, wird ein "List<br />

index out of bounds" Fehler erzeugt.<br />

Siehe auch:<br />

Seite 28


<strong>UDS</strong> API Objekt DataDict<br />

Function lookupDict<br />

Seite 29


<strong>UDS</strong> API Objekt DictArray<br />

Objekt DictArray<br />

Das DictArray wird für den Zugriff auf Datensätze verwendet, die von der Funktion<br />

Main.lookupArray zurück geliefert werden.<br />

Function count<br />

Liefert die Anzahl der Einträge des DictArray zurück<br />

Function count() As Long<br />

Rückgabewert:<br />

Anzahl der Elemente<br />

Siehe auch:<br />

Seite 30


<strong>UDS</strong> API Objekt DictArray<br />

Function lookupArray<br />

Function get<br />

Liefert den Wert eines Eintrags über dessen Position (beginnt bei 0) zurück<br />

Function get(Index as Long) As DataDict<br />

Index: 0-basierter Index<br />

Rückgabewert:<br />

Ein DataDict Objekt . Wird auf einen Index zugegriffen, der nicht existiert, wird ein<br />

"List index out of bounds" Fehler erzeugt.<br />

Siehe auch:<br />

Seite 31


<strong>UDS</strong> API Objekt DictArray<br />

Function lookupArray<br />

Seite 32


<strong>UDS</strong> API Anlage 1<br />

Anlage 1 – doLookup Skript<br />

Dieses Skript wird innerhalb der DLL ausgeführt, wenn die Methode Main.doLookup<br />

aufgerufen wird.<br />

Option Explicit<br />

Dim mobj<strong>UDS</strong> ' As eloxUds2Library.Main<br />

Dim mobjElo ' As Object<br />

'------------------------------------------------------------------------------<br />

' Einstiegsprozedur<br />

'------------------------------------------------------------------------------<br />

Public Sub DoLookup()<br />

Dim objMeta ' As eloxUds2Library.Meta<br />

Dim objMetaList ' As eloxUds2Library.MetaLookupList<br />

Dim i ' As Long<br />

Set mobj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

If mobj<strong>UDS</strong>.isEloOffice Then<br />

Set mobjElo = CreateObject("<strong>ELO</strong>.Office")<br />

Else<br />

Set mobjElo = CreateObject("<strong>ELO</strong>.Professional")<br />

End If<br />

Set objMeta = mobj<strong>UDS</strong>.getMeta()<br />

Set objMetaList = objMeta.getLookupList(mobjElo.GetArcName(),<br />

mobjElo.GetObjMaskNo())<br />

For i = 0 To objMetaList.Count - 1<br />

Call <strong>UDS</strong>Lookup(objMetaList.Item(i))<br />

Next<br />

Set mobj<strong>UDS</strong> = Nothing<br />

Set mobjElo = Nothing<br />

End Sub<br />

'------------------------------------------------------------------------------<br />

' Hauptprozedur<br />

'------------------------------------------------------------------------------<br />

'Private Sub <strong>UDS</strong>Lookup(objLookup As eloxUdsLibrary.MetaLookup)<br />

Private Sub <strong>UDS</strong>Lookup(objLookup)<br />

Const cnSearchMask = 32768 ' = &H8000<br />

Dim lngMaskNo ' As Long<br />

Dim lngActionKey ' As Long<br />

Dim blnIsSearchMask ' As Boolean<br />

Dim blnDBValuesOnly ' As Boolean<br />

Dim blnValidateOnExit ' As Boolean<br />

Dim blnFieldsOK ' As Boolean<br />

Dim strTextMask ' As String<br />

Dim strMaskFiller ' As String<br />

Dim lenTM ' As Long<br />

Dim i ' As Long<br />

dim blnRet ' As Boolean<br />

blnDBValuesOnly = objLookup.getOption("dbvaluesonly")<br />

'blnValidateOnExit = objLookup.getOption("validateonexit")<br />

lngActionKey = mobjElo.ActionKey<br />

Seite 33


<strong>UDS</strong> API Anlage 1<br />

' Feststellen, ob Suchmaske<br />

If lngActionKey > cnSearchMask Then<br />

blnIsSearchMask = True<br />

lngActionKey = lngActionKey - cnSearchMask<br />

End If<br />

' Bei Bedarf Anlegen eines Nachschlagebuttons<br />

If lngActionKey = 24 Then<br />

If mobjElo.TextParam = "" Then ' Es existiert noch kein Button<br />

strTextMask = "0000"<br />

For i = 0 To objLookup.FieldID - 1<br />

strTextMask = strTextMask & "0"<br />

Next<br />

strTextMask = strTextMask & "1"<br />

mobjElo.TextParam = strTextMask<br />

Else<br />

strTextMask = mobjElo.TextParam<br />

lenTM = Len(strTextMask)<br />

If lenTM < objLookup.FieldID + 4 Then<br />

strMaskFiller = Space((objLookup.FieldID + 4) - lenTM)<br />

strMaskFiller = Replace(strMaskFiller, " ", "0")<br />

strTextMask = strTextMask & strMaskFiller<br />

End If<br />

mobjElo.TextParam = Left(strTextMask, objLookup.FieldID + 4) & "1" &<br />

Mid(strTextMask, objLookup.FieldID + 6)<br />

End If<br />

End If<br />

' Bei Betätigen des Buttons<br />

If lngActionKey = (3000 + objLookup.FieldID) Then<br />

Call FillFieldsFromLookup(objLookup, True, blnIsSearchMask)<br />

End If<br />

If Not blnIsSearchMask Then<br />

' Bei Verlassen des Feldes<br />

If lngActionKey = (2000 + objLookup.FieldID) Then<br />

If Trim(mobjElo.GetObjAttrib(objLookup.FieldID)) = "" Then<br />

Call ClearMappingFields(objLookup)<br />

Else<br />

blnFieldsOK = FillFieldsFromLookup(objLookup, False, False)<br />

If blnDBValuesOnly And Not blnFieldsOK Then<br />

MsgBox "Sie müssen entweder einen gültigen Wert eingeben oder<br />

das Feld leer lassen."<br />

mobjElo.ScriptActionKey = 1000 + objLookup.FieldID<br />

End If<br />

End If<br />

End If<br />

End If<br />

End Sub<br />

'------------------------------------------------------------------------------<br />

' Befüllt die Felder. Liefert True zurück, wenn der Anwender einen korrekten<br />

Datensatz gewählt hat<br />

'------------------------------------------------------------------------------<br />

'Function FillFieldsFromLookup(objLookup As eloxUds2Library.MetaLookup,<br />

blnVisible As Boolean, blnIsSearchMask As Boolean) As Boolean<br />

Private Function FillFieldsFromLookup(objLookup, blnVisible, blnIsSearchMask)<br />

Dim objDic ' As eloxUds2Library.DataDict<br />

Dim objFilterMapping ' As elox2UdsLibrary.MetaLookupMapping<br />

Dim objOutMapping ' As eloxUds2Library.MetaLookupMapping<br />

Dim objFilterDic ' As eloxUds2Library.DataDict<br />

Dim arrFields, arrNameValue, Field<br />

Dim strOldValue ' As String<br />

Dim i ' As Long<br />

Dim blnRet ' As Boolean<br />

Set objFilterDic = mobj<strong>UDS</strong>.createDict<br />

For i = 0 To objLookup.getFiltermappingCount - 1<br />

Set objFilterMapping = objLookup.getFilterMapping(i)<br />

Seite 34


<strong>UDS</strong> API Anlage 1<br />

Select Case objFilterMapping.FieldID<br />

Case 1001<br />

objFilterDic.Add objFilterMapping.DBFieldName, mobjElo.ObjShort<br />

Case 1002<br />

objFilterDic.Add objFilterMapping.DBFieldName, mobjElo.ObjXDate<br />

Case 1003<br />

objFilterDic.Add objFilterMapping.DBFieldName, mobjElo.ObjMemo<br />

Case Else<br />

objFilterDic.Add objFilterMapping.DBFieldName,<br />

mobjElo.GetObjAttrib(objFilterMapping.FieldID)<br />

End Select<br />

Next<br />

If blnVisible Then<br />

Set objDic = mobj<strong>UDS</strong>.lookupDict2(objLookup.DataSource, objFilterDic,<br />

True)<br />

Else<br />

Set objDic = mobj<strong>UDS</strong>.lookupDict2(objLookup.DataSource, objFilterDic,<br />

False)<br />

End If<br />

If objDic.Count = 0 And Not blnVisible Then<br />

Set objDic = mobj<strong>UDS</strong>.lookupDict2(objLookup.DataSource, objFilterDic,<br />

True)<br />

End If<br />

If objDic.Count > 0 Then<br />

blnRet = True<br />

If blnIsSearchMask Then<br />

Set objOutMapping = objLookup.getOutputMapping(0)<br />

mobjElo.SetObjAttrib objLookup.FieldID,<br />

objDic.get(objOutMapping.DBFieldName)<br />

Else<br />

For i = 0 To objLookup.getOutputmappingCount - 1<br />

Set objOutMapping = objLookup.getOutputMapping(i)<br />

Select Case objOutMapping.FieldID<br />

Case 1001<br />

mobjElo.ObjShort = objDic.get(objOutMapping.DBFieldName)<br />

Case 1002<br />

mobjElo.ObjXDate = objDic.get(objOutMapping.DBFieldName)<br />

Case 1003<br />

mobjElo.ObjMemo = objDic.get(objOutMapping.DBFieldName)<br />

Case Else<br />

mobjElo.SetObjAttrib objOutMapping.FieldID,<br />

objDic.get(objOutMapping.DBFieldName)<br />

End Select<br />

Next<br />

End If<br />

End If<br />

FillFieldsFromLookup = blnRet<br />

End Function<br />

'------------------------------------------------------------------------------<br />

' Löscht alle gemappten Felder<br />

'------------------------------------------------------------------------------<br />

'Sub ClearMappingFields(objLookup As eloxUdsLibrary.MetaLookup)<br />

Sub ClearMappingFields(objLookup)<br />

Dim objOutMapping ' As eloxUds2Library.MetaLookupMapping<br />

Dim i ' As Long<br />

For i = 0 To objLookup.getOutputmappingCount - 1<br />

Set objOutMapping = objLookup.getOutputMapping(i)<br />

mobjElo.SetObjAttrib objOutMapping.FieldID, ""<br />

Next<br />

End Sub<br />

Seite 35


<strong>UDS</strong> API Objekt DictArray<br />

Anlage 2 – doLookupInvisible Skript<br />

Dieses Skript wird innerhalb der DLL ausgeführt, wenn die Methode<br />

Main.doLookupInvisible aufgerufen wird.<br />

Option Explicit<br />

Dim mobj<strong>UDS</strong> ' As eloxUdsLibrary.Main<br />

Dim mobjElo ' As Object<br />

'------------------------------------------------------------------------------<br />

' Einstigsfunktion<br />

'------------------------------------------------------------------------------<br />

Public function doLookupInvisible() ' As Boolean<br />

Dim objMeta ' As eloxUdsLibrary.Meta<br />

Dim objMetaList ' As eloxUdsLibrary.MetaLookupList<br />

Dim i ' As Long<br />

dim blnRet ' As Boolean<br />

Set mobj<strong>UDS</strong> = CreateObject("eloxUds2Library.Main")<br />

if mobj<strong>UDS</strong>.isEloOffice then<br />

Set mobjElo = CreateObject("<strong>ELO</strong>.Office")<br />

else<br />

Set mobjElo = CreateObject("<strong>ELO</strong>.Professional")<br />

end if<br />

Set objMeta = mobj<strong>UDS</strong>.getMeta()<br />

If Not objMeta Is Nothing then<br />

Set objMetaList = objMeta.getLookupList(mobjElo.GetArcName(),<br />

mobjElo.GetObjMaskNo())<br />

If Not objMetaList Is Nothing Then<br />

blnRet=true<br />

For i = 0 To objMetaList.Count - 1<br />

blnRet = blnRet and FillFieldsFromLookup(objMetaList.Item(i))<br />

Next<br />

End If<br />

End If<br />

Set mobj<strong>UDS</strong> = Nothing<br />

Set mobjElo = Nothing<br />

doLookupInvisible=blnRet<br />

End function<br />

'------------------------------------------------------------------------------<br />

' Befüllt die Felder. Liefert True zurück, wenn ein eindeutiger Datensatz<br />

' gefunden wurde<br />

'------------------------------------------------------------------------------<br />

Private Function FillFieldsFromLookup(objLookup) ' As Boolean<br />

Dim objDic ' As eloxUdsLibrary.DataDict<br />

Dim objFilterMapping ' As eloxUdsLibrary.MetaLookupMapping<br />

Dim objOutMapping ' As eloxUdsLibrary.MetaLookupMapping<br />

Dim objFilterDic ' As eloxUdsLibrary.DataDict<br />

Dim i ' As Long<br />

Dim blnRet ' As Boolean<br />

blnRet = false<br />

Set objFilterDic = mobj<strong>UDS</strong>.createDict<br />

For i = 0 To objLookup.getFiltermappingCount - 1<br />

Seite 36


<strong>UDS</strong> API Objekt DictArray<br />

Set objFilterMapping = objLookup.getFilterMapping(i)<br />

Select Case objFilterMapping.FieldID<br />

Case 1001<br />

objFilterDic.Add objFilterMapping.DBFieldName, mobjElo.ObjShort<br />

Case 1002<br />

objFilterDic.Add objFilterMapping.DBFieldName, mobjElo.ObjXDate<br />

Case 1003<br />

objFilterDic.Add objFilterMapping.DBFieldName, mobjElo.ObjMemo<br />

Case Else<br />

objFilterDic.Add objFilterMapping.DBFieldName,<br />

mobjElo.GetObjAttrib(objFilterMapping.FieldID)<br />

End Select<br />

Next<br />

Set objDic = mobj<strong>UDS</strong>.lookupDict2(objLookup.DataSource, objFilterDic, False)<br />

If Not objDic Is Nothing then<br />

If objDic.Count > 0 Then<br />

blnRet = true<br />

For i = 0 To objLookup.getOutputmappingCount - 1<br />

Set objOutMapping = objLookup.getOutputMapping(i)<br />

Select Case objOutMapping.FieldID<br />

Case 1001<br />

mobjElo.ObjShort = objDic.get(objOutMapping.DBFieldName)<br />

Case 1002<br />

mobjElo.ObjXDate = objDic.get(objOutMapping.DBFieldName)<br />

Case 1003<br />

mobjElo.ObjMemo = objDic.get(objOutMapping.DBFieldName)<br />

Case Else<br />

mobjElo.SetObjAttrib objOutMapping.FieldID,<br />

objDic.get(objOutMapping.DBFieldName)<br />

End Select<br />

Next<br />

End If<br />

End If<br />

FillFieldsFromLookup = blnRet<br />

End Function<br />

Seite 37

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!