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

Signaler
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
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 ?

29 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
regardes si le séparateur décimal des paramètres régionnaus
est le même que pour tes données texte.
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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+
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

 
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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+
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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.
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

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
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
oui il s'agit d'une base access et le cint ne fonctionne pas.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
essaies avec CCur() au lieu de CInt(). 
(CMonnaie sous Access.)
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
merci chaibat, j'y ai cru un moment et puis non, ça écrit une erreur... :(
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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... (?)
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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).
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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>
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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>
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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+
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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>
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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 :/
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
ps : aucun soucis dans la clause "where"....
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
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....)
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
si...:-)
tu as toujours un CInt([fonds]

------------------------------------------------------------------------------------------------------------------------------------------
© - Développer..c' est cultiver un sens de l' humour bien particulier.