ethan_decoster
Messages postés38Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 4 avril 2008
-
7 août 2006 à 18:25
twh19
Messages postés4Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention 5 janvier 2009
-
17 oct. 2007 à 18:30
Dans une base de donnée utilisée pour un de mes programmes, j'ai des données qui ont comme type de champs la valeur reel simple. La base de donnée communique avec le programme via Ado. Donc dans la base de donnée j'ai les valeurs 26.3. Mais a l'affichage dans le programme, la valeur de ce champs est de 26.299365489 ce qui en valeur arrondie me donne 26.3.
Mais le hic ce que je me sert de cette donnée pour en afficher d'autre. Mais comme le programme intercepte la valeur de 26.3 comme 26.299... les autres donnée ne sont donc pas affichée. De plus c'est valeur doit etre de type numérique et non chaine de caractère parce que j'utilise le tri numérique pour ordonnancer ces données...
Le pire c'est quand je fais un query sur ma table du style select * from clc where (cas = 26.3), le query me trouve l'enregistrement.
Quelqu'un saurait me dire pourquoi la basse de donnée me donne la valeur de 26.3 alors que le programme affiche la valeur de 26.299...
ethan_decoster
Messages postés38Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 4 avril 2008 7 août 2006 à 18:52
Ah oui une chose importante peut etre, la valeur de 26.3 dals la base de donnée est recupérée avec le composant DBEdit. C'est peut etre ca le probleme... Je check et vous tiens au courant...
Si quelqu'un, trouve avant moi, merci de poster vos commentaires...
ethan_decoster
Messages postés38Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 4 avril 2008 8 août 2006 à 17:45
oui c'est vrai que c'est moche comme solution. J'ai fait changer le fusil d'epaule de loa sncb qui a abandonner le projet de mettre un cas intermedaire. Ex: 26 26BIS et 27 (si je les mettais en chaine de caractere) j'aurais pas eu cet ordre la. Maintenant la solution etait de garder le champs numerique mais de mettre 26 26,1 et 27 dans la base de donnée. Mais le projet a ete abandonné. Merci pour ton explication Loda j'avais pas capté cela comme ca mais c'est vrai que les float c'est de la M....
twh19
Messages postés4Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention 5 janvier 2009 17 oct. 2007 à 18:30
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f,n,o,k: string;
i,j,g,m,x,y,v: integer;
tr: boolean;
begin
j := 0;
k := '';
tr := false;while (j <length(edit1.Text)) and (tr false) do
begin
k := edit1.Text[j];
if k = '.' then
begin
tr := true;
v := j;
end;
j := j + 1;
end;
if tr = true then
begin if (length(edit1.Text) - v 1) or (length(edit1.Text) - v 2) then
edit2.text := edit1.Text
else
begin
i := 1;
m := 0;
c := '';
b := '';
while i <= length(edit1.Text) do
begin
c := edit1.Text[i];
b := b + c;
if c = '.' then
begin
a := b;
m := i;
end;
i := i + 1;
end;
d := edit1.Text[m + 1];
e := edit1.Text[m + 2];
f := edit1.Text[m + 3];
n := d + e;
if StrToInt(f) >= 5 then
begin
g := StrToInt(n) + 1;
n := IntToStr(g);
if g = 100 then
begin
o := '';
for x := 1 to m - 1 do o := o + a[x];
y := StrToInt(o) + 1;
edit2.Text := IntToStr(y);
end
else
edit2.Text := a + n;
end
else
begin
edit2.Text := a + n;
end;
end;
end
else
edit2.text := edit1.Text;
end;
The joy of the life is to do a work that nobody made and that nobody it imagined