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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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 éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    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

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

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    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.

  4. #4
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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 confirmé
    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 : 62
    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
    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 éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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

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