Page 1 sur 1

Le résultat d'une requête sql sur une somme

Publié : dim. 17/avr./2011 20:19
par anissa
C'est bizarre, je n'arrive pas à comprendre pourquoi, j'ai corrigé le problème, ça marche, mais je ne suis pas convaincue... Dites moi ce que vous en pensez .... Je suis curieuse de savoir ..

Explication: Il s'agit simplement de calculer la somme du total TTC (un champ d'une table Base sqlite). Ce champ est déclaré dans la table comme ttc quad. Je dois récupérer le résultat dans une variable appelée Wttc déclarée aussi en quad.

Voici le code qui plante:

Code : Tout sélectionner

Wsql="Select SUM(ttc) From MaTable Where ttc>0"
CheckDataBaseQuery(0,wSql)
If NextDataBaseRow(0)
   wttc=GetDataBaseQuad(0,0)
EndIf
Et voici le code qui marche:

Code : Tout sélectionner

Wsql="Select SUM(ttc) From MaTable Where ttc>0"
CheckDataBaseQuery(0,wSql)
If NextDataBaseRow(0)
   wttc=GetDataBaseLong(0,0)
EndIf
C'est un peu comme le jeu des 7 erreurs n'est ce pas? Bon! Vous voyez la différence
entre ces deux codes? Pourquoi GetDataBaseQuad ne marche pas? Pourtant, c'est du numérique
aussi..

Si vous avez besoin de plus de details sur la base données et ma table, je suis prêt à vous
donner tous les détails (bien que cela ne me semble pas nécessaire)

Alors? Quelqu'un a une idée?

Re: Le résultat d'une requête sql sur une somme

Publié : dim. 17/avr./2011 20:49
par djes
Tu as quel type de plantage?
Sinon, il y a la fonction DatabaseColumnType(#BaseDeDonnees, Colonne) qui pourrait t'être utile. Tu as bien déclaré le type de ta variable de retour? Par défaut, c'est du .i (entier sur 4 ou 8 octets suivant x86/x64)

Re: Le résultat d'une requête sql sur une somme

Publié : dim. 17/avr./2011 21:52
par nash
du maniere plus generale
je procede comme ça
en esperant vous etre utile
sinon peut etre a d'autres

Code : Tout sélectionner

;n$=nom de la base
;t$=nom de la table
;c$=nom de colonne
;x$=nom de la colonne a calculer
;n=somme ou nombre calculé
UseSQLiteDatabase()
OpenDatabase(0,"+n$+","","")
DatabaseQuery(0,"select * from "+t$+"")
For i=0 To DatabaseColumns(0)-1
c$=DatabaseColumnName(0,i)
If c$=x$
t$=DatabaseColumnType(0,i)
OpenDatabase(1,Shandradb,"","")
Select t$
Case #PB_Database_Long
DatabaseQuery(1,"select sum("+c$+") from  "+t$+" where "+c$+">0")
Case  #PB_Database_String
DatabaseQuery(1,"select count("+c$+") from  "+t$+" where "+c$+"<>''")
;Case #PB_Database_Double
;Case #PB_Database_Quad
EndSelect
While NextDatabaseRow(1):n=GetDatabaseLong(1,0):Wend
FinishDatabaseQuery(1):CloseDatabase(1)
EndIf
Next
FinishDatabaseQuery(0):CloseDatabase(0)