Darstellung der Datensatz-ID in combit CRM an Datenbankformat anpassen

Ausgangslage

In combit CRM wird an unterschiedlichen Stellen (z. B. in der Eingabemaske oder der Übersichtsliste) die Datensatz-ID (als global eindeutige ID bzw. GUID) angezeigt. Diese weicht jedoch in dem dargestellten Format von dem in anderen Anwendungen verwendeten Format ab.

Für die in diesem Artikel verwendete Beispielfirma Luna Aventuras sieht dieses Format wie folgt aus:

  • ce05a0f11dbf464f8a7f14666ddd0f3a (combit CRM)
  • F1A005CE-BF1D-4F46-8A7F-14666DDD0F3A (Microsoft SQL Server Management Studio)

Hintergrund

Dieser Unterschied des Formats ist dadurch begründet, dass in combit CRM eine allgemeine Datenbankzugriffsschicht verwendet wird, da sowohl Microsoft SQL Server als auch PostgreSQL als Datenbanksystem unterstützt wird, diese aber unterschiedliche Formate verwenden.

Das von PostgreSQL genutzte Format ist dabei identisch zu dem in combit CRM. Die nachfolgende Lösung bezieht sich demnach ausschließlich auf den Microsoft SQL Server.

Lösung

Das Format dieser Datensatz-ID kann in combit CRM für jedes gewünschte Feld angepasst werden. Üblicherweise wird das der Fall sein für Felder der internen Feldtypen Datensatz-ID und Global eindeutige ID, nicht aber ausschließlich, wenn z. B. ein Feld vom internen Feldtyp Zeichen eine Datensatz-ID enthält.

Es empfiehlt sich, in den Ansichteneigenschaften für das gewünschte Feld ein neues Formelfeld anzulegen und die nachfolgende Formel zu verwenden:

«(Mid$(ID,6,2) +
  Mid$(ID,4,2) + 
  Mid$(ID,2,2) + 
  Mid$(ID,0,2) + '-' +
  Mid$(ID,10,2) + 
  Mid$(ID,8,2) + '-' +
  Mid$(ID,14,2) + 
  Mid$(ID,12,2) + '-' + 
  Mid$(ID,16,4) + '-' + 
  Mid$(ID,20,12))»

Eingabemaske

In der Eingabemaske haben Sie die Möglichkeit, neben dem neuen Formelfeld alternativ auch ein Textfeld mit der Formel zu befüllen.

Eingabemaske
(oben: standardmäßig, mittig: Textfeld mit Formel, unten: Formelfeld)

Übersichtsliste

In der Übersichtsliste ist es nicht möglich, ein Textfeld zu verwenden, hier kommt nur das Formelfeld in Frage.


(links: standardmäßig, rechts: Formelfeld)

SQL-Abfragen

SQL Server-seitig enthält ein solches Datensatz-ID-Feld physikalisch keine Bindestriche, geschweifte Klammern o. ä., diese werden dort erst bspw. bei der Wandlung in einen Zeichenkettentyp wie nvarchar hinzuformatiert, analog dazu verhält sich das Microsoft SQL Server Management Studio bei der Darstellung der Werte.

Um im Microsoft SQL Server Management Studio das Format ohne Bindestriche, wie eben in combit CRM standardmäßig dargestellt, in SQL-Abfragen verwenden zu können, können Sie der Datensatz-ID ein 0x voranstellen:

SELECT
[ID]
,[CustomerNo]
,[Company]
FROM [Companies]
WHERE ID = 0xce05a0f11dbf464f8a7f14666ddd0f3a

Alternativ können Sie dazu auch die combit CRM-SQL-Funktion dbo.cmbt_fct_UnformatGUID verwenden:

SELECT
[ID]
,[CustomerNo]
,[Company]
FROM [Companies]
WHERE dbo.cmbt_fct_UnformatGUID([ID]) = 'ce05a0f11dbf464f8a7f14666ddd0f3a'

Der Vollständigkeit halber sei noch erwähnt, dass es ebenso die combit CRM-SQL-Funktion dbo.cmbt_fct_FormatGUID gibt, die das Format in die andere Richtung umformatieren kann, diese wird jedoch für diesen Artikel nicht benötigt.

Wie oben erwähnt, ist es unter PostgreSQL bzw. pgAdmin nicht notwendig, eine Abfrage zu formatieren, da hier bereits das unformatierte Format verwendet wird:

SELECT
"ID"
,"CustomerNo"
,"Company"
FROM "Companies"
WHERE "ID" = 'ce05a0f11dbf464f8a7f14666ddd0f3a'