IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Classement des nombre Mal fait


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut Classement des nombre Mal fait
    Bonjour,
    j'ai fais une petite application qui permet de créer un matricule à chaque employé, mais après avoir crèe, au lieu d'avoir ce classement:

    0000001
    0000002
    .
    .
    .
    .
    9999999

    Le classement s'est fait de cette façon:
    1000000
    2000000
    ..

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
        s:string;
    begin
    i:=0000000;
    Table1.First;
      while not Table1.Eof do
       begin
              s:='i';
              Table1.Edit;
              Table1['MATRI'] := i ;
              Table1.post;
              Table1.Next;
              i:=i+1;
       end;
    i:=i+1;
    Table1.Next;
    end;
    Outils utilisés:
    Paradox7 et Delphi5
    Comment devrai je corriger ça?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je dirais que tu as deux possibilités pour résoudre ce problème :

    • soit tu gère le matricule en tant que champ chaîne de caractère et c'est toi qui rajoute les chiffres à la main devant le nombre pour former un matricule complet.
    • soit tu continue à avoir un matricule en tant que champ entier (pense à utiliser l'auto-inc éventuellement) et c'est au niveau de l'affichage que tu appliques un formatage pour rajouter les 0 devant.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Bonjour,
    [*]soit tu continue à avoir un matricule en tant que champ entier (pense à utiliser l'auto-inc éventuellement) et c'est au niveau de l'affichage que tu appliques un formatage pour rajouter les 0 devant.[/list]
    Merci pour la réponse!
    comment je fais le formatage pour rajouter les 0 devant?
    J'ai essayé d'initialiser les variables avec le nombre de zéro nécéssaire (i:=0000000) et au moment de rajouter je rajoute avec le nombre de zéro qu'il faut i:=i+0000001;
    Mais c'est faux car ça ne change rien.
    Peux tu m'expliquer un peu plus ?
    Merci...

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    A partir du moment où tu veux rajouter des 0 devant, tu ne dois plus travailler avec un champ entier mais un champ texte. En effet d'un point de vue mathématique 0000001 et 1 c'est pareil, et bien pour le PC également c'est pareil. Et comme le PC est pragmatique les 0 devant, ça lui sert à rien donc il les vire.

    Donc pour gérer la chose tu dois incorporer tes 0 et le nombre dans une chaîne, grossièrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s := '00000' + IntToStr( i );
    Je te conseilles de te documenter sur la fonction Format et ses possibilités, en écrivant par exemple :

    (non-testé)
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    La fonction Format attend un array, et surtout ne pas oublier le point (.) dans le format ce qui fait toute la différence:
    @+ Claudius

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Merci Cl@udius.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    c'est toujour pas résolu pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
        s:string;
    begin
    i:=0;
    Table1.First;
      while not Table1.Eof do
       begin
              s := Format('%.7d', i);
              s:='i';
              Table1.Edit;
              Table1['MATRI'] := i ;
              Table1.post;
              Table1.Next;
              i:=i+1;
       end;
    i:=i+1;
    Table1.Next;
    end;
    Erreur: type incompatible 'array' et 'integer'

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Cette erreur vient de ce que Format attend un tableau en 2° paramètre. Voir ma remarque plus haut.

    Par contre je ne saisi pas très bien ton code, je verrais quelque chose comme ceci qui réattribue un code à chaque enregistrement en partant de 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    var
      i: Integer;
    begin
      i := 1;
      with Table1 do
      begin
        First;
        while not Eof do
        begin
          Edit;
          FieldByName('MATRI').AsString := Format('%.7d', [i]);
          Post;
          Next;
          Inc(i);
        end;
      end;
    end;
    @+ Claudius

  9. #9
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    salut
    voila ce code j'espere que tu trouvera ton desire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    if table 1.eof then
    edit1.text:='00001'
    else
    begin
    cp:=strtoint(table1.fieldvalues['code']);
    cp:=cp+1;
    if cp<10 then
    edit1.text:='0000'+inttostr(cp)
    else
    if cp<100 then
    edit1.text:='000'+inttostr(cp)
    else
    if cp<1000 then
    edit1.text:='00'+inttostr(cp)
    else
    if cp<10000 then
    edit1.text:='0'+inttostr(cp)
    else
    edit1.text:=inttostr(cp);
    end;
     
    a+

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Ah d'accord je vois plus clair
    effectivement ton code est plus net et plus lisible
    Merci pour la réponse Cl@udius

  11. #11
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci kroma23 ça y est c'est réglé!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sum avec des nombres avec virgule
    Par Bruno2000 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/09/2004, 15h01
  2. Formatage des nombres à l'affichage
    Par nbutin dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 13/07/2004, 10h54
  3. Cripter avec des nombres premiers
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/04/2004, 19h10
  4. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24
  5. Réponses: 3
    Dernier message: 08/09/2003, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo