Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit dem ß (https://www.delphipraxis.net/70359-problem-mit-dem-ss.html)

Zottel 29. Mai 2006 11:41

Datenbank: MSSQL • Version: 2000 • Zugriff über: MDAC

Problem mit dem ß
 
Moinmoin.
Ich habe da eine Herrausforderung mit unserem MSSQL server.
Vielleich kann mir ja einer von euch helfen.

Ich habe eine Kundenndatenbank, in der Nachnamen in einer gesonderten Tabelle stehen.
Wenn ich da jetzt einen nachnamen suche, der ein "ß" beinhaltet, bekomme ich alle rausgegeben, die ein "ß" oder ein "ss" haben.
Wenn ich z.b. 'Kleß' hinzufügen will, sucht er in der tabelle den index raus, oder fügt den nachnamen hinzu, wenn er noch nicht existiert.
Nu findet er plötzlich 'Kless' statt 'Kleß' und gibt den völlig falschen Index zurück.
Kann man das ausstellen? Und so behandeln lassen, das ein 'ß' wie ein 'ß' behandelt wird?

ich bin verwirrt.
Ist das evtl. eine ANSI<>OEM konvertierung?

Gruss Jens

marabu 29. Mai 2006 12:30

Re: Problem mit dem ß
 
Hallo Jens,

schau dir dazu doch mal die COLLATE Klausel an. Du kannst sie im DDL Statement verwenden, aber auch als Spaltenzusatz in einem SELECT-Statement.

Grüße vom marabu

Zottel 29. Mai 2006 12:55

Re: Problem mit dem ß
 
Danke!
das wars.
Jetzt muss ich nur noch eine einstellung finden, die Gross/Klein ignoriert, aber alle anderen zeichen so läßt...
Aber somit habe ich wenigstens jetzt einen ansatzpunkt ;-)

danke nochmal!

marabu 29. Mai 2006 13:13

Re: Problem mit dem ß
 
Zitat:

Zitat von Zottel
Jetzt muss ich nur noch eine einstellung finden, die Gross/Klein ignoriert

Das sind alle mit _CI im Namen...

marabu

Zottel 29. Mai 2006 15:07

Re: Problem mit dem ß
 
Perfekt. danke.
ich nehme jetzt SQL_Latin1_General_CP1_CI_AS
der müßte alles genau so machen, wie ich es will ;-)

Zottel 30. Mai 2006 09:36

Re: Problem mit dem ß
 
Ich habe grad bemerkt, das nach dem umbau der Tabelle auf das Collate SQL_Latin1_General_CP1250_CI_AS
die Replication nicht mehr funktioniert.

hmm... was macht dann mehr sinn?
1) Das Collate in der Tabelle anwenden, in der es gebraucht wird, oder
2) es in der Abfrage anzuwenden, die auf diese Tabellen zugreift?

bei 1) muss man ständig daran denken, das Collate in neuen Abfragen mit zu benutzen.
2) dürfte von der performance besser sein, aber ich kriege die Replication nicht mehr zum laufen.

?? Hat jemand einen Tipp?

marabu 30. Mai 2006 10:12

Re: Problem mit dem ß
 
Zitat:

Zitat von Zottel
hmm... was macht dann mehr sinn?
1) Das Collate in der Tabelle anwenden, in der es gebraucht wird, oder
2) es in der Abfrage anzuwenden, die auf diese Tabellen zugreift?

Es gibt beide Möglichkeiten, weil beide Sinn machen. Kommt halt auf die Anforderungen an. Wie macht sich denn das Replikationsproblem bemerkbar? Hast du die entsprechende Tabelle beim Abonnenten auch angepasst?

marabu

Zottel 30. Mai 2006 10:31

Re: Problem mit dem ß
 
die Tabellen habe ich beim Abbonenten nicht angepaßt, weil ich eine Transaktionsreplication habe und die mit einem Snapshot starte. Somit erstellt er die ja auch zu anfang. So wie das aussieht, erstellt er die auch ohne fehler und mit dem entsprechenden Collate.
Allerdings kommt dann folgender Fehler:
Delphi-Quellcode:
Der Prozess konnte das Massenkopieren in Tabelle '"strassen"' nicht durchführen.

Masseneinfügung war nicht möglich. Massendatenstrom wurde fälschlicherweise als sortiert angegeben.
Und beim Snapshot hatte ich schon angegeben, das die Sortierung mit übertragen werden soll. Irgendwie scheine ich da aber was vergessen zu haben.


p.s.: die Tabelle strassen habe ich so geändert, das die Spalte mit den Strassennamen für Suchfunktionen ein anderes Collate haben soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz