OKB-000245 | Beschreibung der COM-Schnittstelle

Betrifft: ab orgAnice Pi

Frage: 

Wo finde ich eine Dokumentation der COM-Schnittstelle von orgAnice?

Lösung: 

Die Beschreibung der COM-Schnittstelle von orgAnice finden Sie an den folgenden Stellen:

1.) Die Hilfedatei zu der COM-Schnittstelle des orgAnice Database Servers (orgDbServer31) OrgDbServer.chm im Unterordner „Server“ des orgAnice-Ordners (standardmäßig „C:\Programme\orgAnice Software\orgAnice X.X\Server“)

2.) Zu jeder COM-Methode der Hauptkomponenten von orgAnice, orgAnice Database Server und orgAnice Data, finden Sie in dem Objektkatalog von VB/VBA (aufrufbar über F2) eine Beschreibung:

3.) Die beste Quelle für Informationen, wie eine Methode der COM-Schnittstelle der orgAnice-Komponenten verwendet wird, bieten die Makros in der Standard-CRM-Datenbank. Dort wird fast jede Methode verwendet, meistens finden Sie auch Kommentare, die die Funktionsweise erklären.

OKB-000253 | Fehler bei Verwendung einer „zu neuen“ Assembly

Betrifft: ab orgAnice CRM 2008

Problem: 

Bei Ausführung eines .NET-Programms kommt die folgende Fehlermeldung:

Das COM-Objekt des Typs „System.__ComObject“ kann nicht in den Schnittstellentyp „orgAnice.Interop.DbServer.Relation“ umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID „{ADC6EFA6-0B3E-45BE-8021-CEEA02EDA435}“ aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

(Bezeichner und IIDs können variieren.)

Ursache: 

Das Programm verwendet eine Assembly, welcher neuer ist, als die installierte Version des orgAnice Database Servers (OrgDbServer.dll).

Lösung: 

Verwenden Sie eine aktuelle Version des orgAnice Database Servers.

OKB-000252 | Eigene Alarmereignisse

Betrifft: ab orgAnice CRM 2008

Frage: 

Was ist bei der Einrichtung eigener Alarmereignisse zu beachten?

Lösung:

Für die Einrichtung von Alarmereignissen in einer eigenen Tabelle müssen drei Punkte durchgeführt werden:

1.) Einrichtung von Feldern: 

Sie benötigen vier Felder

• für den Verantwortlichen (String),

• für die Angabe „erledigt / nicht erledigt“ (Boolean)

• für das Datum (Datum),

• für den Voralarm (Datum / Long)

2.) Einrichtung eines Sortierschlüssels,

welcher auf der angepassten Funktion AlarmKey() basiert. Diese Funktion benötigt vier Parameter (s. o.), auch in der o.g. Reihenfolge. Der vierte Parameter „Voralarm“ muss ein Long-Wert sein und gibt den Voralarm in Minuten an.

3.) Einrichtung der eigentlichen Alarmfunktion im Konfigurationsmodus 

über „Extras – Datenbankeinstellungen – Alarme“:

4.) Hier wählen Sie die gewünschte Tabelle aus, stellen unter „Alarm – Schlüssel“ den erstellten Alarmschlüssel ein und geben unter „Ausdruck für die Spalte „Betrifft““ einen Ausdruck ein, der später in der Alarmfenster angezeigt wird.

Es kann in einer Tabelle auch mehrere Alarmdefinitionen geben: 

Alarmdefinitionen sind Tabelleneigenschaften fangen mit dem Wort „Alarm“ an. Über die den Dialog „Datenbankeinstellungen“ kann zwar nur ein Alarm pro Tabelle erstellt werden, weitere Alarmdefinitionen können (und müssen) direkt als Tabelleneigenschaften über den Objekt-Editor erstellt werden. Gehen Sie folgendermaßen vor:

1.) Kopieren Sie den Inhalt der vorhandenen Eigenschaft „Alarm“ in die Zwischenablage.

2.) Erstellen Sie eine neue Eigenschaft „Alarm2“, „Alarm3“ usw.

3.) Fügen Sie den Inhalt aus der Zwischenablage ein.

4.) Die jeweiligen Teilwerte stehen für

a. Index, welcher auf der angepassten Funktion Alarmkey() basiert (s.o.)

b. Ausdruck für die Spalte „Betrifft“ in der Alarmanzeige

c. Signal (bisher ungenutzt, immer 1)

Bsp.:

Alarm        Name()       1

5.) Passen Sie die Teilwerte an, beachten Sie, dass die Teilwerte durch Tabulatorzeichen getrennt sind.

OKB-000251 | Automatisches Speichern beim Betätigen von Makroschaltflächen

Betrifft: ab orgAnice CRM 2008

Frage: 

Wie kann ich das automatische Speichern beim Betätigen von Makroschaltflächen steuern?

Lösung: 

Standardmäßig wird von orgAnice Data der Datensatz gespeichert, sobald eine Makroschaltfläche bestätigt wird. Dieses Verhalten kann mit Hilfe des Wertes der Tabelleneigenschaft „OrgDataSaveRecOnMacroCall“ (Typ: unbedingt Long!) gesteuert werden:

0 – Datensatz wird bei Aufruf eines Makros, wenn diese Tabelle aktiv ist, NACH RÜCKFRAGE gespeichert (Abbruch bei „Abbrechen“, weiter bei „Ja“/„Nein“)

1 – Datensatz wird bei Aufruf eines Makros, wenn diese Tabelle aktiv ist, NICHT gespeichert

2 – Datensatz wird bei Aufruf eines Makros, wenn diese Tabelle aktiv ist, OHNE RÜCKFRAGE gespeichert (Standardverhalten, Abbruch bei Fehler)

