Page 1 sur 1

Somme d'un champs de type Quad

Publié : lun. 24/déc./2012 20:42
par omega
Bonsoir à toute l'équipe

Je viens de constater un contenu bizarre dans un champs de type Quad d'une table (base sqlite). Je n'ai pas le code sur moi mais je le posterais plus tard si c'est nécessaire. Je m'explique:

J'ai une table d'une base sqlite qui contient un champ X de type quad. J'utilise deux fonctions différentes Calcul1 et Calcul2 qui permettent (entre autres) de calculer la somme de ce champ X (dans toute la table et sans condition). La table contient environ une centaine d'enregistrements. Le champ X contient généralement des nombres nuls ou supérieurs à 19999999.
Voici la partie (très résumée) qui permet de calculer la somme de ce champ X:

Code : Tout sélectionner

Procedure Calcul1()     
;...........
;bla bla bla
;bla bla bla
Wsq="SELECT SUM(X) FROM Table1 Where X<>0"
CheckDataBaseQuery(Mabase,Wsql)
If NextDataBaseRow(Mabase)
   Resultat1$=GetDataBaseString(Mabase,0)
endif
;...........
;bla bla bla
;bla bla bla
EndProcedure

;----- Et plus loin...

Procedure Calcul2()     
;...........
;bla bla bla
;bla bla bla
Wsq="SELECT SUM(X) FROM Table1 Where X<>0"
CheckDataBaseQuery(Mabase,Wsql)
If NextDataBaseRow(Mabase)
   Resultat2$=GetDataBaseString(Mabase,0)
endif
;...........
;bla bla bla
;bla bla bla
EndProcedure

;----- Et plus loin...

Calcul1()
debug Resultat1$ ;----- ici j'obtiens 124000000000 (c 'est le bon résultat)
Calcul2()
debug Resultat2$;----- ici j'obtiens 124000000000.0 (c 'est le mauvais résultat; à cause de ce point décimal et le zéro de droite, un quad ne doit pas contenir de point décimal à ce que je sache...  )

;-----
END
Si je remplace

Code : Tout sélectionner

Resultat$=GetDataBaseString(Mabase,0)
par

Code : Tout sélectionner

Resultat$=strq(GetDataBaseQuad(Mabase,0))
ça marche mais je veux savoir pourquoi ça ne marche pas dans le 1er cas?

Quelqu'un a une explication ?

Merci

Re: Somme d'un champs de type Quad

Publié : mar. 25/déc./2012 0:21
par Backup
omega a écrit :

Code : Tout sélectionner

Resultat$=GetDataBaseString(Mabase,0)
par

Code : Tout sélectionner

Resultat$=strq(GetDataBaseQuad(Mabase,0))
ça marche mais je veux savoir pourquoi ça ne marche pas dans le 1er cas?

Quelqu'un a une explication ?

Merci
je n'y connais rien en Base de Données , mais
dans e premier cas, tu recupere un string
dans le deuxieme tu recupere un string FORMATé !!

je veux dire qu'un string peut , peut etre avoir un caractere de fin de chaine
(0 ) et aussi des chr(10), Chr(13) ...

avec STRx tu formates ta string pour qu'elle soit au format "nombre"
depourvue des Artifices lié au Vrais Chaines ...

enfin,moi je vois ça comme ça ;)