Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Gravedigger am 01.08.11 - 12:52:29

Titel: GetDocumentByKey und €-Symbol
Beitrag von: Gravedigger am 01.08.11 - 12:52:29
Hallo zusammen,

über die Suche (auch in anderen Foren) bin ich zu meinem Problem nicht fündig geworden. Folgendes:
Wir haben einen Testserver auf 8.5.2 FP 3 aktualisiert, vorher 7.0.3. Es läuft alles wunderbar bis auf eine Sache und zwar wenn im LotusScript "GetDocumentByKey" auf einen String mit einem €-Symbol am Anfang trifft. Genauer gesagt:
Die Ausführung der Codezeile Set doc = view.GetDocumentByKey("€HundKatzeMaus", True) ergibt keinen Treffer, doc ist immer Nichts.
Innerhalb der Ansicht ist die erste Spalte sortiert und beinhaltet auch den gesuchten Wert. Entferne ich in der Spalte und im gesuchten String das €-Symbol so funktioniert alles.

Leider wird das Symbol sehr oft verwendet  :-\ somit kommt eine Änderung der Ansichten und Agenten fast nicht in Frage.
Hat jemand eine Idee, die Suche wieder gangbar zu machen?


Ich bin mir nicht sicher ob es ein Admin- oder Entwicklerthema ist, falls nötig bitte den Beitrag verschieben.

Vielen Dank und Gruß
gravedigger
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: klaussal am 01.08.11 - 13:06:23
Was macht ihr eigentlich, wenn mal das €-Symbol wegfällt ?

Ich glaube, die vernünftigste Methode ist, alles umzustellen. Mag zwar mühsam sein, aber dafür zukunftssicher.
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: Gravedigger am 01.08.11 - 13:12:55
Aktuell hoffen wir, dass der Euro noch ein bisschen durchhält.  ;)
Eine Umstellung ist aktuell nicht möglich.

Verändert sich vielleicht beim Update eine Zeichensatzeinstellung? - Konnte aber keinen Unterschied feststellen.
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: klaussal am 01.08.11 - 13:19:37
Habe das mal unter 8.5.2. FP2 getestet. Da geht es.
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: ata am 01.08.11 - 14:11:52
... man könnte das Symbol auch abfangen, indem man es in etwas findbares maskiert € => "[EURO]"
Also an den entsprechenden Stellen einen Replace - nur so ne Idee

Toni
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: Thomas Schulte am 01.08.11 - 14:19:34
Gleiches Ergebnis wie klauss. Unter 8.5.2 FP2 funktioniert das. FP 3 hab ich jetzt noch auf keinem Rechner. Wenn das wirklich so ist, dann würde ich an euerer Stelle ganz schnell einen PMR bei IBM aufmachen. Das € gehört ja schließlich nicht zu den verbotenen Zeichen.

Noch nicht .....
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: klaussal am 01.08.11 - 14:25:42
Zitat
Noch nicht .....

Ebend. Deshalb würde ich mich ganz schnell davon verabschieden. Ich habe bei solchen Sonderzeichen und bei Umlauten
immer Bauchschmerzen.
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: Gravedigger am 01.08.11 - 14:47:42
Danke für eure Tests.
In einer neuen DB funktioniert die Suche korrekt. Also muss etwas mit den "alten" DBs unstimmig sein.   :(
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: koehlerbv am 01.08.11 - 14:49:11
Hast Du schon mal die Ansichten verworfen und neu aufbauen lassen?

Bernhard
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: Gravedigger am 01.08.11 - 15:02:33
Auf die DB wurden die folgenden Commands "losgelassen":

- fixup -f -j -v
- compact -c
- updall -R
- updall -X

Passt das?
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: koehlerbv am 01.08.11 - 15:09:44
updall -R wäre das Entscheidende gewesen, compact -c macht ein updall -R letztlich auch mit. Die anderen Commands haben keinen Einfluss auf das Problem des Threads.

Bernhard
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: it898ur am 01.08.11 - 15:47:34
Hallo,

wir hatten vor ein paar Tagen ein ähnlich gelagertes Phänomen mit dem €-Zeichen. Bei uns war es Teil einer Kategorie in einer Ansicht und nach einer Dokumentänderung in 8.5.1 tauchte die Kategorie plötzlich 2 mal auf (ältere Dokumente waren 7.0.2 erfasst).

Bei unseren Recherchen konnten wir die genaue Fehlerursache nicht reproduzieren, aber es muss mit dem Zeichensatz zusammenhängen, da bei dem neuen Dokument das Kategoriefeld 1 Byte länger war als bei den alten, obwohl weder per Formelsprache noch per Script Differenzen zwischen den Feldwerten existierten.

Ich vermute Ihr habt jetzt das gleiche Problem - der Suchwert hat eine andere Bytelänge als die Kategorie und damit gibt es keinen Treffer.

Da die Ansichten in der Vorschau des Designers ok waren und wir auch sonst keine Möglichkeit gefunden haben den Fehler zu korrigieren (weder updall noch compact oder fixup), haben wir uns letztendlich dazu durchgerunden, das Kategoriefeld in allen Dokumenten zu löschen und neu zu setzen - dann hatten zumindest alle wieder die gleiche Bytelänge.

Zur Sicherheit würde ich aber zukünftig versuchen bei Ansichten, wo ein DBLookup oder ein GetDocumentByKey beteiligt ist, das €-Zeichen umzuwandeln.

Gruß

André

Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: pram am 01.08.11 - 18:38:39
Das mit dem 1 Byte zusätzlich stärkt folgende Theorie die ich gerade aufgestellt habe:

der € hat als Ascii-Code 0x80 und als UTF-8-Code 0x20AC
Beides ist zwar das gleiche Zeichen (sieht gleich aus) aber die Byte-Repräsentationen der Strings sind nicht identisch.
Je nach Notesversion/Betriebssystem hat der € einen unterschiedlichen Wert ;)... evtl kannst du das mal mit uni(mid(s,x)) untersuchen

Gruß
Roland
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: it898ur am 02.08.11 - 08:32:56
Guten morgen,

da wir die Daten inzwischen bereinigt haben, kann ich das leider nicht merh prüfen, aber ich werde mir den Trick merken !

Gruß

André
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: Gravedigger am 02.08.11 - 10:39:01
Guten Morgen,

die Ausführung von uni(mid(s,x)) gibt bei altem und neuem Feldinhalt den Wert 8364 zurück.
Titel: Re: GetDocumentByKey und €-Symbol
Beitrag von: Gravedigger am 05.08.11 - 18:02:41
Hallo,

unser Workaround:
Names.nsf: Alle betroffenen Gruppen löschen und wieder anlegen (ein Öffnen und erneutes Speichern hilft nicht)
ACLs: Alle betroffenen Gruppen löschen und neu hinzufügen
Felder und Werte in DBs: Feld löschen und mit dem gewünschten Wert neu anlegen

Nochmals Danke für die Antworten und ein schönes Wochenende