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

Bases de données Delphi Discussion :

Problème lors de l'exécution du code


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Problème lors de l'exécution du code
    Bonjour, Voilà je travaille sur une petite application qui a pour but de rechercher les enregistrements présents dans 2 tables à la fois, et de les insérer dans une troisième table: Le code du bouton rechercher donne:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    procedure TFAbsence.SearchButtonClick(Sender: TObject);
    Var
    trouv:boolean;
    i,j:integer; k:real; s:string[5];
     
    begin
    i:=0;
     
    DataModule3.personnel.First;
    DataModule5.TableEvent.First;
    DataModule5.TabTempPrs.First;
    DataModule5.TabTempAbs.First;
    trouv:=false;
     
    While not  DataModule3.personnel.Eof do
        begin
         trouv:=false;
         while not DataModule5.TableEvent.Eof do
             begin
               if DataModule3.personnel.FieldValues['PUCE']=DataModule5.TableEvent.FieldValues['PUCE'] then
                  begin
                   DataModule5.TabTempPrs.Append;
                   DataModule5.TabTempPrs.Edit;
                   DataModule5.TabTempPrs.FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
                   DataModule5.TabTempPrs.FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
                   DataModule5.TabTempPrs.FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
                   DataModule5.TabTempPrs.FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
                   DataModule5.TabTempPrs.FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
                   DataModule5.TabTempPrs.FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
                   DataModule5.TabTempPrs.FieldValues['EVENT']:=DataModule5.TableEvent.FieldValues['EVENT'];
                   DataModule5.TabTempPrs.FieldValues['DATE']:=DataModule5.TableEvent.FieldValues['DATE'];
                   DataModule5.TabTempPrs.FieldValues['HEURE']:=DataModule5.TableEvent.FieldValues['HEURE'];
     
                   DataModule5.TabTempPrs.Next;
                   trouv:=true;
                end; {end if}
     
                if (trouv=false) then
                 begin
                  i:=i+1;
                  DataModule5.TabTempAbs.Append;
                  DataModule5.TabTempAbs.Edit;
                  DataModule5.TabTempAbs.FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
                  DataModule5.TabTempAbs.FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
                  DataModule5.TabTempAbs.FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
                  DataModule5.TabTempAbs.FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
                  DataModule5.TabTempAbs.FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
                  DataModule5.TabTempAbs.FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
                  //DataModule5.TabTempAbs.FieldValues['DATE']:=
     
                  DataModule5.TabTempAbs.Next;
                 end; {end if }
     
             DataModule3.personnel.Next;
             DataModule5.TableEvent.First;
           end; {end While}
     
           end;
     
     
    end;
    N.B: Les variables seront utilisées ultérieurement pour calcler le nombre retrouvé des absents et présents

    A la compilation, il n'ya aucun problème, mais c'est à l'éxecution que la recherche n'en fini plus et réécri le meme energistrement à l'infini!!!???????

    Je n'ai pas pu déceler le Problème!!! En plus, quand je stoppe tout et que je revois ma table destination, je la trouve vide???!!

    Merci de m'aider

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Bonjour,

    Tu boucles sur While not DataModule3.personnel.Eof do

    et du remet a chaque fois sur le premier enregistrement avec ataModule5.TableEvent.First;

    Donc, boucle infini.

    Enfin, je pense
    Tu peux le faire, tu veux le faire tu vas le faire Bref, soyons positif

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Je viens de comprendre ce que tu voulais faire...

    Les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
             DataModule3.personnel.Next;
             DataModule5.TableEvent.First;
    Doivent descendre en dessous du end car tu la mis dans le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while not DataModule5.TableEvent.Eof do
    Ce qui provoque ta boucle infini.

    Ensuite tu rajoutes, où tu viens d'enlever les deux lignes, la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataModule5.TableEvent.Next;
    Je pense que ce sera ok.
    Tu peux le faire, tu veux le faire tu vas le faire Bref, soyons positif

  4. #4
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Toujours un pbm au niveau de l'exécution
    Voilà, j'ai suivi à la lettre ce que tu m'as conseillé de faire, mais c'est toujours le même problème,
    en fait, je retrouve le premier enregistrement de la table personnel dans la table destination mais il boucle à l'infini sur cette dernière, elle se fait inséré à l'infini sans pouvoir passer aux reste des enregistrements de la table jusqu'à ce que j'interrompe le programme!!!!

  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

    Montre-nous ton code tel que tu l'as modifié. Ce sera plus facile pour isoler l'erreur.

    @+ Claudius

  6. #6
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Voici le code modifié
    voilà, j'ai repris mon code ce cette façon:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    procedure TFAbsence.SearchButtonClick(Sender: TObject);
    Var
    trouv:boolean;
    i,j:integer; k:real; s:string[5];
     
    begin
    i:=0;
     
    DataModule3.personnel.First;
    DataModule5.TableEvent.First;
    DataModule5.TabTempPrs.First;
    DataModule5.TabTempAbs.First;
    trouv:=false;
     
    While not  DataModule3.personnel.Eof do
        begin
         trouv:=false;
         while not DataModule5.TableEvent.Eof do
             begin
               if DataModule3.personnel.FieldValues['PUCE']=DataModule5.TableEvent.FieldValues['PUCE'] then
                  begin
                   DataModule5.TabTempPrs.Append;
                   DataModule5.TabTempPrs.Edit;
                   DataModule5.TabTempPrs.FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
                   DataModule5.TabTempPrs.FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
                   DataModule5.TabTempPrs.FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
                   DataModule5.TabTempPrs.FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
                   DataModule5.TabTempPrs.FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
                   DataModule5.TabTempPrs.FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
                   DataModule5.TabTempPrs.FieldValues['EVENT']:=DataModule5.TableEvent.FieldValues['EVENT'];
                   DataModule5.TabTempPrs.FieldValues['DATE']:=DataModule5.TableEvent.FieldValues['DATE'];
                   DataModule5.TabTempPrs.FieldValues['HEURE']:=DataModule5.TableEvent.FieldValues['HEURE'];
     
                   DataModule5.TabTempPrs.Next;
                   trouv:=true;
                end; {end if}
     
                if (trouv=false) then
                 begin
                  i:=i+1;
                  DataModule5.TabTempAbs.Append;
                  DataModule5.TabTempAbs.Edit;
                  DataModule5.TabTempAbs.FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
                  DataModule5.TabTempAbs.FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
                  DataModule5.TabTempAbs.FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
                  DataModule5.TabTempAbs.FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
                  DataModule5.TabTempAbs.FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
                  DataModule5.TabTempAbs.FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
                  //DataModule5.TabTempAbs.FieldValues['DATE']:=
     
                  DataModule5.TabTempAbs.Next;
                 end; {end if }
     
               DataModule5.TableEvent.Next;
     
     
           end; {end While}
           DataModule3.personnel.Next;
           DataModule5.TableEvent.First;
           end;
     
     
    end;
    N.B: Quelques variables déclarées seront utilisées ultérieurement!!!

    Merci

  7. #7
    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
    Essaye avec ceci:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    procedure TFAbsence.SearchButtonClick(Sender: TObject);
    Var
      i,j:integer; k:real; s:string[5];
    begin
      i:=0;
     
      DataModule3.personnel.First;
      DataModule5.TableEvent.First;
     
      While not DataModule3.personnel.Eof do
      begin
        while not DataModule5.TableEvent.Eof do
        begin
          if DataModule3.personnel.FieldValues['PUCE']=DataModule5.TableEvent.FieldValues['PUCE'] then
          begin
            with DataModule5.TabTempPrs do
            begin
              Append;
              FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
              FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
              FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
              FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
              FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
              FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
              FieldValues['EVENT']:=DataModule5.TableEvent.FieldValues['EVENT'];
              FieldValues['DATE']:=DataModule5.TableEvent.FieldValues['DATE'];
              FieldValues['HEURE']:=DataModule5.TableEvent.FieldValues['HEURE'];
              Post;
            end;
          end
          else
          begin
            i:=i+1;
            with DataModule5.TabTempAbs do
            begin
              Append;
              FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
              FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
              FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
              FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
              FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
              FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
              //FieldValues['DATE']:=
              Post;
            end;
          end; {end if }
          DataModule5.TableEvent.Next;
        end; {end While}
        DataModule5.TableEvent.First;
        DataModule3.personnel.Next;
      end;
    end;
    Quelques remarques sur ton code:
    • Un Edit derrière un Append n'est pas nécessaire
    • De préférence faire un Post plutôt qu'un Next pour valider ton enregistrement
    • Ne pas hésiter à utiliser des blocs with...end pour faciliter la lecture du code
    • Ta variable Trouv n'est pas nécessaire puisque c'est le résultat du if initial


    Voilou
    @+ Claudius

  8. #8
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 46
    Points
    46
    Par défaut salut à tous !!
    si vous rencontrez des problèmes en exécution de votre programme
    sous delphi; essayer de l'éxecuter à partir de votre fichier *.exe compilé !;
    c'est une bonne méthode pour éviter les exceptions DELPHI! ansi que
    son blocage!

    je vous censeil de mèttre un point d'arrèt pour débugguer votre
    code!

    c'est une bonne méthode pour détecter les érreurs.
    a+

    Bonne continuation!
    N'oublie pas ,
    au lieu de faire ou
    et efin !! sinon, en reste toujours ..

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/06/2014, 20h06
  2. Réponses: 10
    Dernier message: 30/01/2007, 09h29
  3. [Procédure] problème lors de l'exécution
    Par pinocchio dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 31/10/2006, 14h23
  4. Problème lors de l'exécution d'un trigger
    Par Madoka dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 30/06/2006, 08h33
  5. Problème lors de l'exécution de mes programmes
    Par darkmalak01 dans le forum Langage
    Réponses: 7
    Dernier message: 27/09/2005, 18h35

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