AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mehrsprachig sichern + anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrsprachig sichern + anzeigen

Ein Thema von user0815 · begonnen am 29. Nov 2012 · letzter Beitrag vom 29. Nov 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 08:34
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 08:35
Stichwort auf DB-Seite ist UTF-8 und auf Delphi-Seite D2009 oder neuer.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 09:04
Nutze Database Workbench v4.3.2 Pro, habe dort eine Test Tabelle angelegt (DDL):

Code:
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)
);
Füge ich jetzt diesen Text "Администрирование" in alle Felder manuell ein, so werden nach dem Verlassen des Feldes nur Fragezeichen angezeigt.

Delphi-Quellcode:
  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;
es werden nur Fragezeichen ausgegeben... darum ja meine Frage...
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 09:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 09:53
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:
  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;
dann erhalte ich folgende Fehlermeldung:

"Im Projekt xxx.exe ist eine Exception der Klasse EIBCError mit der Meldung '
Dynamic SQL Error
SQL error code = -303
Malformed string' aufgetreten."
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#6

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 10:04
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 10:19
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?
Die Frage ist welche Collation bei der Datenbank eingestellt ist.
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#8

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 10:31
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:
  • Firebird Datenbank mit UTF8 erstellen
  • TUniConnection.SpecificOptions.Values['Charset'] := 'UTF8';
  • TUniConnection.SpecificOptions.Values['UseUnicode'] := 'True';

Ich hoffe, dass die TUniConnection Einstellungen so korrekt sind, habe Unidac nicht im Einsatz, nur die Doku offen.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 11:08
Zitat:
Firebird Datenbank mit UTF8 erstellen
habe hier 'NONE' stehen, Mist nicht aufgepasst... kann man das nachträglich ändern ?
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#10

AW: Mehrsprachig sichern + anzeigen

  Alt 29. Nov 2012, 11:33
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:22 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