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 3 tableaux [WD20]


Sujet :

WinDev

  1. #21
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Hier, tu as écris cet algorithme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pour i de 1 jusqu'a m// m représentante le dernier enregistrement (ligne)de la table 2
       pour i de 1 jusqu'a n// n représentante le dernier enregistrement (ligne)de la table 1
          si(table2. revue==table1.jouranl titale)alors
             table1.predateur ="oui"
          sinon
             table1.predateur ="non"
          fsi
       fpr
    fpr
    C'est correct. Enfin, je suppose que c'est conforme à ton besoin.

    Ca se traduit en Windev ainsi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Pour tout table2
       Pour tout table1
          si table2.revue = table1.JournaleTitle alors
             table1.predateur ="Oui"
             hmodifie(table1)
          sinon
              table1.predateur ="Non"
             hmodifie(table1)
          fin
       fin
    fin
    En fait, je suis à peu près certain que l'algorithme que tu as écrit n'est pas correct.

    Si on regarde bien cet algorithme, il fait quoi ?
    Il lit la première ligne de table2 et il fait des modifications pour toutes les ligens de table1
    Puis il lit la 2ème ligne de table2, et il écrase tout ce qu'il vient de faire juste avant.
    Et à nouveau, pour la 3ème ligne de table2, il écrase à nouveau tout ce qui a été fait juste avant.

    Tu le vois, traduire l'algorithme en Wlangage, c'est facile.
    Mais il faut que l'algorithme soit correct.
    Et ça, c'est TOI uniquement qui sais ce que ton programme doit faire.

    Et, toujours même remarque, il faut donner des noms significatifs à tes fichiers, et surtout pas des noms comme table, table1 et table2.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  2. #22
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    je refais toutes l’autoformation si c'est bon ok sinon je vais redonner mes problème ou je me plante et merci beaucoup pour vos conseil

    Citation Envoyé par tbc92 Voir le message
    comme tu a dis c'était un problème de nom de table merci beaucoup pour ton conseil (car j'ai exécuté mon programme et sa marche j'ai vu l'affichage dans la l'attribut "predacteur" avec oui/non
    mon algo je pense qu'il est juste
    en premier il vas parcourir table 2 et après table 1 et si pour vérifie la valeur
    une dernier question est que il y a une fonction qui accélérer ton programme car j'ai 116*653 enregistrement ?

  3. #23
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Ici, le code que j'ai posté peut être remplacé par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    hlit( table2, hnbenr(table2) )  // Lecture de la dernière ligne uniquement , inutile de lire toutes les autres.
     Pour tout table1
          si table2.revue = table1.JournaleTitle alors
             table1.predateur ="Oui"
             hmodifie(table1)
          sinon
              table1.predateur ="Non"
             hmodifie(table1)
          fin
       fin
    Ca va aller 113 fois plus vite.

    Mais je le redis, je suis convaincu que ça ne correspond pas à ce que tu veux faire.

    Il y a très certainement des moyens d'aller plus vite, mais comme je ne vois pas vraiment ce que tu veux faire, impossible de te donner plus d'informations.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #24
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    oui c'est vrai
    moi je voulais de table 1 qu'elle vérifie 2 champs en même temps avec les 2 autres tables
    table 1 vérifie son attribut 1 avec attribut de table 2 et aussi elle vérifie un autre attribut avec table 3(mais sa ne marche pas )
    et en meme temps elle vas mettre dans sa colonne la valeur retourné lors de la comparaison

  5. #25
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Contenu initial de table0 :
    XX1 Y21 Z41
    XX2 Y62 Z32
    XX3 V53 Z53
    XX4 Y04 Z64

    Contenu initial de table1 :
    XX1 T31
    XX2 U52

    Contenu initial de table0 :
    XX1 T91
    XX4 W74

    Tu veux quoi au final dans chacune des tables ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #26
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut

    Contenu initial de table0 :
    XX1 Y21 Z41
    XX2 Y62 Z32
    XX3 V53 Z53
    XX4 Y04 Z64

    Contenu initial de table1 :
    XX1 T31
    XX2 U52

    Contenu initial de table2 :
    XX1 T91
    XX4 W74

    si on prend Y21(table 0) = T31(table 1) et Y62 (table 0) = T91(table 2) par exemple donc dans table 0 on aura une autre colonne comme ce ci:
    donc elle faux qu'elle cherche en commune les valeurs égale "le même mot" dans toutes les lignes adéquates des les colonnes des 3 tables (décris en haut )

    Contenu initial de table0 :
    XX1 Y21 Z41 non
    XX2 Y62 Z32 non
    XX3 V53 Z53 non
    XX4 Y04 Z64 non
    et dsl pour le dérangement

  7. #27
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Je ne comprends toujours rien, j'abandonne.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #28
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    moi aussi abandonne je vais recherche une autre méthode pour le résoudre j'ai trop rester avec se problème dsl pour le dérangement

  9. #29
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    en fin de compte j'ai changé et j'ai fait une autre méthode c'est de les fusionner et traiter se fichier à part merci beaucoup pour votre aide votre patiente

  10. #30
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 174
    Points : 287
    Points
    287
    Par défaut
    Bonjour;

    Créer une requête de sélection sur le fichier "Table_editeur"
    Nom : 01.jpg