OKB-000250 | Beschreibungen für Standard-Makros

Betrifft: ab orgAnice CRM 2008

Frage: 

Wie kann ich die Beschreibungen von Standard-Makros verändern?

Lösung: 

Das Ändern der Beschreibungen von Standard-Makros ist absichtlich nicht über den Objekt-Editor möglich, sondern nur versierten Benutzern vorbehalten, die mit dem Visual Basic-Editor umgehen können.

Um Beschreibungen von Standard-Makros zu verändern müssen Sie die Methode .Description der COM-Schnittstelle von orgAnice Data verwenden. Um bspw. die Beschreibung des Makros „WriteLetter“ zu verändern, gehen Sie folgendermaßen vor:

a. Öffnen Sie den Visual Basic-Editor

b. Öffnen Sie über Strg-G das Direktfenster

c. Geben Sie den folgenden Befehl ein und bestätigen Sie mit Enter:

Application.DefaultMacros("WriteLetter").Description = "Brief schreiben..."

Für das Erscheinen im „Aktionen“-Menü ist die Eigenschaft .InMenu zuständig:

Application.DefaultMacros("WriteLetter").InMenu = True

OKB-000249 | Featurecodes

Betrifft: ab orgAnice CRM 2008

Frage: 

Wie kann ich Featurecodes abfragen?

Lösung: 

Zwischen Anzahl der Benutzer und Feature-Code wird ein „-“ plaziert. Gibt es keinen Feature-Code, erscheint entsprechend „–“ (Doppelminus).

Beispiel:

OFFICE-4.0-002-Q*DP*P-00000000-000000-822B 5294

Der Featurecode kann über die parametrisierte Eigenschaft „Database.LicenseHasFeature(ByVal bstrFeature As String) As Boolean“ abgefragt werden.

Beispiel für die Verwendung:

' Überprüfen, ob die Datenbank den Featurecode "XYZ" unterstützt

If Database.LicenseHasFeature("XYZ") Then

Else

MsgBox "Für diese Funktionalität muss Ihre Datenbanklizenz den Featurecode ""XYZ"" beinhalten."

End If

Komplette Funktion

'Überprüfung eines Features

Public Function Featurepresent(psFeatureCode As String) As Boolean

'Fehlerbehandlung

On Error GoTo ErrorHandler

'init

Featurepresent = False

Überprüfen, ob die Datenbank den Featurecode "XYZ" unterstützt

If Database.LicenseHasFeature(psFeatureCode) Then

Featurepresent = True

Else

MsgBox "Diese Funktionalität " & psFeatureCode & " ist in Ihrer Datenbanklizenz nicht vorhanden."

Featurepresent = False

End If

'Fkt. verlassen, sonst rutschen wir in die Fehlerbehandlung hinein

Exit Function

ErrorHandler:

gErrors.DisplayError csErrSource & ".FeaturePresent"

End Function

OKB-000248 | Anlegen von neuen Datensätzen abhängig vom Featurecode

Betrifft: ab orgAnice CRM 2008

Frage: 

Wie kann ich das Anlegen von neuen Datensätze in einer bestimmten Tabelle abhängig von dem Vorhandensein eines Featurecodes machen?

Lösung: 

Erweitern Sie die Prozedur mOrgData_CommandAvailable in der Klasse COrgDataEvents folgendermaßen:

Private Sub mOrgData_CommandAvailable(ByVal CommandId As OrgDataCommandEnum, pbAvailable As Boolean)

' Ermöglich die Deaktivierung von Menüpunkten, die momentan nicht verfügbar sind,

' sei es, weil die aktuelle Datenbank den Menüpunkt nicht unterstützt, oder der

' Menüpunkt in der aktuellen Tabelle oder für den aktuellen Benutzer nicht verfügbar sein soll.

On Error GoTo ErrHandler

Select Case CommandId

' Menüs im Benutzermodus

...

' Menüpunkt "Bearbeiten - Neu" in Abhängigkeit von dem Vorhandensein eines Featurecode aktivieren

Case OrgDataCommandEnum.CMD_USE_EDIT_NEWRECORD

If ActiveTable Is Database.Tables("MeineTabelle") Then

pbAvailable = Database.LicenseHasFeature("XXX")

Else

pbAvailable = True

End If

End Select

...

Ersetzen Sie dabei den „MeineTabelle“ durch den Namen der Tabelle, in der das Anlegen von Datensätzen deaktiviert werden soll, ersetzen Sie „XXX“ durch den Featurecode, der das Anlegen steuern soll

OKB-000247 | Sortierreihenfolge der untergeordneten Datensätze

Betrifft: ab orgAnice Pi

Frage: 

Wie können in einer neuen untergeordneten Tabelle die Datensätze nach dem Datum absteigend sortiert werden?

Lösung: 

Sie müssen den Ausdruck des Verknüpfungsschlüssels (des Schlüssels, der für die Relation verantwortlich ist) anpassen. Schauen Sie sich als Beispiel den Schlüssel VorgangID in der Tabelle Aktivitäten an. Sein Ausdruck lautet:

Aktivitaeten->VorgangID & DescendNum(DateToString(Aktivitaeten->Datum, "yyyyMMddhhmmss"))

Der Ausdruck besteht aus zwei Teilen: am Anfang steht das Feld, welches den Fremdschlüssel beinhaltet (Aktivitaeten->VorgangID). Der zweite Teil, der nach dem „&“-Zeichen folgt, ist für die Sortierung der untergeordneten Datensätze verantwortlich. Übernehmen Sie den zweiten Teil in Ihren Schlüsselausdruck und tauschen nur das Feld „Aktivitaeten->Datum“ gegen das Datumsfeld aus Ihrer Tabelle, welches für die Sortierung dienen soll.