Décimales perdues lors de l'exécution d'une requête

Le
AJADV
Bonjour,
Dans un de mes programmes je suis amené à créer une table de travail
comportant deux champs Montant1 et Montant2. Le champ Montant1 est rempli à
partir d'une table existante, ceci à l'aide d'une requête qui crée la table
de travail, le champ Montant 2 sera ensuite utilisé pour enregistrer d'autres
montants à partir d'une autre requête qui ajoutera de nouveaux
enregistrements où le champ Montant2 sera alors rempli. J'ai donc la séquence
suivante :
1-Création de la table de travail (je crée un champ Montant2 de valeur 0)
SQL="SELECT Montant1, 0 AS Montant2 INTO [Table de travail]"
SQL=SQL & vbcrlf & "FROM Table1;"
2-Ajout de nouveaux enregistrements depuis une autre table:
SQL="INSERT INTO [Table de travail] ( Montant2 )"
SQL=SQL & vbcrlf & " SELECT Montant2"
SQL=SQL & vbcrlf & " FROM Table2;"
Tout se passe correctement lors de l'exécution des requêtes si ce n'est que
dans la table de travail les valeurs mises dans les champs Montant2 sont
arrondis (ce n'est pas le cas des champs Montant1). Exemple : 29,35 devient
29, 43,50 devient 44 etc.
Comment faire pour que les décimales soient conservées ?
Un grand merci à qui pourra me donner une explication et une solution.
Alain
--
AJ
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LiR
Le #17752881
Bonjour,

Tu peux forcer le champ Montant2 créé dans la table de travail à être un
réel (double précision) et non un entier en explicitant le type de la valeur
stockée grâce à la fonction CDbl. En effet, par défaut 0 est interprété comme
un entier long, donc le champ créé est de ce type.

cela donne :

1-Création de la table de travail (je crée un champ Montant2 de valeur 0)
SQL="SELECT Montant1, CDbl(0) AS Montant2 INTO [Table de travail]"
SQL=SQL & vbcrlf & "FROM Table1;"


"AJADV" a écrit :

Bonjour,
Dans un de mes programmes je suis amené à créer une table de travail
comportant deux champs Montant1 et Montant2. Le champ Montant1 est rempli à
partir d'une table existante, ceci à l'aide d'une requête qui crée la table
de travail, le champ Montant 2 sera ensuite utilisé pour enregistrer d'autres
montants à partir d'une autre requête qui ajoutera de nouveaux
enregistrements où le champ Montant2 sera alors rempli. J'ai donc la séquence
suivante :
1-Création de la table de travail (je crée un champ Montant2 de valeur 0)
SQL="SELECT Montant1, 0 AS Montant2 INTO [Table de travail]"
SQL=SQL & vbcrlf & "FROM Table1;"
2-Ajout de nouveaux enregistrements depuis une autre table:
SQL="INSERT INTO [Table de travail] ( Montant2 )"
SQL=SQL & vbcrlf & " SELECT Montant2"
SQL=SQL & vbcrlf & " FROM Table2;"
Tout se passe correctement lors de l'exécution des requêtes si ce n'est que
dans la table de travail les valeurs mises dans les champs Montant2 sont
arrondis (ce n'est pas le cas des champs Montant1). Exemple : 29,35 devient
29, 43,50 devient 44 etc.
Comment faire pour que les décimales soient conservées ?
Un grand merci à qui pourra me donner une explication et une solution.
Alain
--
AJ


AJADV
Le #17757651
Un grand merci pour la solution. Mon problème est résolu.
Alain
--
AJ


"LiR" a écrit :

Bonjour,

Tu peux forcer le champ Montant2 créé dans la table de travail à être un
réel (double précision) et non un entier en explicitant le type de la valeur
stockée grâce à la fonction CDbl. En effet, par défaut 0 est interprété comme
un entier long, donc le champ créé est de ce type.

cela donne :

1-Création de la table de travail (je crée un champ Montant2 de valeur 0)
SQL="SELECT Montant1, CDbl(0) AS Montant2 INTO [Table de travail]"
SQL=SQL & vbcrlf & "FROM Table1;"


"AJADV" a écrit :

> Bonjour,
> Dans un de mes programmes je suis amené à créer une table de travail
> comportant deux champs Montant1 et Montant2. Le champ Montant1 est rempli à
> partir d'une table existante, ceci à l'aide d'une requête qui crée la table
> de travail, le champ Montant 2 sera ensuite utilisé pour enregistrer d'autres
> montants à partir d'une autre requête qui ajoutera de nouveaux
> enregistrements où le champ Montant2 sera alors rempli. J'ai donc la séquence
> suivante :
> 1-Création de la table de travail (je crée un champ Montant2 de valeur 0)
> SQL="SELECT Montant1, 0 AS Montant2 INTO [Table de travail]"
> SQL=SQL & vbcrlf & "FROM Table1;"
> 2-Ajout de nouveaux enregistrements depuis une autre table:
> SQL="INSERT INTO [Table de travail] ( Montant2 )"
> SQL=SQL & vbcrlf & " SELECT Montant2"
> SQL=SQL & vbcrlf & " FROM Table2;"
> Tout se passe correctement lors de l'exécution des requêtes si ce n'est que
> dans la table de travail les valeurs mises dans les champs Montant2 sont
> arrondis (ce n'est pas le cas des champs Montant1). Exemple : 29,35 devient
> 29, 43,50 devient 44 etc.
> Comment faire pour que les décimales soient conservées ?
> Un grand merci à qui pourra me donner une explication et une solution.
> Alain
> --
> AJ


Publicité
Poster une réponse
Anonyme