Warum orgAnice, immer die gleiche Frage?

Was soll man dazu sagen? „Darum“

Warum nicht die Konkurrenz? Welche Konkurrenz?

Natürlich hört sich das erst einmal sehr überheblich an. Hat man aber Zeit sich mit orgAnice zu beschäftigen, dann gilt immer die 80%/20% Regelung. orgAnice beherrscht 80% aller Anforderungen sofort. Das können die anderen auch. Aber mit den verbliebenen 20% haben andere ein Problem. Das können diese nämlich nicht so einfach. Während „wir“ uns leicht an die Aufgaben anpassen können, haben die anderen, ich will mal sagen „Friss und stirb“ Programme. Wenn es passt, dann ist es gut, aber wehe man will eine Erweiterung. Als orgAnice-Kunde/Händler der ersten Stunden gilt für mich weiterhin das Motto des ersten Handbuchs (Software passte noch auf eine Diskette, das sind die kleinen schwarzen viereckigen Plastikhüllen, welche man ab und zu noch in Grabbelkisten findet). Schade das die Krake im Laufe der Jahre verschwunden ist. Einfacher kann man orgAnice nicht beschreiben

Bestehende Rechnung kopieren

Manchmal will man eine bestehende Rechnung duplizieren. Dabei kann man Originalcode, etwas angepasst, verwenden:

Public Sub cstm_CopyRechnung()
' Original: Die Verkaufschance wird mit allen Positionen kopiert
Dim tblRechnung As OrgDbServer31.Table

On Error GoTo ErrHandler

Set tblRechnung = Database.Tables("Rechnungen")
If tblRechnung.EOF Then Exit Sub

If MsgBox("Möchten Sie die aktuelle Rechnung mit allen Positionen kopieren?", _
vbQuestion + vbYesNo, MsgBoxTitle) = vbNo Then Exit Sub

With New CInvoicing
Set .mtblInvoices = tblRechnung
Set .mtblPositions = gTables.GetTable(dbtblRechnungspositionen)
.CopyInvoice
End With

Exit Sub

ErrHandler:
gErrors.DisplayError csErrSource & ".cstm_CopyRechnung"
End Sub

Wie fange ich mit der orgAnice-Programmierung an? (1)

Ich will hier keine VBA-Programmierung schulen. Etwas Grundkenntnisse setze ich voraus. Es gibt genug Tutorials im Internet hierzu. Microsoft hat zwar VB6 (Visual Basic for Applications) schon vor Jahren abgekündigt und will nur sein Visual Studio sehen, das „Problem“ ist aber, das in allen Office-Produkten noch VBA vertreten ist. Daher ist ein Austausch nicht einfach möglich, da es viele Anwender gibt, welche kleinere und größere Programmierungen durchgeführt hat. Wer schon einmal versucht hat, ein bestehendes VB-Projekt nach Visual-Studio zu importieren, weiss, welche Probleme auftreten können. Wir können also bestimmt noch ein paar Jahre auf VBA vertrauen. Und, kann man ein VBA, kann man auch andere Office-Produkte programmieren.

Also, wo fängt man an? Am besten bei den sogenannten „Basics“ (Grundlagen). VBA besteht aus Formularen, Modulen und Klassen. Dabei sind zwei Module zu beachten. Im Modul „Macros“ stehen die Aufrufe der orgAnice-Original-Macros. Im Modul „Usermacros“ die Aufrufe von Addons und sonstige Macros. Hier gehören auch unsere Aufrufe hinein. Die Prozeduren beider Module stehen dann in orgAnice für die Buttons zur Verfügung.

Die eigentlichen Macros sollten dann in eigenen customized Modulen stehen. Das macht das spätere Update einfacher. Was customizen ist und was dort zu beachten ist, steht in einem anderen Beitrag.

Fangen wir für den Anfang einmal einfach an (Hello World). Wir definieren ein eigenes Modul „cstm2_macros“. Hier erstellen wir eine einfache Prozedur:

Public Sub cstm2_HelloWorld()
    msgbox "Hello World"
end Sub

Diese könnten wir jetzt sofort starten. Dafür gibt es den Play-Button oben in der Symbolleiste. Aber wir wollen orgAnice-konform bleiben. Daher erstellen wir eine Prozedur in UserMacros:

Public Sub cstm2_Start()
    cstm2_macros.cstm2_HelloWorld
end Sub

Diese Prozedur könnten wir uns jetzt auch auf einen Button in orgData, der Oberfläche von orgAnice legen und dort starten. Ein Modul, zwei Prozeduren und schon der erste Erfolg. Das war zum warm werden. Im folgenden wollen wir uns dann um schönere Dinge kümmern.

