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

WinDev Discussion :

comparaison deux tables et regroupement enregistrements


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut comparaison deux tables et regroupement enregistrements
    Salut a tous
    j'ai deux table table A et table B trier sur le numéro d'immatriculation et je veux les comparer et mettre les résultats dans une autre table C
    si un ouvrier a meme les numero d’immatriculation je lui affecte le nombre de jour QUI DONNE LA TABLE B si le numero d'immatirculation se trouve pas dans la table A
    je l'ajoute comme un nouveau dans la table voici un bout de code mais c'est pas fonctionnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TableTrie(TABLE_EFI, "COL_T4")
    TableTrie(TABLE_DAMANCOM, "COL_T4", Nom de la colonne N)
     
    POUR li_i=1 _A_ TableOccurrence(TABLE_EFI)
       SI TableCherche(TABLE_EFI,"col_T4",Vrai,1)=-1 ALORS
          TableAjoute(TABLE_COMPARE,TABLE_EFI[li_i])
       FIN
    FIN

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 258
    Points : 12 927
    Points
    12 927
    Par défaut
    Bonjour,
    La demande n'est pas très claire...
    "si un ouvrier a les mêmes numéros d’immatriculation" entre quoi et quoi ?
    La table A n'est pas concernée, car " si le numéro d'immatriculation se trouve pas dans la table A", ni la table C car "mettre les résultats dans une autre table C".
    Bref on ne sais pas ce qui doit être comparé avec quoi.
    De plus dans le code il y a des incohérences:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TableTrie(TABLE_EFI, "COL_T4")
    TableTrie(TABLE_DAMANCOM, "COL_T4", Nom de la colonne N)
    
    POUR li_i=1 _A_ TableOccurrence(TABLE_EFI)
       SI TableCherche(TABLE_EFI,"col_T4",Vrai,1)=-1 ALORS
          TableAjoute(TABLE_COMPARE,TABLE_EFI[li_i])
       FIN
    FIN
    Le parcours se fait sur TABLE_EFI, ainsi que la recherche. La table TABLE_DAMANCOM est triée, mais pas utilisée.

    Tatayo.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut
    j'ai reactualiser les codes mais c'est le meme probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TableTrie(TABLE_EFI, "COL_T4")
    TableTrie(TABLE_DAMANCOM, "COL_T4")
     
    POUR li_i=1 _A_ TableOccurrence(TABLE_EFI, Ligne/Colonne)
    	SI TableCherche(TABLE_EFI.COL_T4,TABLE_DAMANCOM.COL_T4,Vrai,1)=-1 ALORS
    		TableAjoute(TABLE_COMPARE,TABLE_EFI[li_i])
    	SINON
     
    	FIN
    FIN
    je veux chercher le nombre de jour pour une matricule qui existe dans table_efi
    a base de table_damancom , si il est trouve je le met dans la table_compare sinon je l'ajoute a une autre table

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 258
    Points : 12 927
    Points
    12 927
    Par défaut
    Ca ne peut pas marcher.
    1. Tu parcours la table TABLE_EFI.
    2. Pour chaque ligne de TABLE_EFI, tu cherches dans TABLE_EFI.col4 la valeur de TABLE_DAMANCOM.COL_T4
    3. Si elle n'est pas trouvée, tu l'ajoutes dans TABLE_COMPARE

    Alors je vois 4 problèmes:
    1. Tu ne compares que la ligne courante de TABLE_DAMANCOM
    2. Le parcours de TABLE_EFI ne sert à rien
    3. Ligne/Colonne n'est pas un paramètre valide de TableOccurrence
    4. L'indice li_i n'est pas utilisé dans la recherche...

    Quelque chose me dit que les paramètres de TableCherche sont inversés.

    Tatayo.

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut
    JE vous explique et remet moi le code sil vous plait
    j'ai deux table remplie par fichier texte ce cette maniere
    Table A

    Matricule |nom prenom |nbjrs
    100733487 KOUJANE HAFIDA 0
    101645392 RKHAOUI SALEK 0

    Table B

    Matricule |nom prenom |nbjrs
    100733487 KOUJANE HAFIDA 26
    101645392 RKHAOUI SALEK 26
    105252276 EL FANNANI RABIA 9

    je veux chercher une matricule de table A dans la table B si il le trouve il met dans la table C avec le nombre de jour de la table B sinon il le met dans la table D avec le nombre de jour dE la table B

    j'aimerais bien que je suis claire


    Merci

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 258
    Points : 12 927
    Points
    12 927
    Par défaut
    C'est bien clair, et ça confirme ce que je disais sur le code.
    En fait il faut faire ainsi (en gros)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pour toute ligne de table1
    <div style="margin-left:40px">si tablecherche(table1.colx,table2.coly) = -1 alors
    <div style="margin-left:40px">tableajoute(table3,table1.colz)</div>fin</div>fin
    Tatayo

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut
    colx colz coly c'est la colonne matricule ou ???
    j'ai fais un test avec la colonne matricule et ça marche pas

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 258
    Points : 12 927
    Points
    12 927
    Par défaut
    Citation Envoyé par moradsoft Voir le message
    colx colz coly c'est la colonne matricule ou ???
    colx, coly... sont les colonnes que tu veux utiliser dans les différentes tables. Il faut les remplacer par les vrais noms de colonne.

    Citation Envoyé par moradsoft Voir le message
    j'ai fais un test avec la colonne matricule et ça marche pas
    Mais encore ? Que donne une exécution pas à pas ?

    D'ailleurs je viens de voir une incohérence dans la demande:
    je veux chercher une matricule de table A dans la table B si il le trouve il met dans la table C avec le nombre de jour de la table B sinon il le met dans la table D avec le nombre de jour de la table B
    Quelle ligne prendre dans la table B, si aucune ligne n'est trouvée dans la table B ?

    Tatayo.

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut
    par exemple la matricule 100733487 il a 0 jours dans la table A et 26 dans la table B alors je veux comparer toutes la matricule de la table A avec la table b
    et leS mettre dans la table c , si une matricule ou des matricule n'existe pas dans la table A je le mets dans la table D
    merci

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut
    je galere j'ai essayer pas mal de code ça marche pas merci de m'aider

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 258
    Points : 12 927
    Points
    12 927
    Par défaut
    Comme indiqué précédemment, "ça marche pas", ça ne veut rien dire.
    Et sans voir le code "qui marche pas", comment dire ce qui ne va pas ?

    Bref il faut être un peu plus précis et explicite.

    Tatayo.

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 87
    Points : 17
    Points
    17
    Par défaut
    bonjouer j'ai essayer une autre moyenne j'ai lier mes deux table au deux fichier
    et j'ai met ce code qui marche pas
    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
    i est un entier
    TableSelectMoins(TABLE_DAMANCOM,1, Indice N)
    POUR i = 1 _A_ TableOccurrence(TABLE_DAMANCOM, Ligne/Colonne)
    	SI TABLE_DAMANCOM[i][1] = TABLE_EFI[TABLE_EFI][1] ALORS
    		TableSelectPlus(TABLE_DAMANCOM,i, Indice N)
    	FIN
    FIN
     
     
    POUR i = 1 _A_ TableOccurrence(TABLE_DAMANCOM, Ligne/Colonne)
    	SI TABLE_DAMANCOM[i][1] = Vrai ALORS
    		TableAjouteLigne(TABLE_COMPARE1,TABLE_DAMANCOM[i][1],"", COL_T2, COL_T3, COL_T4, COL_T5, COL_T6, COL_T7, COL_T8, COL_T9, COL_T10 ,...)
    	SINON
    		TableAjouteLigne(TABLE_D,TABLE_DAMANCOM[i][1],"")
    	FIN
    FIN

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 258
    Points : 12 927
    Points
    12 927
    Par défaut
    "Ca marche pas"... Super message d'erreur...
    Je pense que le mieux que tu peux faire est de mettre un point d'arrêt sur la première ligne, puis de faire tourner le code ligne à ligne.
    Tu verras tout de suite ce qui ne va pas.

    Il ne faut pas simplement copier/coller du code de l'aide en ligne (indice N, Ligne/Colonne...), mais aussi lire l'aide en ligne et comprendre ce que fait le code.

    Je pense que tu n'as pas compris le fonctionnement de TableSelectPlus, TableOccurrence, TableCherche...

    Je pense également que tu devrais faire un tour dans le guide d'auto-formation.

    Tatayo.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/12/2014, 22h23
  2. comparaison deux table a une seul requete sql
    Par pen120 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/01/2012, 12h29
  3. Comparaison enregistrement de deux tables identiques
    Par geek21 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/07/2009, 18h08
  4. [débutant] Comment regrouper deux tables ?
    Par maysa dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/10/2004, 18h50
  5. regrouper deux tables
    Par Shabata dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2003, 15h02

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