Affichages : 103
Taille : 133,1 Ko

    Créer une condition sur la rubrique "Editeurs"
    Nom : 02.jpg
Affichages : 107
Taille : 68,6 Ko

    Choisir "au Paramètre"
    Nom : 03.jpg
Affichages : 107
Taille : 150,7 Ko

    Valider
    Nom : 04.jpg
Affichages : 100
Taille : 143,4 Ko


    Voilà le Code SQL
    Nom : 05.jpg
Affichages : 103
Taille : 27,5 Ko

    Voilà la requête
    Nom : Editeur.jpg
Affichages : 108
Taille : 30,1 Ko


    Faire la même chose pour le fichier "Table_Revue"
    Nom : Revue.jpg
Affichages : 102
Taille : 29,8 Ko


    Créer une fenêtre avec un Bouton
    Nom : 00.jpg
Affichages : 97
Taille : 16,8 Ko


    Le code du Bouton est commenté

    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
    HLitPremier(Table_cat,ID)	// se positionner sur le 1er enregistrement du fichier
    TANTQUE PAS HEnDehors(Table_cat)	// tant qu'on a pas atteint la fin du fichier
     
    	Table_cat.predateur = Faux			// intialisation (predateur est de type boolean)
    	SI SansEspace(Table_cat.Journal_Title) <> "" ALORS	// on cherche pas les valeurs non renseignées
    		REQ_Recherche_Revue.Param1 = Table_cat.Journal_Title // initialisation du paramètre
    		HExécuteRequête(REQ_Recherche_Revue,hRequêteDéfaut) // exécution de la requête
    		SI HNbEnr(REQ_Recherche_Revue) > 0 ALORS // on a trouvé au moins un enregistrement
    			Table_cat.predateur = Vrai	// mise à jour de la rubrique
    		FIN
    	FIN
     
    	SI Table_cat.predateur = Faux ALORS // on rentre si et seulement si on l'a pas trouvé au dessus
    		SI SansEspace(Table_cat.Publisher) <> "" ALORS
    			REQ_Recherche_Editeur.Param1 = Table_cat.Publisher
    			HExécuteRequête(REQ_Recherche_Editeur, hRequêteDéfaut)
    			SI HNbEnr(REQ_Recherche_Editeur) > 0 ALORS
    				Table_cat.predateur = Vrai
    			FIN
    		FIN
    	FIN
     
    	HModifie(Table_cat)	// enregistrement dans le fichier
     
    	HLitSuivant(Table_cat,ID)	// passage à l'enregistrement suivant
     
    FIN
     
    Info("Fin de traitement")
    Voilà le Fichier avant exécution
    Nom : 06.jpg
Affichages : 102
Taille : 215,1 Ko

    et après exécution, voir la rubrique "predateur"
    Nom : 07.jpg