Kurzer Abschweif. Wo liegen die Probleme bei der Programmierung von orgAnice. Man kennt das Objektmodell nicht. Das ist aber bei allen Anfängen das gleiche. Was macht man? Als Profi sieht man sich das Objektmodell mit <F2> im Objektexplorer an, als Anfänger sieht man sich einfach die DEMO-Datenbank an. Ca. 90% alle Befehle werden dort verwendet und davon sind ca. 90% auch kommentiert. Das sollte für den Anfang auch reichen. Man sucht sich einfach den gewünschten Befehl und sieht sich an, wie andere damit umgegangen sind. Wie sucht man? Natürlich mit <Strg><f>, genauso wie in orgAnice, allen Office-Produkten, sowie vielen anderen Produkten.

 

Wiki des orgAnice FAQ

Willkommen zur FAQ-Seite der Software orgAnice. Dieses ist eine rein private Seite und soll bei der Suche nach Problemen helfen. Es beinhaltet die Original-FAQ´s sowie weitere Informationen (diese sind entsprechend gekennzeichnet).

Warum eine eigene Seite?

orgAnice lebt von Benutzern, welche die unendlichen Möglichkeiten lieben. In all den Jahren, in denen ich jetzt orgAnice kenne (immerhin seit 1991), habe ich kein Programm kennen gelernt, welches sich passgenau für einen Kunden anpassen lässt, ohne sich vom Standard zu entfremden. Natürlich muss da ein paar Besonderheiten berücksichtigen, aber das ist nicht schwer. Aller Anfang ist schwer, daher will ich mit Code-Beispielen und Anleitungen helfen.

 

OKB-000283 | Fehler „Zugriff verweigert“ beim Umwandeln ins KS-Format

Betrifft: orgAnice CRM ab 2012 R2

Problem: 

Beim Versuch eine Datenbank im SQL-Format ins KeyStorage-Format umzuwandeln erscheint die Fehlermeldung:

Fehler 0x00000046

Err.Description: Zugriff verweigert

OrgErrorTexts: Der Remoteserver wurde angehalten oder wird gerade gestartet.

 

Ursache: 

Die genaue Ursache nicht noch nicht bekannt. Der Fehler scheint mit fehlerhaften Einträgen in der Spalte „DocSessionOid“ in der SQL-Tabelle „__Org_Documents“ zusammenzuhängen.

Lösung: 

Setzen Sie in der in der SQL-Tabelle „__Org_Documents“, in der Spalte „DocSessionOid“ alle Datensätze auf den Standardwert ‚00000000-0000-0000-0000-000000000000‘ zurück.

Führen Sie hierfür in Ihrer SQL-Datenbank den folgenden Befehl aus:

update  [dbo].[__Org_Documents]

  set DocSessionOid = '00000000-0000-0000-0000-000000000000'

where not DocSessionOid like '00000000-%'

Lösungsweg A: 

Das können Sie entweder im SQL Server Management Studio tun:

Lösungsweg B: 

Oder direkt in orgAnice im VBA-Direktbereich. Führen Sie hier die folgende Zeile aus:

Database.Connection.Execute "update  [dbo].[__Org_Documents] set DocSessionOid = '00000000-0000-0000-0000-000000000000' where not DocSessionOid like '00000000-%'"

Es erscheint keine Bestätigung, aber danach lässt sich die Datenbank wieder ins KS-Format umwandeln.

Hinweis:

Das KeyStorage-Format ist nur für Entwicklungs- und Migrationszwecke sowie die Erstellung von Installationspaketen zulässig. Der Einsatz des KeyStorage-Formats in einer Produktivumgebung wird nicht unterstützt. Eventueller Support ist kostenpflichtig!

OKB-000220 | Übertragung der Strukturänderungen dauert ungewöhnlich lange

Betrifft: ab orgAnice CRM 2010

Problem: 

Übertragung der Strukturänderungen dauert ungewöhnlich lange, die Statusanzeige bleibt auf dem Punkt „Aktualisiere Feld DocText in interner Tabelle __Org_Documents“ stehen.

Ursache: 

Zunächst muss festgestellt werden, dass die Aktualisierung des Feldes DocText, welches für die Volltextsuche in Dokumenten zuständig ist, prinzipiell lange dauern kann. Der Richtwert liegt dabei etwa einer 1 Minute pro Gigabyte Datenbankgröße. Hier spielen jedoch mehrere Faktoren, wie Festplattenperformance, Rechner und Serverauslastung eine Rolle.

