Ce billet complète le précédent concernant la précision des calculs faits par programmation. En effet, tout comme l'utilisation de "0n" pour l'affectation d'un numérique, l'option "Numérique haute précision" des champs permet d'obtenir une précision maximale pour les valeurs saisies :
La coche n'est pas active par défaut, il faut donc bien penser à l'activer à partir du moment ou le domaine de l'application nécessite une précision importante.
12 mai 2009
Précision dans les champs de saisie des IHM
Publié par Elian Lacroix 1 commentaires
Rubriques associées au billet : Interface / Ergonomie, Programmation
Résultat erroné dans un calcul sur des numériques
L'expression courante "on en apprend tous les jours" est sans doute la plus vraie qui soit !
Hier encore je pensais que le type "numérique" était juste comme le type "monétaire". Ce n'est pas tout à fait exact, son affectation directe se faisant via un réel, on peut avoir des valeurs ou arrondis inattendus inhérents au codage des réels de Windows (IEEE).
Mais aujourd'hui après une consultation de l'aide sur le type numérique, j'ai appris une syntaxe permettant de forcer une affectation pour qu'elle soit juste. Je pense qu'il est bon de garder cette information à l'esprit dès lors qu'un traitement nécessite une importante précision de calcul.
Ainsi l'écriture traditionnelle :
nValeur est un numériqueSera avantageusement remplacée par :
nValeur = 1234567890123456789.01
Trace(nValeur)
nValeur est un numériqueAttention le "0n" qui précède la valeur est un "zéro" combiné avec la lettre "n". Il ne s'agit pas des lettres "o" et "n".
nValeur = 0n1234567890123456789.01
Trace(nValeur)
Publié par Elian Lacroix 0 commentaires
Rubriques associées au billet : Programmation
15 janvier 2009
Ignorer un paramètre sur index full-text dans une requête
Lorsqu'une requête contient un paramètre portant sur un index full-text, par défaut la pertinence relative à l'index full-text fait partie du résultat. La requête est donc de la forme suivante :
SELECTTant que cette pertinence figure dans le résultat, le paramètre de la requête s'y rapportant est obligatoire. La syntaxe suivante :
MATCH(XX, YY, ZZ) AGAINST({ParamFullText}) AS PertinenceFullText
FROM
TABLE
WHERE
AND PertinenceFullText > 0
ORDER BY
PertinenceFullText DESC
Requête.ParamFullText = Nullconduira à l'erreur :
HExécuteRequête(Requête)
Erreur dans le code SQL de la requêtePour pouvoir rendre le paramètre optionnel, il suffit de ne pas le faire figurer dans le résultat de la requête. Dans l'éditeur de requêtes il faut pour cela sélectionner "ne pas afficher" en cliquant sur l'oeil correspondant à la condition sur l'index full-text. La requête obtenue sera de la forme suivante :. Initialisation de la requête impossible. Le paramètre doit être renseigné.
SELECTComme toujours, c'est très simple ... une fois que l'on sait.
*
FROM
TABLE
WHERE
AND MATCH(XXX, YYY, ZZZ) AGAINST({ParamFullText}) > 0
Publié par Elian Lacroix 3 commentaires