Veröffentlicht Mon, 27 Jun 2022 13:08:00 GMT von Stefan Sorg
Hat man ein Indexfeld vom Typ Text und enthält dieser Index in einem Dokument keinen Text (also einen leeren String), wird die Bedingung "Index->ist nicht gleich->eineZeichenkette" absurderweise als unerfüllt betrachtet.

Wobei ein Jeder hier wahrscheinlich zustimmen wird, dass "eineZeichenkette" durchaus etwas anders ist als "nichts" und die Bedingung erfüllt sein sollte.

Als Beispiel einmal die Bedingung im Bild (aus dem Regeleditor für eine Liste): Ist das Textfeld "_workflowHUStatus" leer, wird DocuWare die eingestellte Bedingung als nichterfüllt betrachtet. Ein leeres Feld wird also als nicht-nicht-gleich "deaktiviert" betrachtet - oder abgekürzt: ein leeres Feld matcht hier auf alle Strings.

Ist dieses widersinnige Verhalten DocuWares irgendwo dokumentiert?

 
Veröffentlicht Mon, 27 Jun 2022 14:32:32 GMT von Simon H. Hellmann Toshiba Tec Germany Imaging Systems GmbH IT-Consultant Document Management Solutions

Hallo Herr Sorg,

ich habe gerade etwas in der Dokumentation gesucht, kann aber auch nichts finden.

Allerdings kann ich dazu sagen, dass dieses Verhalten bereits seit mindestens Version 6.10 besteht (ältere Systeme habe ich nie administriert).

Am einfachsten lässt sich dies berücksichtigen, wenn man die "Feld Ist nicht gleich" Regel in einer ODER-verknüpften Gruppe mit "Feld Ist leer" baut.

Dieses Verhalten tritt an allen Stellen, wo der Regeleditor zum Einsatz kommt, auf.

Gruß aus Neuss,

Simon H. Hellmann

DocuWare System Consultant

Veröffentlicht Tue, 28 Jun 2022 06:33:24 GMT von Fabian Kall
<p>Hallo Herr Sorg,<br> <br> Ein Indexfeld vom Typ Text, das nicht gefüllt ist, ist in der Datenbank als NULL repräsentiert und nicht als "leerer String".&nbsp;<br> Daher gibt auch jede Art von Vergleich, egal welcher&nbsp;Vergleichsoperator benutzt wird, niemals "true" zurück.<br> <br> Mehr dazu hier:<br> https://learnsql.com/blog/null-comparison-operators/<br> &nbsp;</p>
Veröffentlicht Tue, 28 Jun 2022 06:47:59 GMT von Stefan Sorg
Hallo Herr Hellmann,

Vielen Dank für ihre Bemühung und Antwort.
Ich halte das merkwürdige Verhalten für einen Design Flaw, der sicher schon für viel Ungemach gesorgt hat.

Grüße
Stefan Sorg
Veröffentlicht Tue, 28 Jun 2022 06:59:52 GMT von Christian Mucha Software &amp; Solution Consultant / Senior Developer
Hallo Herr Sorg,<br> <br> Der Fehler kommt aber nicht von DocuWare sondern das sind Datenbank-Regeln.<br> Wenn Sie alle Dokumente sehen wollen wo nicht&nbsp; z.B "gelöscht" im Indexfeld steht, dann müssen sie Ihre Bedingungen erweitern:<br> where indexfeld is null OR (indexfeld is not null AND indexfeld&lt;&gt;'gelöscht')<br> <br> LG<br> Christian
Veröffentlicht Tue, 28 Jun 2022 07:18:38 GMT von Stefan Sorg
Hallo Herr Mucha, Hallo Herr Krall,

Danke auch ihnen.

Mir ist schon klar, dass da leere Strings INTERN auf null gecastet wurden und die Auswertung der Bedingung deshalb kontraintuitiv erfolgt.

Allerdings nutze ich DW Cloud und bin 100% auf diese umständlichen GUI-Einstellungen für die Konfiguration angewiesen und werde weitgehend vom SQL-Backend ferngehalten (siehe angehangenes Bild)

Im Kontext der Web-UI und der Einstellungen die dort getroffen werden können (und wie diese "kommuniziert" werden), ergibt diese Art der Bedingungsauswertung keinen Sinn und stellt meines Erachtens kein erwartbares Verhalten dar. Es bedingt einfach wieder einen Workaround, stellt eine Schwelle beim Erlernen des Systems dar und sorgt für erhöhte Konfigurationsfehlerquoten (zumal so eingebaute Fehler häufig nicht gleich auffallen dürften).

@Herr Krall: Woher stammt das Zitat? Ich kann im Web (per Google) nichts finden?!

Grüße
Stefan

Sie müssen angemeldet sein um Beiträge in den Foren zu erstellen.