pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 2009
-
18 janv. 2006 à 11:21
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
20 janv. 2006 à 12:38
Salut à tous !
Mon problème est le suivant : J'ai créé un module dans lequel je stock mes dataset. J'aimerais savoir si la requête suivante (qui se trouve dans un de mes dataset) est valide parce quand j'exécute le programme et que je clic sur un bouton (donc la requête doit s'exécuter) il me met un message d'erreur (que je n'ai pas retenu dsl) me disant en gros que la reqête n'est pas bonne.
SELECT TRUNC(SUM(prix*0.21),2)
FROM Commandes
WHERE num_facture=:nf
Logiquement elle doit me renvoyer la somme totale de la tva de la commande d'un client arrondie à la valeur du dessous avec 2 chiffres après la virgule (ex : 12,2365 --> 12,23).
pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 20091 18 janv. 2006 à 13:35
Sur internet j'ai vu que c'était possible mais j'ai essayé TRUNC dans Access et ça ne fonctionne pas avec des nombres.
Quelqu'un connaitrait-il un équivalent ?
Ou alors peut être avec un format( ) mais qui permettrait de n'avoir que 2 chiffres après la virgule mais qui n'arrondi pas ! Donc si le résultat est 25,2589 il faut que cela fasse 25,25 et pas 25,26 !
Si c'est possible les propositions sont les bienvenues.
Merci à tous !
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 18 janv. 2006 à 18:12
Bin c'est une idée comme ça, mais pourquoi pas simplement tronquer le résultat renvoyé avec un fonction de Delphi ? (Elle s'appelle peut être trunc d'ailleurs!)
pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 20091 18 janv. 2006 à 20:38
Non j'y avait pensé et j'ai été voir dans l'aide mais c'est pas ça !
Maintenant j'ai une autre idée mais je ne connais pas la fonction pour extraire un caractère d'une chaine ex : en admettant que 12,3467 est une chaîne, quelle est la fonction qui va me permettre d'extraire de la chaine le 3ème chiffre après la virgule (donc récupérer le 6). Comme ça je vérifie si il est >= à 5 et dans ce cas je diminue de 0,01 mon résultat final. Donc comme ça va arrondir avec Format(%.2f, 12.3467) à 12,35 en diminuant de 0,01 j'arriverai à 12,34.
Merci à celui qui m'aidera !
pseudoOM
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 19 janv. 2006 à 10:30
????
Delphi n'as pas de fonction de troncature avec spécification de nombre de chiffre après la virgule ???
Je vais chercher un peu...
Sinon, pour ton truc, quelque chose de ce genre là :
function Soustraire(ATronquer: String): Boolean;
var
intI: Integer;
begin
Result:= false;
for intI:= 0 to Length(ATronquer) - 1 do
if (PChar(ATronquer)[intI] = ',') then
if (StrToInt(PChar(ATronquer)[intI + 3]) >= 5) then
Result:= True;
end;
J'ai écrit ça au feeling, alors y à peut être des erreurs. Mais le principe est là: On convertie la chaîne en pointeur sur caractère pour accéder à un caractère précis de la chaîne.
N'oublie pas de vérifier que la chaîne est suffisement longue pour encaisser le intI + 3 entre les deux si.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 19 janv. 2006 à 23:46
rt15--> une chaine étant un tableau il suffit d'indiquer l'indice
que l'on veut lire ainsi si tu veux récupérer le Nième caractère il
suffit d'écrire:
caractereN:=chaine[N];
un minimum de connaissance de la structure mémoire t'aurais permis
d'arrivér au résultat ( d'ailleurs cette organisation est identique à
tout les langages delphi, C.... ce qui est logique puisque c'est la
seule qui permette d'accéder facilement à la donnée suivante en
incrémentant simplement le pointeur.)
mais pouquoi faire simple quand on peut faire compliqué