Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet 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
-
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.
-
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.
-
Habe das mal unter 8.5.2. FP2 getestet. Da geht es.
-
... 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
-
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 .....
-
Noch nicht .....
Ebend. Deshalb würde ich mich ganz schnell davon verabschieden. Ich habe bei solchen Sonderzeichen und bei Umlauten
immer Bauchschmerzen.
-
Danke für eure Tests.
In einer neuen DB funktioniert die Suche korrekt. Also muss etwas mit den "alten" DBs unstimmig sein. :(
-
Hast Du schon mal die Ansichten verworfen und neu aufbauen lassen?
Bernhard
-
Auf die DB wurden die folgenden Commands "losgelassen":
- fixup -f -j -v
- compact -c
- updall -R
- updall -X
Passt das?
-
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
-
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é
-
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
-
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é
-
Guten Morgen,
die Ausführung von uni(mid(s,x)) gibt bei altem und neuem Feldinhalt den Wert 8364 zurück.
-
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