Conversion de type texte vers numérique [Résolu]

Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
- - Dernière réponse : chaibat05
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
- 16 mai 2007 à 16:56
Je dois créer une requête retournant la somme des versements : 
   "select sum(versements) from fonds;"

Jusque là c'est ok, le seul problème c'est que le champ "versement" est de type texte.
Est-t-il possible de convertir le type dans la requête du genre : 
   "select sum(cint(versements)) from fonds;"
Mais de cette manière il me rend l'erreur "le type est incompatible".
Pourriez-vous m'aider ?
Afficher la suite 

20/29 réponses

Meilleure réponse
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
3
Merci
regardes si le séparateur décimal des paramètres régionnaus
est le même que pour tes données texte.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 218 internautes nous ont dit merci ce mois-ci

Commenter la réponse de chaibat05
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
3
Merci
putain de merde j'ai trouvé !!!! LOL xcuz le langage..... c'était bien les "points" qui posaient problèmes. J'ai donc effectué un simple replace("mtnvv", ".", ",") et ça roule :

----> [mtnvv] de type "texte"
"select sum(cint(replace([mtnvv], ".", ","))) from..... where....."

Merci pour ton soutient, j'aurais rapidement cherché à contourner le problème.
Je ne pensais pas pouvoir utiliser un "replace" dans une requête SQL, et d'ailleur il fallait déjà que je pense que le problème venait des "."

A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 218 internautes nous ont dit merci ce mois-ci

Commenter la réponse de antoine_ferard
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
0
Merci
Salut,

Je pense et peut me tromper...que c'est peut-être après ta requête qui faut faire la conversion en numérique...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
oui, au pire c'est ce que je ferais : (en abrégé, pour info)

dim toto_vers as integer
rst = "select versements from fond"
do while not rst.eof
      toto_vers = toto_vers + cint(rst(0))
      rst.movenext
loop

mais je t'avoue que j'aurais préféré me passer de ça car, en réalité, j'ai une dizaine de versement différents donc j'aurais une disaine de variables "toto_vers" à déclarer et j'aime pa tro les variables à répétition (j'vais peut-être faire un tableau, bon...)

Merci, A+
Commenter la réponse de antoine_ferard
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
0
Merci
Salut, méthode super barbare mais soit tu change ton champ en numérique et tu modifie ton prog avec la méthode Format(), soit tu crée un champ temporaire avec la conversion de faite et tu fais ta requete sur ce champ.

Ya certainement mieux mais en général, je suis pas du genre à me prendre la tete LOL.
Commenter la réponse de cs_Nicko11
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012
0
Merci
C'est une base Access ? Parce que CInt ça marche normalement sous access. Mais peut être ton champ contient des charactères non numériques.

++
 Moustachu
Commenter la réponse de cs_moustachu
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
oui il s'agit d'une base access et le cint ne fonctionne pas.
Commenter la réponse de antoine_ferard
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
Bonjour,
essaies avec CCur() au lieu de CInt(). 
(CMonnaie sous Access.)
Commenter la réponse de chaibat05
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
merci chaibat, j'y ai cru un moment et puis non, ça écrit une erreur... :(
Commenter la réponse de antoine_ferard
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
je devrais peut-être préciser qu'il s'agit d'une table attachée (fichier txt), mais je ne pense pas que là soit le problème... (?)
Commenter la réponse de antoine_ferard
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
le séparateur des décimales dans le champ versements est "."
le séparateur des champ du fichier txt est ";" mais de toute façon, la création est la séparation des champs est correctement effectué...
j'ai fai un "select versement from fonds", il me rend bien chaque versements du fond (4 enregistrements). Et j'aimerais qu'il me rende uniquement 1 enregistrement avec la "sum" de versement (versement étant au format texte dans access).
Commenter la réponse de antoine_ferard
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
et t' as pas des champs vides par hasard ?
De toute façon je vais tester chez moi, et je tiens au courant.
A+

<h5 dir="ltr" align="left">© - Développer..c' est cultiver un sens de l' humour bien particulier.
                                                                                                            
      (Rollin
</h5>
Commenter la réponse de chaibat05
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
franchement, si tu trouve un moyen de convertir directement dans la requête un chp texte en numérique (pa forcément étant donné que mon besoin est de faire un "sum", ça pourrait aussi trouver le moyen de faire le "sum" d'un texte, mais je crois que ça va être dur ;), tu me rendrais un grand service mais je pense que ça n'est pas possible, je serais donc très agréablement surpris
Commenter la réponse de antoine_ferard
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
Avec une able ELEVES et un champ Test,
ceci marche pour moi:

SELECT Sum(IIf([ELEVES]![Test]="" Or [ELEVES]![Test] Is Null,0,CCur([ELEVES]![Test]))) AS Expr1
FROM ELEVES;

c' est comme tel à toi de l' adapter...

<h5 dir="ltr" align="left">© - Développer..c' est cultiver un sens de l' humour bien particulier.
                                                                                                            
      (Rollin
</h5>
Commenter la réponse de chaibat05
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
wé bon, je vais passer par un autre "chemin" (mettre finalement le champ au format numérique ou obtenir le total en additionant les champs rendus de la requête), mon problème vient du "CCur" qui ne fonctionne pas, va savoir pkoi... merci de ton aide, a+
Commenter la réponse de antoine_ferard
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
Si tu permets,
renvoies ce que tu as écris d' après ce que je t' ai dnné.
Il faut que je comprenne :-)

<h5 dir="ltr" align="left">© - Développer..c' est cultiver un sens de l' humour bien particulier.
                                                                                                            
      (Rollin
</h5>
Commenter la réponse de chaibat05
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
SELECT Sum(iif(versement_ventilations.MTNVV="" or versement_ventilations.MTNVV is null,0,CCur(versement_ventilations.MTNVV))) AS Expr1
FROM versement_ventilations
WHERE (((versement_ventilations.IND)='31099901.6-0002.8') AND ((CInt([fonds])) In (select distinct num_fond from fonds where designation = 'BTP PRUDENT')));



Cela me renvoi une erreur de type... :/ selon mon avis c'est le CCUR qui ne passe pas pour un type texte, toutes les valeurs du champ MTNVV sont pourtant des chiffres qui devraient être facilement convertissables :/
Commenter la réponse de antoine_ferard
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
ps : aucun soucis dans la clause "where"....
Commenter la réponse de antoine_ferard
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
0
Merci
en faisant un "select" simplement sur "MTNVV" ça me ressort bien les 4 enregistrements concernés, 4 montants au format texte, il me faudrait leur somme... en bref, il me faut la somme d'un champ au format "texte" (je sais que tu avais compris....)
Commenter la réponse de antoine_ferard
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
0
Merci
si...:-)
tu as toujours un CInt([fonds]

------------------------------------------------------------------------------------------------------------------------------------------
© - Développer..c' est cultiver un sens de l' humour bien particulier.                        
Commenter la réponse de chaibat05