Unicode SQL

domchap Messages postés 4 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 6 novembre 2004 - 23 sept. 2004 à 19:59
domchap Messages postés 4 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 6 novembre 2004 - 6 nov. 2004 à 06:35
salut
je fais un prg pour aider à apprendre le polonais, tout de suite j'ai été confroté au problème des lettres de la langue, j'ai donc utilisé l'unicode avec widechar comme variable ( merci à delphiprog qui par le biai du forum m'a orienté vers les composants TNT).

maintenant que je peux entrer les caractères spécifiques à la langue polonaise dans un tntedit, je me retrouve devant un autre prob pour l'enregistrement dans la base de donnée avec sql.

j'utilise interbase et mon champs traduction (qui reçoit le polonais) est un varchar, lorsque le mot est enregistré il est transformé à nouveau en code ascii, donc prob pour le réaffichage correct du mot normalement en unicode.

j'ai aussi essayé en créant ma table directement en sql pour définir avec national character varying .......set poland, mais cela ne marche pas non plus.

je me demande si je ne dois pas définir mon champs traduction dans un format spécifique ou utiliser une autre base de données ou si lors de l'enregistrement avec sql je m'y prend correctement.

voila mon code pour enregistrer avec sql

procedure TFAjoutMots.Ajouter1Click(Sender: TObject);
var verif : String;
mottrduc : WideString;
begin
if (edAjoutMot.Text ='') or (edAjoutPhonetic.Text ='') or (TntEdit1.Text ='')
then
MessageDlg('Manque des données opération annuler', MtWarning,[MbOK],0)
else
begin
with DataM.IBQuery3 do
begin
SQL.clear;
SQL.add('SELECT * FROM TDico WHERE Mot = '''+edAjoutMot.Text+ ''' ');
Open;
end;

verif := DataM.IBQuery3.FieldByName('Mot').AsString;

if (verif = edAjoutMot.Text) then
begin
MessageDlg('Le mot existe déjà ! opération annuler', MtWarning,[MbOK],0);
CleanChpsDico();
end
else
Begin
CheminImg := OpenPictDg.FileName;
mottrduc := TntEdit1.Text;
with DataM.IBQuery2 do
begin
SQL.Clear;
SQL.Add('INSERT INTO TDico ');
SQL.Add('(Mot,Phonetique,Traduction,Chemin) ');
SQL.Add(format('values (%s, %s, %s, %s)',
[ QuotedStr(edAjoutMot.Text),
QuotedStr(edAjoutPhonetic.Text),
QuotedStr(mottrduc),
QuotedStr(CheminImg)]));
execSQL;

SQL.Clear;
SQL.Add('SELECT * FROM TDico ORDER BY Mot');
Open;
end;

with DataM.IBQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT * FROM TDico ORDER BY Mot');
Open;
end;

CleanChpsDico();

Messagedlg('Le nouveau mot a été ajoutée',mtInformation,[mbok],0);
end;

end;

end;

merci pour l'aide que vous pourrez m'apporter

DomChap

2 réponses

vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
7 oct. 2004 à 10:35
Salut DomChap,

Bien que j'utilise Interbase, je ne saurai te répondre.

Mais d'expérience, je peux te dire que le newsgrouip de Borland est efficace, va y faire un tour...

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
0
domchap Messages postés 4 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 6 novembre 2004
6 nov. 2004 à 06:35
salut
merci pour tes encouragements

de mon côté j'ai trouvé que en faisant ma base de données avec php je pouvais déterminer le pays où il serai lu et de ce fait il accepterai les caractères spécifiques à cette langue

en tout cas ta grand-mère à bien raison et cette phrase m'a déjà servie pour surmonter mon quotidien,encore merci

DomChap
0
Rejoignez-nous