Affichages : 104
Taille : 214,8 Ko

    Remarques :
    - J'ai testé avec des fichiers "HFSQL", je ne sais comment ça va se comporter avec "MS Access"
    - Remplacer les espaces des noms de rubriques avec des "_" tiret du 8

    Bon Dev

  11. #31
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Si j'ai bien tout compris, prédateur est à vrai si la revue possède un titre et un éditeur dans les tables du même nom.
    L'idéal est de passer par un UPDATE du style :
    Code SQL : 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
    UPDATE 
    	Revue
    SET
    	Prédateur = 1
    WHERE 
    	Revue.NDX_TitreRevue IN 
    		(SELECT
    			Titre.NDX_Titre
    		FROM
    			Titre)
    	AND
    	Revue.NDX_EditeurRevue IN
    		(SELECT
    			Editeur.NDX_NomEditeur
    		FROM
    			Editeur)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  12. #32
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par fouedusa Voir le message
    Bonsoir merci pour aide c'est cela que je cherchais , j'ai essayé vote code et vos etape une apres l'autre mais dans la button quand je click il vas directement vers le fin du traitement donc il ne vas pas l'appliquer le tant que

  13. #33
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 174
    Points : 287
    Points
    287
    Par défaut
    Re,

    j'aimerai bien savoir pourquoi ça fonctionne pas chez toi ?

    on va adapter la requête de Voroltinquo et remplacer le AND par un OU.

    Voilà le code SQL de la requête

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    UPDATE
    	Table_cat
    SET
    	Table_cat.predateur = 1
    WHERE
    	Table_cat.Journal_Title IN 
    		(SELECT DISTINCT (Table_Revue.Les_Revues)
    			FROM Table_Revue)
    	OR
    	Table_cat.Publisher IN 
    		( SELECT DISTINCT (Table_editeur.Editeurs)
    			FROM Table_editeur)

    Bon Dev.

  14. #34
    Membre du Club
    Femme Profil pro
    étudiant
    Inscrit en
    Février 2018
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    et pour l'interagir avec le button ? est que le refaire avec se 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    HLitPremier(Table_cat,ID)	// se positionner sur le 1er enregistrement du fichier
    TANTQUE PAS HEnDehors(Table_cat)	// tant qu'on a pas atteint la fin du fichier
     
    	Table_cat.predateur = Faux			// intialisation (predateur est de type boolean)
    	SI SansEspace(Table_cat.Journal_Title) <> "" ALORS	// on cherche pas les valeurs non renseignées
    		REQ_Recherche_Revue.Param1 = Table_cat.Journal_Title // initialisation du paramètre
    		HExécuteRequête(REQ_Recherche_Revue,hRequêteDéfaut) // exécution de la requête
    		SI HNbEnr(REQ_Recherche_Revue) > 0 ALORS // on a trouvé au moins un enregistrement
    			Table_cat.predateur = Vrai	// mise à jour de la rubrique
    		FIN
    	FIN
     
    	SI Table_cat.predateur = Faux ALORS // on rentre si et seulement si on l'a pas trouvé au dessus
    		SI SansEspace(Table_cat.Publisher) <> "" ALORS
    			REQ_Recherche_Editeur.Param1 = Table_cat.Publisher
    			HExécuteRequête(REQ_Recherche_Editeur, hRequêteDéfaut)
    			SI HNbEnr(REQ_Recherche_Editeur) > 0 ALORS
    				Table_cat.predateur = Vrai
    			FIN
    		FIN
    	FIN
     
    	HModifie(Table_cat)	// enregistrement dans le fichier
     
    	HLitSuivant(Table_cat,ID)	// passage à l'enregistrement suivant
     
    FIN
     
    Info("Fin de traitement")

  15. #35
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 174
    Points : 287
    Points
    287
    Par défaut
    Re,
    Non, juste une seule ligne pour exécuter la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HExécuteRequête(REQ_Voroltinquo)
    Info("Traitement ok")
    Bon Dev

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [debutant]comparaison de table
    Par manshoon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/06/2006, 16h49
  2. Comparaison entre tables
    Par Marmouz dans le forum Access
    Réponses: 3
    Dernier message: 13/04/2006, 15h21
  3. [SQL] vs [VBA] comparaison de tables et mise à jour
    Par borisa dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/02/2006, 10h15
  4. accélérer la comparaison de tables
    Par mick84m dans le forum SQL Procédural
    Réponses: 16
    Dernier message: 10/12/2005, 12h06
  5. comparaison de tables
    Par amelie15 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/04/2005, 10h37

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