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 :

Recherche multi-critères HF


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Points : 10
    Points
    10
    Par défaut Recherche multi-critères HF
    Bonjour,

    Je souhaite savoir quelle est la meilleure méthode ou les avantages / inconvénients des différentes méthodes de recherche multi-critères.

    Exemple :

    J'ai un fichier de données avec des rubriques (produit, référence, pays, désignation,...)

    J'ai un fichier texte avec un listing qui va me servir à mettre à jour le fichier de données. Pour cela, je dois rechercher l’existence d'un enregistrement avec le même produit, la même référence et un pays différent de "FRANCE". Si je le trouve, je modifie la désignation, etc. Si je ne le trouve pas, j'ajoute cet enregistrement.

    Avec une clé composée et le HlitRecherchepremier, je ne vois pas comment prendre en compte le critère "pays <> FRANCE"

    Avec le Hfiltre c'est possible, mais est-ce une bonne idée de faire un hfiltre pour chaque ligne du fichier texte ?

    Voilà, j'aimerai avoir votre avis et votre expérience.

    Merci.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    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 053
    Points : 9 392
    Points
    9 392
    Par défaut
    La meilleure solution... je crois que cette notion est subjective.
    A priori, pour une ligne donnée, tu peux trouver plusieurs enregistrements correspondants.
    Peut-être que toi,tu sais qu'il n'y en a qu'un, mais l'analyse autorise forcément plusieurs enregistrements. Ceci pour dire juste qu'il ne va pas y avoir une solution magique qui renvoie la ligne cherché.
    Je passerais par une clé composée Produit + Référence, ou produit + référence + pays.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Hfiltre ( monfichier, cle_composee,   hconstruitvalcle( monfichier, cle_Composee, produit, reference, hvalmin) , hconstruitvalcle( monfichier, cle_Composee, produit, reference, hvalmax) )
    hlitpremier ( monfichier)
    tantque pas hendehors ( monfichier)
      si monfichier.pays <> "FRANCE" alors  
          traitement()
          sortir
      fin
      hlitsuivant(monfichier)
    fin
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 525
    Points
    2 525
    Par défaut
    Il suffit de tester si Pays="FRANCE" ou Pays<>"FRANCE" (selon)
    pour lance Modif/Création ou pas.
    Je ne vois pas la difficulté.
    Sauf à n'avoir rien compris à la question.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    Pour faire simple en VB j'avais l'habitude de faire MaTable/FichierdeDonnées.findfirst "produit='" & MonProduit & "' And reference='" & MaReference & "' And pays<>'FRANCE'"
    Retour vrai ou faux, Si vrai, on boucle sur les enregistrements.

    C'était simple, pratique et plutôt efficace.

    Je voulais savoir si on peut faire aussi simple en Windev ou s'il faut faire comme le dit @serendib avec une recherche et ensuite un contrôle supplémentaire pour le pays?

    Merci à vous pour votre aide.

  5. #5
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 525
    Points
    2 525
    Par défaut
    VB a des avantages... et des inconvénients.
    Windev aussi, ainsi va la vie.
    Ils ont surtout une philosophie différente. On s'y plie ou pas.

    Donc puisque tu as 2 avis (tbc92 t'avais proposé la même chose) convergents,
    ne pinailles pas sur des trucs aussi peu importants.
    Sauf si pour toi l'économie d'1 ligne de code, c'est vital de chez vital.
    Dans ce cas reviens vers VB.... et alors bon courage.

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    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 053
    Points : 9 392
    Points
    9 392
    Par défaut
    L'autre solution, c'est de passer par des requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select xxx from fichier where produit = xxx and réference = xxx and pays <> 'France 
    si pas HExecuteRequeteSql  ...  alors erreur ... 
    Hlitpremier...
    tant que pas hendehors...
       hlitsuivant ...
    fin
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    Merci à vous.

    Non pas de problème avec la philosophie Windev, juste des interrogations, car il existe souvent plusieurs façons de faire et le temps de traitement n'est pas le même. Alors je demande pour avoir l'avis de personnes plus expérimentés. Si je peux utiliser leur sagesse, c'est aussi bien. ;o)

    J'avais eu la même idée que tbc92 en voyant les requêtes, j'ai testé et c'est moins rapide. C'est bon à savoir.

    Encore merci.

Discussions similaires

  1. [MySQL] Recherche multi-critères ou un seul
    Par jack1234 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/12/2005, 08h56
  2. Recherche multi-critères
    Par PAUL87 dans le forum Access
    Réponses: 66
    Dernier message: 13/12/2005, 12h12
  3. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 19h33
  4. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h00
  5. Procédure stockée: recherche multi-critères
    Par biroule dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 01/09/2004, 16h02

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