Sollte jedoch die Anzeige im Vergleich zur normalen Dauer der Übertragung ungewöhnlich lange an diesem Punkt stehen bleiben (z.B. dauert die Übertragung der Strukturänderungen normalerweise 30 Minuten, die Anzeige steht aber schon seit 1 Stunde), dann kann es an der folgenden Ursache liegen:

Ursache 1:

Der TEMP-Ordner ist voll, es lassen sich dort keine temporären Dokumenten mehr erstellen.

Lösung 1:

Löschen Sie den Inhalt des TEMP-Ordners. Wenn Sie sich nicht sicher sind, ob alle Dateien gelöscht werden können, dann löschen Sie nur Dateien mit dem folgenden Muster: ORG*.tmp

Den TEMP-Ordner erreichen Sie, in dem Sie in der Adresszeile des Windows-Explorers die Zeichenkette: %TEMP% eingeben und mit Enter bestätigen.

Ursache 2:

Eins oder mehrere der in der Tabelle “ __Org_Documents“ abgelegten Dokumente ist defekt und verursacht ein Aufhängen des zuständigen IFilters. Der IFilter gibt keine Fehlermeldung zurück, die Übertragung der Strukturänderungenwartet, bis der IFilter fertig wird und damit geht es nicht weiter.

Lösung 2:

Führen Sie im SQL Management Studio die folgende SQL-Abfrage aus:

UPDATE __Org_Documents

SET DocText='',

[DocTextModificationTime]=[DocModificationTime]

Where DocText IS NULL OR DocText =''

Sie belegt alle Dokumente, die bisher keinen Inhalt in der Spalte DocText haben, mit einem leeren Inhalt und setzt zusätzlich das Aktualisierungsdatum der Spalte. Damit werden diese Dokumente beim nächsten Aktualisieren der Spalte nicht mehr beachtet.

Das Vorgehen ist zwar nur ein Workaround, der aber das Ziel – eine erfolgreiche Übertragung der Strukturänderungen  – erfüllt.

OKB-000281 | Filtern über Eingabefelder funktioniert nicht

Betrifft: orgAnice Data ab 2012 R2

Problem:

Die Funktionalität „Filtern über Eingabefelder“ funktioniert für das letzte Feld in der Feldauflistung nicht. Der Klick auf die Schaltfläche „Filter ausführen“ führt keinen Filter aus, die Abfrage von Table.FilterPrq gibt Nothing zurück.

Ursache:

Das Filtern über Eingabefelder berücksichtigt fälschlicherweise nicht das letzte Feld in der Feldauflistung.

Bsp. Nach dem Feld „Sprache“ kann in dieser Konfiguration nicht gefiltert werden:

 

Lösung:

Am Ende der Feldauflistung ein Feld platzieren, nach dem nicht gefiltert wird (z.B. ein Boolean-Feld, oder ein Feld, das in keinem Tabellenlayout sichtbar ist, wie z.B. die ID)

OKB-000280 | Löschen von Merkmalen aus markierten Adressen

Betrifft: ab orgAnice Pi

Frage: Wie kann ein Adressmerkmal aus allen markierten Adressen entfernt werden?

Antwort: 

Das geht nur im Konfigurationsmodus über die Schaltfläche „Datensätze löschen“.

Angenommen Sie möchten das Adressmerkmal „Behörde“ mit dem Wert „Amt – Bauamt“ bei allen markierten Adressen löschen. Dann lautet der Ausdruck für die Löschbedingung:

Adressmerkmale->Merkmal = "Behörde" And Adressmerkmale->Wert = "Amt - Bauamt" And Marked("Adressen")

1. Wechseln Sie mit der Taste F12 in den Konfigurationsmodus

2. Aktivieren Sie die Tabelle „Adressmerkmale“

3. Betätigen Sie die Schaltfläche „Datensätze – Löschen“

4. Geben Sie bei „Bedingung“ den obigen Ausdruck an

5. Passen Sie die Begriffe in Anführungszeichen an

6. Klicken Sie auf „OK“

OKB-000278 | Outlook Connector wird nicht geladen

Betrifft: orgAnice CRM ab 2012 R2, MS Outlook ab 2010

Problem:
Outlook Connector wird nicht geladen

Ursache:

Der Schlüssel LoadBehavior unter:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\orgAnice.Outlook.Connector

besitzt nicht den Wert 3.

Lösung: 

Der Schlüssel LoadBehavior unter:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\orgAnice.Outlook.Connector

muss den Wert 3 besitzen.