(A02 -> SQL2005) Kyrillische Daten über Abfrage suchen

13/10/2008 - 16:50 von Michael Bätzner | Report spam
Hallo,

ich habe ein Problem. Die Software von uns soll nach Bulgarien ausgeliefert
werden. Deswegen muss die Software nun auch teilweise Kyrillisch unterstützen.

Dadurch wurden die meisten Felder auf Unicode (also Nvarchar) umgestellt.
Die Tabellen sind per ODBC in das Frontend verknüpft.

Soweit funktioniert das Anlegen und Anzeigen von Kyrillischen Daten auch. Es
gibt nur ein Problem:
Wenn in einer Abfrage nach diesen kyrillischen Daten gesucht wird, so findet
Access kein Daten. Der Grund ist hierbei die Syntax der Abfrage. Die Abfrage
in Access sieht folgendermaßen aus und wird so auch an den SQL Server
geschickt. Dies ist über den SQL Profiler zu sehen:

SELECT Name FROM Kunden WHERE Name=’Доу’

Der SQL Server benötigt aber folgende Syntax sonst findet er dies nicht:

SELECT Name FROM Kunden WHERE Name=N’Доу’

Diese Abfrage wird nun an die Recordsource eines Formulares gebunden.

Meine Frage nun hierbei ist:
Kennt jemand die Möglichkeit Access (bzw. Jet) beizubringen ein „N’“ im
WHERE-Bereich anzuhàngen?

Ich habe schon stundenlang gegoogelt aber dazu nichts passendes gefunden.
Vielleicht habe ich es auch einfach nicht verstanden.

Software:
- Frontend: Access 2002 (mit SP3)
- Backend: SQL Server 2005 (mit SP2)

Im Vorraus für die Mühe bereits vielen Dank.

Mit freundlichen Grüßen
Michael Bàtzner
 

Lesen sie die antworten

#1 Ferenc Horváth
27/11/2008 - 11:11 | Warnen spam
Hallo,

ich hatte ein àhnliches Problem. Eine gute Lösung habe ich auch nicht
gefunden.
Für mein Problem war eine ausreichende Lösung Pass-Through Abfragen an dem
Server zu schicken, und so ein richtiges Recordset mit den gewünschten Daten
zu bekommen.

Dim qdQueryDef As QueryDef

Set qdQueryDef = CurrentDb.CreateQueryDef("")
qdQueryDef.Connect = CurrentDb.TableDefs("Kunden").Connect
qdQueryDef.SQL = "SELECT Name FROM Kunden WHERE Name=N’Доу’"

'WEnn das in einem Formular verwendet werden soll
Me.Recordset = qdQueryDef.OpenRecordset(dbOpenSnapshot)


Einziger Nachteil ist, dass diese Recordsets immer als Snapshot geöffnet
werden,
und so nicht zu veràndern sind.

Das könnte man mit 2 hintereinandergeschalteten Abfragen umgehen, indem man
mit Hilfe des Pass-Through nach dem Unicode sucht und damit ein (nicht
Unicode) ID des Records bestimmt, und dann eine 'normale' Abfrage mit dem
gefundenen ID wiederholt.

Ich weiss, dass das keine schöne Lösung ist, aber was besseres ist mir nicht
eingefallen. :-)

Mit freundlichen Grüssen

Ferenc Horváth

Ähnliche fragen