AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Strings mit Umlaute aus MSSQL lesen oder schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Strings mit Umlaute aus MSSQL lesen oder schreiben

Ein Thema von daniel71 · begonnen am 9. Okt 2007 · letzter Beitrag vom 12. Okt 2007
Antwort Antwort
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#1

Strings mit Umlaute aus MSSQL lesen oder schreiben

  Alt 9. Okt 2007, 20:58
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Hallo

Ich hab da ein Problem beim Lesen oder Schreiben von Strings die Umlaute enthalten.

Die vermeintliche Lösung die ich da zu haben meinte
Ungültiger Spaltenname 'test'
funktionierte nur einmal. Inzwischen bin ich mir gar nicht mehr so sicher, ob es überhaupt einmal funktioniert hatte.

Da es sich eh um eine ganz andere Problematik handelt, eröffne ich ein neues Thema.

Die DB auf die ich zugreife ist nicht von mir und die darf ich auch nicht ändern.

Die Tabelle "GROUP_" hat die Spalten:
ID : smallint-----NAME_ : nvarchar(50)
1--------------------u
2--------------------ü


Mein Problem äussert sich so:

Lesen
- WHERE NAME_ = u -> RecordCount = 1

- WHERE NAME_ = ü -> RecordCount = 0

- WHERE ID = 2 -> FieldByName(NAME_) = ü


Schreiben mit UPDATE
- SET NAME_ = u -> in der Tabelle steht: u

- SET NAME_ = ü -> in der Tabelle steht: u


Wenn ich auf demselben Server eine neue DB erstelle und darin eine "gleiche" Tabelle eröffne, funktioniert alles.

Hat jemand eine Idee wo es hapert?

Vielen dank für eine antwort.
Gruss Daniel
  Mit Zitat antworten Zitat
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#2

Re: Strings mit Umlaute aus MSSQL lesen oder schreiben

  Alt 10. Okt 2007, 22:04
Hallo

Ich bin der Sache ein bisschen näher gekommen.

In der Datenbank die nicht funktioniert, ist die Sortierung: Cyrillic_General_CI_AS
Die DB in die ich Umlaute schreiben kann hat: Latin1_General_CI_AS

Wenn ich auf der DB in die ich keine Umlaute schreiben kann die Sortierung auf Latin1_General_CI_AS ändere funktioniert es.

Leider darf ich das nicht machen, da es nicht meine DB ist.

Mit "SQL Server Management Studio Express" kann ich aber in dieselbe DB Umlaute ohne Probleme schreiben.
In den Verbindungseigenschaften von "SSMSE" steht bei Sortierung: Latin1_General_CI_AS

Kann ich so etwas bei der ADOConnection auch machen

Gruss Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Strings mit Umlaute aus MSSQL lesen oder schreiben

  Alt 11. Okt 2007, 06:36
Ich denke mal dein Anwendung teilweise falsch die SQL-Anweisungen zusammenbaust und du schickst die daten als varchar und nicht als nvarchar zur DB.

Stell dein Programm auf Verwendung von Parametern um. Dort solltest du auch als Parametertyp Widestring anwählen können.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#4

Re: Strings mit Umlaute aus MSSQL lesen oder schreiben

  Alt 12. Okt 2007, 22:34
Hallo

Irgendwie klappt das nicht.

Die Parametrisierten Abfragen ergaben kein Ergebnis Bei Umlauten
Ich bin beim suchen, hier im Forum, darauf gestossen dass COLLATE auch in der Abfrage eingebunden werden kann.

Sofern es richtig ist so wie ich es anwende?
Delphi-Quellcode:
procedure TForm1.Abfrage;
begin
 with ADOQuery1 do Begin
  Close;
  SQL.Text:= 'SELECT '+
              '* '+
             'FROM '+
              'GROUP_ g '+
             'WHERE '+
              'g.NAME_ = :KundenName '+
             'COLLATE '+
                'Latin1_General_CI_AS ';
  ParamCheck := True;
  Parameters.ParamByName('KundenName').Value := Edit1.Text;
  Open;
 end; //Query1 anzahl freie ISDN Basisanschlüsse ermitteln
 ADOQuery1.First;
 Label1.Caption := IntToStr(ADOQuery1.RecordCount);
 Label2.Caption := ADOQuery1.FieldByName('NAME_').AsString;
 Label3.Caption := ADOQuery1.FieldByName('ID').AsString;
end;
Jedenfalls funktioniert es, leider auch nur ohne Umlaute.

Ich bin wirklich bald am verzweifeln.
Wieso kann ich zwar Umlaute aus der Tabelle anzeigen lassen, aber nicht danach suchen?
Delphi-Quellcode:
procedure TForm1.Abfrage;
begin
 with ADOQuery1 do Begin
  Close;
  SQL.Text:= 'SELECT '+
              '* '+
             'FROM '+
              'GROUP_ g '+
             'WHERE '+
              'g.ID = :KundenNummer '+
             'COLLATE '+
                'Latin1_General_CI_AS ';
  ParamCheck := True;
  Parameters.ParamByName('KundenNummer').Value := Edit1.Text;
  Open;
 end; //Query1 anzahl freie ISDN Basisanschlüsse ermitteln
 ADOQuery1.First;
 Label1.Caption := IntToStr(ADOQuery1.RecordCount);
 Label2.Caption := ADOQuery1.FieldByName('NAME_').AsString;
 Label3.Caption := ADOQuery1.FieldByName('ID').AsString;
end;
Label2 zeigt korrekt die Kundennamen mit Umlauten.


Gruss Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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