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 :

Hlitrecherche avec une "parametré/procédure"


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut Hlitrecherche avec une "parametré/procédure"
    Bonjour,
    Est-ce qu’on sait faire quelque chose du genre :
    Hlitrecherche(fichier,procédure(fichier.rubrique),valeurrecherchée) ?

    J’ai dans le fichier une rubrique avec des nr de série qui peuvent avoir des leading zero’s.
    La valeur recherchée n’en n’a jamais et je dois ‘absolument’ faire une recherche sur le nr de série et non pas sur une rubrique autre ou une clé quelconque.

    Merci d’avance !

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    procédure(fichier.rubrique) est censé représenter le <nom de la rubrique>.
    Ne faudrait-il pas recourir à l'indirection ?

    Concernant la recherche,
    Soit le format de la rubrique est constant, càd chaîne de même longueur commençant par des zéros quand le n° de série est plus court : il suffit de compléter la chaîne ValeurRecherchée par des zéros à gauche. (voir ici)
    Soit le format est irrégulier et je suppose qu'il est exclu de normaliser le numéro de série en le préfixant par des z&éros. Dans ce cas, il faudrait créer un index sur la partie significative du numéro de série.

    Je ne vois rien d'autre.

    Hemgé

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Bonjour et déjà merci !

    Pourrais-tu 'élaborer' un peu plus l'indérection ?
    Comment devrais-je procéder dans mon cas :

    - la rubrique n'est pas constante en longueur
    - il est exclu de normaliser le numéro de série en le préfixant par des zéros

    il faudrait créer un index sur la partie significative du numéro de série ?

    Pour donner un exemple : la rubrique contiendrais 0001234567 ou 1234567 ou A12345 ou ...
    le valeur qui sera recherché ne contiendra jamais les 0 ; donc 1234567 ou A12345

    Bien à toi

    ----

    En lissant les indirections, je constate que je me suis mal exprimé :
    Hlitrecherche(fichier, rubrique, valeurrecherchée )
    La rubrique restera toujours la même !
    Sauf que les valeurs dans cette rubrique peuvent être variable : donc 00012345, 12345, A1234567, 00A1234
    La valeurrecherchée , elle, sera toujours 12345 ou A1234567 ou A12345.
    Donc il faudrai un match ‘partiel’ entre les deux, sachant que 00012345 = 12345 ou 12345=12345….

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Tout d'abord, comme vous voulez effectuer une "recherche à l'identique", il vaudrait mieux utiliser HlitRecherchePremier.
    HLitRecherche convient plutôt aux recherches génériques.

    A lire votre projet de code, j'ai supposé que vous ne connaissiez pas le nom de la rubrique sur laquelle le HLitRecherche doit s'effectuer et que vous souhaitiez utiliser une procédure pour trouver / construire ce nom en fonction du contexte.

    Dans ce cas, vous devez passez par l'indirection, en utilisant les accolades autour du résultat de votre procédure.

    Dans ce cas, le code devait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HLitrecherchePremier(fichier, {procédure(fichier.rubrique)},valeurrecherchée)
    Si vous le connaissez - par ex, Fichier.NoDeSérie, alors on retombe sur l'instruction classique et pas besoin d'accolades
    <Résultat> = HLitRecherchePremier(<Nom du fichier>, <Nom de la rubrique> , <Valeur recherchée> [, <Options>])
    Soit
    <Résultat> = HLitRecherchePremier(Fichier, Fichier.NoDeSérie, <Valeur recherchée>)
    créer un index sur la partie significative du numéro de série :
    Le plus simple est d'ajouter une rubrique 'Fichier.CleNoDeSérie' de type chaîne à votre fichier et d'en faire une clé (a priori) unique.
    Pour chaque enregistrement, il faudra prendre la valeur de Fichier.NoDeSérie, en enlever les leading zeros et affecter le résultat à Fichier.CléNoDeSérie.

    Ensuite, les recherches seront effectuées comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Résultat> = HLitRecherchePremier(Fichier, Fichier.CléNoDeSérie , <Valeur recherchée>)
    Voilà, encore un peu de code à pondre ...
    Bon travail

    Hemgé

Discussions similaires

  1. [AC-2007] VBA Probleme avec une requete parametré
    Par volsan dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/10/2014, 06h17
  2. Probleme avec une requete parametrée
    Par sadjia dans le forum WinDev
    Réponses: 1
    Dernier message: 26/07/2007, 18h13

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