![]() |
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
Mehrsprachig sichern + anzeigen
Hallo,
was muss ich machen um folgendes zu erreichen: Text in ein TEdit Feld eingeben, diesen über einen TUniQuery in einer Firebird Tabelle speichern. Beliebigen Text aus der DB auslesen und als Caption anzeigen (TLabel, TButton, ...) Muss ich etwas bestimmtes beim TUniQuery einstellen, wie müsste das Feld in der DB definiert sein (Varchar, Characterset, Collation) ? Zur Zeit wird in der DB alles als '?' angezeigt ! Als Texte: Deutsch, Englisch, Russisch, Chinesisch, Französisch, Dänisch, usw... Grüße user0815 |
AW: Mehrsprachig sichern + anzeigen
Stichwort auf DB-Seite ist UTF-8 und auf Delphi-Seite D2009 oder neuer.
|
AW: Mehrsprachig sichern + anzeigen
Nutze Database Workbench v4.3.2 Pro, habe dort eine Test Tabelle angelegt (DDL):
Code:
Füge ich jetzt diesen Text "Администрирование" in alle Felder manuell ein, so werden nach dem Verlassen des Feldes nur Fragezeichen angezeigt.
CREATE TABLE SPRACHE
( TAG_ID INTEGER NOT NULL, DE VARCHAR( 255) CHARACTER SET UTF8 COLLATE UTF8, EN VARCHAR( 255) CHARACTER SET UTF8 COLLATE UTF8, CN VARCHAR( 255) CHARACTER SET UTF8 COLLATE UNICODE_CI, CC VARCHAR( 255) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI, CT VARCHAR( 255) CHARACTER SET UTF8 COLLATE UNICODE, CONSTRAINT PK_SPRACHE PRIMARY KEY (TAG_ID) );
Delphi-Quellcode:
es werden nur Fragezeichen ausgegeben... darum ja meine Frage...
with Datenmodul.UniQuery1 do
begin close; SQL.Clear; SQL.Add('SELECT DE, EN, CN, CC, CT'); SQL.Add('FROM SPRACHE'); SQL.Add('WHERE TAG_ID = :ID;'); ParamCheck := true; ParamByName('ID').AsInteger := 1; Open; Edit1.Text := FieldByName('CT').AsString; Label1.Caption := FieldByName('CT').AsString; Memo1.Lines.Append(FieldByName('CT').AsString); Memo1.Lines.Append(FieldByName('DE').AsString); Memo1.Lines.Append(FieldByName('EN').AsString); Memo1.Lines.Append(FieldByName('CN').AsString); Memo1.Lines.Append(FieldByName('CC').AsString); Close; end; |
AW: Mehrsprachig sichern + anzeigen
Ich verwende UniDAC nicht, aber bei IBDAC muss man natürlich angeben, wenn man mit Unicode arbeiten möchte. Setzt natürlich auch Delphi 2009 oder höher voraus.
|
AW: Mehrsprachig sichern + anzeigen
habe ja XE2, ich finde im Objektinspektor keine Einstellung für Unicode... die Query Komponente selber heisst ja auch: TUniQuery
wenn ich versuche ein Umlaut (ä) zu sichern (egal in welches Feld):
Delphi-Quellcode:
dann erhalte ich folgende Fehlermeldung:
with Datenmodul.UniQuerySave do
begin Close; SQL.clear; SQL.Add('UPDATE SPRACHE'); SQL.Add('SET'); SQL.Add('CT = :EINGABE'); SQL.Add('WHERE TAG_ID = :TAG_ID'); ParamCheck := true; ParamByName('TAG_ID').AsInteger := 3; ParamByName('EINGABE').AsAnsiString := 'ä'; Execute; Close; end; "Im Projekt xxx.exe ist eine Exception der Klasse EIBCError mit der Meldung ' Dynamic SQL Error SQL error code = -303 Malformed string' aufgetreten." |
AW: Mehrsprachig sichern + anzeigen
Hab mir jetzt mal die CHM-Doku von UniDAC runtergeladen und im Prinzip ist es gleich zu IBDAC bzgl. Unicode. Hast du TUniConnection.CharSet und TUniConnection.UseUnicode korrekt gesetzt?
|
AW: Mehrsprachig sichern + anzeigen
Zitat:
Normalerweise stellt man diese ja dort ein und nicht bei jeder Tabelle einzelne. Und nur diese Einstellung wir vermutlich Unidac zur bestimmung Unicode oder nicht herziehen. |
AW: Mehrsprachig sichern + anzeigen
Hallo Bernhard,
man gibt beim Erstellen einer Firebird Datenbank einen Zeichensatz an, z.B. UTF8. Dieser wird dann zum Default-Zeichensatz und wird für jedes neue [VAR]CHAR Feld hergenommen. Man kann bei der Felderstellung allerdings auch einen anderen Zeichensatz verwenden, der vom Datenbank-Default-Zeichensatz abweicht. Zusätzlich spielen dann noch die von dir erwähnten Collations eine Rolle, mit der im Wesentlichen die Sortierreihenfolge etc. definiert wird, aber primär sollte die Collation nicht ausschlaggebend sein, um Unicode-Zeichen speichern und lesen zu können. Folgendes sollte ein guter Startpunkt sein:
Ich hoffe, dass die TUniConnection Einstellungen so korrekt sind, habe Unidac nicht im Einsatz, nur die Doku offen. |
AW: Mehrsprachig sichern + anzeigen
Zitat:
|
AW: Mehrsprachig sichern + anzeigen
Nur durch Neuerstellung der Datenbank basierend auf einem SQL-Skript und falls die Daten erhalten bleiben müssen, dann ist ein Datentransfer in die neu erstellte Datenbank notwendig.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz