begin process at 2008 07 06 03:05:09
1 205 441 membres
21 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Conversion de nombre en litteraux [ SQL Server, MSDE, SQL Express / Functions ] (anspauldou)

Conversion de nombre en litteraux le 21/08/2007 19:20:14

anspauldou
Salut

Je voudrai savoir si quelqu'un a déjà un script qui permet de convertir des nombres en litteraux (en fonction definie par l'utilisateur ou procédures stockées) sinon quel site me conseillez vous pour l'obtenir ?

Merci d'avance

Re : Conversion de nombre en litteraux le 22/08/2007 08:08:54

dominique.stock
Bonjour,
Qu'entends-tu par des "nombres en littéraux" ?
2 = deux ?
ou une variable float en varchar ? (regarde dans l'aide "convert" ou "cast" )

Dom

Re : Conversion de nombre en litteraux le 22/08/2007 12:28:55

anspauldou
j'entends par convertsion de nombre en littéreaux 2 = deux


Re : Conversion de nombre en litteraux le 22/08/2007 12:46:44

dominique.stock
Réponse acceptée !

Voilà un code d'une fonction delphi . A traduire en TSQL:
function TForm1.EnLettres(N:integer):string;

const
  Unite: Array[1..16] of string=('un','deux','trois','quatre','cinq','six',
                                'sept','huit','neuf','dix','onze','douze',
                                'treize','quatorze','quinze','seize');
  Dizaine: Array[2..8] of string=('vingt','trente','quarante','cinquante',
                                 'soixante','','quatre-vingt');
  Coefs:Array[0..3] of string=('cent','mille','million','milliard');
var
  Temp: string;
  C,D,U: Byte;
  Coef: Byte;
  I: Word;
  Neg: boolean;
begin
  if N = 0 then
  begin
    Result := ' Zéro';
    Exit;
  end;
  Result := '';
  Neg := N <0;
  if Neg then N := -N;
  Coef := 0;
  Repeat
    U := N mod 10; N := N div 10; {Récupère unité et dizaine}
    D := N mod 10; N := N div 10; {Récupère dizaine}
    if D in [1,7,9] then
    begin
      Dec(D);
      Inc(U, 10);
    end;
    Temp := '';
    if D > 1 then
    begin
      Temp := ' ' + Dizaine[D];
      if (D < 8) and ((U = 1) or (U = 11)) then
        Temp := Temp + ' et';
    end;
    if U > 16 then
    begin
      Temp := Temp + ' ' + Unite[10];
      Dec(U,10);
    end;
    if U > 0 then Temp := Temp + ' ' + Unite[U];
    if (Result = '') and (D = 8) and (U = 0) then Result := 's';
    Result := Temp + Result;
    C := N mod 10; N := N div 10; {Récupère centaine}
    if C > 0 then
    begin
      Temp := '';
      if C > 1 then Temp := ' ' + Unite[C] + Temp;
      Temp := Temp + ' ' + Coefs[0];
      if (Result = '') and (C > 1) then Result := 's';
      Result := Temp + Result;
    end;
    if N > 0 then
    begin
      Inc(Coef);
      I := N mod 1000;
      if (I > 1) and (Coef > 1) then Result := 's' + Result;
      if I > 0 then Result := ' ' + Coefs[Coef] + Result;
      if (I= 1) and (Coef = 1) then Dec(N);
    end;
  until N = 0;
  if Neg then Result := 'Moins' + Result
  else
  Result[2] := UpCase (Result[2]);
end;

Dom


Re : Conversion de nombre en litteraux le 23/08/2007 12:30:22

dominique.stock
Si tu as traduis le code ci-dessus en TSQL , cela m'interresse et je pense ne pas être le seul ...

Dom


Classé sous : nombre, conversion, litteraux

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS