Requête sql [Résolu]

pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 18 janv. 2006 à 11:21 - Dernière réponse : cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention
- 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).

Merci de votre aide

pseudoOM
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 19 janv. 2006 à 22:54
3
Merci
Merci rt15, mais j'ai fini par faire comme je l'avait dit à mon dernier message. La solution pour l'extraction d'un caractère d'une chaine se trouve à cet endroit :
http://delphifr.com/forum.v2.aspx?id=643672
Encore merci d'avoir cherché !

pseudoOM

Merci pseudoOM 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de pseudoOM
moldov 168 Messages postés mercredi 8 octobre 2003Date d'inscription 10 novembre 2008 Dernière intervention - 18 janv. 2006 à 11:32
0
Merci
Salut,

Si c'est une base de données access tu peux tester ta requete en l'ecrivant manuellement comme ca tu verra mieu d'ou ca vient.

TRUNC est utiliser pour les date , aussi pour les nombres ?

Bonnne Prog
Commenter la réponse de moldov
pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 18 janv. 2006 à 13:35
0
Merci
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 !

pseudoOM
Commenter la réponse de pseudoOM
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 18 janv. 2006 à 18:12
0
Merci
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!)
Commenter la réponse de cs_rt15
pseudoOM 174 Messages postés jeudi 3 février 2005Date d'inscription 30 janvier 2009 Dernière intervention - 18 janv. 2006 à 20:38
0
Merci
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
Commenter la réponse de pseudoOM
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 19 janv. 2006 à 10:30
0
Merci
????

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.
Commenter la réponse de cs_rt15
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 19 janv. 2006 à 22:56
0
Merci
T'as essayé de déréférencer ton pointeur après l'avoir transtypé en pointeur non typé ?
Tu devrais...

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 19 janv. 2006 à 23:46
0
Merci
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é



@+

jlen
Commenter la réponse de jlen100
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 20 janv. 2006 à 12:38
0
Merci
jlen,

Tout à fait, j'ai vu le code que tu as répondu sur l'autre poste de pseudoOM: Il est nettement plus propre que le mien !
Commenter la réponse de cs_rt15

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.