Comment initialiser la propriété DecimalDeparator dans un SQLConnection, par du code ?
(sachant que je me connecte à une bdd Oracle).
Dans l'inspecteur d'objets, la propriété est bien présente, mais je ne vois pas comment l'initialiser par code.
Comment initialiser la propriété DecimalDeparator dans un SQLConnection, par du code ?
(sachant que je me connecte à une bdd Oracle).
Dans l'inspecteur d'objets, la propriété est bien présente, mais je ne vois pas comment l'initialiser par code.
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
Pour Oracle, je passe par ces requêtes pour déterminer le format de valeurs, après la connexion du TSQLConnection (parce qu'en Delphi 7 je n'ai pas de propriété DecimalSeparator):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 'ALTER SESSION SET NLS_DATE_FORMAT=''DD/MM/YYYY HH24:MI:SS''' 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ". "'
C'est ce que je fais dans une fonction appelée à la connexion pour le NLS_NUMERIC_CHARACTERS. Et je cherchais à modifier le DecimalSeparator du SQLConnection, juste après, pour le mettre en conformité.
A moins que ça ne soit pas nécessaire.
Mais, pour l'instant, quand je ne spécifiais pas de valeur pour le DecimalSeparator, j'avais des problèmes lors de mes requêtes.
Si imposer le NLS_NUMERIC_CHARACTERS suffit, mon problème est résolu.
Je creuse ...
![]()
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
ALors, imposer le NLS_NUMERIC_CHARACTERS est utile pour une exécution correcte du SQL; mais par contre je bute sur un autre problème :
Il y a des postes (tous sauf le mien, en fait) qui m'affiche mal les nombres à virgule.
7,38 sur mon poste, s'affiche 738 sur d'autres. Ce qui est assez génant.
Y a t'il un autre paramétrage à faire ?
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
Le sujet n'a pas l'air d'intéresser grand monde en cette période estivale.
Pour ma part j'ai en plus
Par contre, je n'affiche jamais directement les résultats dans des composants DB. Je créé des listes d'objets et c'est à partir de ces listes que j'affiche les résultats. Mes champs sont es NUMBER(28,5) et je les récupère avec des AsFloat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Application.UpdateFormatSettings:=False;
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
Salut Ludwig,
Et voila :
En fait il faut faire attention car le nom de paramètres dans l'inspecteur d'objets n'est pas forcément le même que celui qu'on retrouve dans Params. La preuve avec le Decimal Separator, dans l'inspecteur d'objet sans espace et avec un espace dans Params.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLConnection1.Params.Values['Decimal Separator']:='.';
Donc le mieux c'est une petite boucle pour tester tous les paramètres, pour pouvoir vérifier le nom de chaque paramètre :
Chaque ligne apparaitra alors sous la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i := 0 to SQLConnection1.Params.Count - 1 do begin showmessage(SQLConnection1.Params[i]); end;La partie gauche avant le = est donc le nom du paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Decimal Separator=,
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
Je viens de refaire un test et j'ai remarqué quelque chose de bizarre. Si à la conception dans Decimal Separator je mets "." alors mon paramètre n'apparait pas. Par contre si je mets "," alors il apparait bien.
Je suppose que le "." doit être le spéarateur par défaut et que c'est pour ça qu'il doit le supprimer.
Donc fais un test avec la virgule et là tu dois le voir.
Effectivement !
Si je spécifie le séparateur de Windows (la virgule sur mon poste), il n'apparait pas dans la liste des paramètres. Mais, sinon oui.
Un problème de résolu.
![]()
Par contre, j'ai encore mon problème d'affichage.
Sur mon poste, les nombres à virgule apparaissent bien avec la virgule dans une DBGrid, mais pas sur d'autres postes.
7,38 devient 738
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
Partager