Benutzer mit den meisten Antworten
Fetchxml- oder OData-Filter unterscheidet nicht zwischen Gross- und Kleinschreibung?!

Frage
-
Hallo Community,
folgendes Problem: Eine Tabelle hat ein einstelliges alphanumerisches Schlüsselfeld. Es gibt eine Zeile mit dem Schlüssel "d" und eine Zeile mit dem Schlüssel "D".
Der Filterbedingung lautet beim Fetch <condition attribute="schluesselfeld" operator="eq" value="D" />
oder bei OData "$filter=schlueselfeld eq 'D'
Es werden mir immer beide Zeilen zurück gegeben. Egal ob ich den Value auf "d" oder "D" setze. Wer weiß, wie man die Abfrage gestalten muss, damit zwischen Gross- und Kleinschreibung unterschieden wird und ich nur die Zeile erhalte, die genau dem Value entspricht?!
Besten Dank im Voraus,
Stephan
Antworten
-
Hallo Stephan,
soweit mir bekannt, kannst du dieses Verhalten nicht direkt durch Suchparameter lösen. Der WebService baut lediglich ein SQL-Statement zusammen, dass dann vom SQL-Server interpretiert wird und die Interpretation basiert auf den Einstellungen der SQL-Tabelle u SQL-Spalten. Folglich müsstest Du die Eigenschaften der SQL-Spalten anpassen, dass diese case-sensitive agieren sollen.
Die normale Schnellsuche funktioniert da ähnlich und diese lässt sich durch Einstellungen in den SQL-Settings ändern. Wenn Du CRM Online benutzt, kenne ich jedoch keine mögliche Lösung für dein Problem. Grundsätzlich gibt es hier aber keinen mir bekannten "supported" Weg von Microsoft.
Du wirst sicherlich schnell etwas finden, wenn du nach "crm 2011 case-sensitive quick search" oder ähnlichem googlest
- Als Antwort markiert Stephan Schulte Dienstag, 19. Februar 2013 13:21
-
Hallo Stephan!
Beim Fetch unterscheidet der equal-Operator nicht zwischen Gross-und Kleinschreibung. Einen "schärferen" Operator für Zeichenketten gibt es nicht.
Hat es einen besonderen Grund, warum die Werte "d" und "D" als gültige unterschiedliche Werte benutzt werden.
Wenn du als Typ des Schluesselfeldes "Ganzzahl" verwendest, werden die Werte sauber unterschieden.
Ich hoffe das bringt weiter. Andreas(a)Donaubauer.com www.crmfaq.de
- Bearbeitet Andreas Donaubauer Dienstag, 19. Februar 2013 12:43
- Als Antwort markiert Stephan Schulte Dienstag, 19. Februar 2013 13:26
-
Hallo Stephan,
was die Kollegen schreiben ist soweit richtig. Klärt aber nicht worin das Problem besteht.
Die "Case Sensitivität" hängt von der Collation der Datenbank ab.
Alle Collations mit _CI im Namen sind Case insensitiv.
Alle Collations mit _CS im Namen sind Case sensitiv.
SELECT * FROM ::fn_helpcollations() listet die auf den SSQL Server verfügbaren Collations auf.
ALTER DATABASE xxxx_mscrm COLLATE Latin1_General_CS_AS setzt eine andere Datenbank Collation.
Das hat natürlich massive Auswirkungen. Die meisten Anwender sind nicht "Case sensitiv" Schnellsuche "meier" finden kein "Meier" verstehen die nicht.
Ich weiß auch nicht ob das supported ist. Aber zu mindestens sollte man wissen wo die Case Sensitivität herkommt ;-)
Grüße Thomas
- Als Antwort markiert Michael Sulz Freitag, 22. Februar 2013 07:38
-
Hallo Stephan,
übrigens kann man die Collation für jede Organisation beim Einrichten über den Bereitstellungsmanager selbst festlegen wobei eine CI Collation voreingestellt ist.
Grüße
Thomas
- Als Antwort markiert Stephan Schulte Montag, 25. Februar 2013 10:16
-
Hallo Stephan,
ich würde lieber in Kauf nehmen, die zwei Datensätze zurückzukommen und nachträglich manuell zu filtern. Normalerweise geht eine Case-Sensitivität mit einer geringeren Performance einher.
Viele Grüße,
JürgenJürgen Beck
Dipl. Kfm./Wirtschaftsinformatik
MVP, MCSD.NET, MCITP DBA, MCDBA, MCSE
Microsoft Certified Business Management Solutions Professional
Microsoft Certified CRM Developer
Microsoft Certified Trainer
ComBeck IT Services & Business Solutions
Microsoft Gold Certified Partner
Microsoft Small Business Specialist
Developing & Supporting Business Applications from small business to big enterprises covering scores of sectors
http://www.combeck.de
- Als Antwort markiert JuergenBeckModerator Donnerstag, 28. März 2013 18:02
Alle Antworten
-
Hallo Stephan,
soweit mir bekannt, kannst du dieses Verhalten nicht direkt durch Suchparameter lösen. Der WebService baut lediglich ein SQL-Statement zusammen, dass dann vom SQL-Server interpretiert wird und die Interpretation basiert auf den Einstellungen der SQL-Tabelle u SQL-Spalten. Folglich müsstest Du die Eigenschaften der SQL-Spalten anpassen, dass diese case-sensitive agieren sollen.
Die normale Schnellsuche funktioniert da ähnlich und diese lässt sich durch Einstellungen in den SQL-Settings ändern. Wenn Du CRM Online benutzt, kenne ich jedoch keine mögliche Lösung für dein Problem. Grundsätzlich gibt es hier aber keinen mir bekannten "supported" Weg von Microsoft.
Du wirst sicherlich schnell etwas finden, wenn du nach "crm 2011 case-sensitive quick search" oder ähnlichem googlest
- Als Antwort markiert Stephan Schulte Dienstag, 19. Februar 2013 13:21
-
Hallo Stephan!
Beim Fetch unterscheidet der equal-Operator nicht zwischen Gross-und Kleinschreibung. Einen "schärferen" Operator für Zeichenketten gibt es nicht.
Hat es einen besonderen Grund, warum die Werte "d" und "D" als gültige unterschiedliche Werte benutzt werden.
Wenn du als Typ des Schluesselfeldes "Ganzzahl" verwendest, werden die Werte sauber unterschieden.
Ich hoffe das bringt weiter. Andreas(a)Donaubauer.com www.crmfaq.de
- Bearbeitet Andreas Donaubauer Dienstag, 19. Februar 2013 12:43
- Als Antwort markiert Stephan Schulte Dienstag, 19. Februar 2013 13:26
-
Hallo Andreas,
besten Dank für den Hinweis. Bei der Tabelle geht es um einen Datenaustausch zwischen SAP und MSCRM. Leider ist bei einer SAP-Tabelle der Key sehr "schmallippig" und bei der Synchronisation hätte ich gerne mit dem einstelligen alphanumerischen SAP-Key auf eine MSCRM-Tabelle "zugegriffen".
Beste Grüße,
Stephan
-
Hallo Stephan,
was die Kollegen schreiben ist soweit richtig. Klärt aber nicht worin das Problem besteht.
Die "Case Sensitivität" hängt von der Collation der Datenbank ab.
Alle Collations mit _CI im Namen sind Case insensitiv.
Alle Collations mit _CS im Namen sind Case sensitiv.
SELECT * FROM ::fn_helpcollations() listet die auf den SSQL Server verfügbaren Collations auf.
ALTER DATABASE xxxx_mscrm COLLATE Latin1_General_CS_AS setzt eine andere Datenbank Collation.
Das hat natürlich massive Auswirkungen. Die meisten Anwender sind nicht "Case sensitiv" Schnellsuche "meier" finden kein "Meier" verstehen die nicht.
Ich weiß auch nicht ob das supported ist. Aber zu mindestens sollte man wissen wo die Case Sensitivität herkommt ;-)
Grüße Thomas
- Als Antwort markiert Michael Sulz Freitag, 22. Februar 2013 07:38
-
Hallo Stephan,
übrigens kann man die Collation für jede Organisation beim Einrichten über den Bereitstellungsmanager selbst festlegen wobei eine CI Collation voreingestellt ist.
Grüße
Thomas
- Als Antwort markiert Stephan Schulte Montag, 25. Februar 2013 10:16
-
Hallo Thomas,
ich denke das muss bereits bei der SQL Server Installation berücksichtigt werden. Da im Amerikanischen Standard CI für Case Insesitive voreingestellt ist, wird vielfach so installiert. Dann steht CS für Case Sensitive im Bereitstellungsmanager auch nicht zur Auswahl.
Beste GRüße,
Stephan
-
Hallo Stephan,
ich würde lieber in Kauf nehmen, die zwei Datensätze zurückzukommen und nachträglich manuell zu filtern. Normalerweise geht eine Case-Sensitivität mit einer geringeren Performance einher.
Viele Grüße,
JürgenJürgen Beck
Dipl. Kfm./Wirtschaftsinformatik
MVP, MCSD.NET, MCITP DBA, MCDBA, MCSE
Microsoft Certified Business Management Solutions Professional
Microsoft Certified CRM Developer
Microsoft Certified Trainer
ComBeck IT Services & Business Solutions
Microsoft Gold Certified Partner
Microsoft Small Business Specialist
Developing & Supporting Business Applications from small business to big enterprises covering scores of sectors
http://www.combeck.de
- Als Antwort markiert JuergenBeckModerator Donnerstag, 28. März 2013 18:02