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 sur clef primaire composée [WD22]


Sujet :

WinDev

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 751
    Points
    9 751
    Par défaut Recherche sur clef primaire composée
    Bonjour,

    Mon analyse est basée sur une base SQLite 3. Et, ça fonctionne plutôt pas mal.

    Mais, je rencontre un probleme. Sur une table, ma clef primaire est composée de 2 champs.
    Dans l'analyse, Windev a bien créé un champ Clef Composée qu'il a appele T_SQLite_Primary_Table_1 (Table est le nom de la table).

    Mais quand je veux faire une recherche sur cette clef, via HLitRecherche : HLitRecherche( "Table", "T_SQLite_Primary_Table_1", [np_Val1, np_Val2]), j'ai une erreur d'exécution comme quoi, il n'existe pas dans ma table de champ T_SQLite_Primay_Table_1 !

    Comment dois-je m'y prendre pour faire une recherche sur cette clef primaire ?

    Merci d'avance

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    A mon avis le plus simple est de passer par une requête SQL, en renseignant les deux colonnes.
    La "clé" créée par WinDev est inutilisable, car elle n'existe que dans WinDev.

    Tatayo.

  3. #3
    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
    Idem Tatayo, je suis partisan des fonctions SQL.

    Si tu veux utiliser les fonctions hlitrecherche, tu n'est pas obligé de mettre le nom de la colonne entre guillemet. Normalement , Windev va te proposer la liste des colonnes indexées, en se basant sur l'analyse. Donc pas de risque de faute de frappe. Et par aileurs, pour la valeur qu'on recherche, j'en étais resté à hconstruitValClé(), même si effectivement, j'avais vu cette nouvelle syntaxe.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    Hello,

    Simple interrogation, Est-ce que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HLitRecherche( "Table", "T_SQLite_Primary_Table_1", [np_Val1, np_Val2])
    est un copier/coller de ton code ou simplement une réécriture de celui-ci ?

    Car si tu as bien déclaré ta table dans l'analyse, il n'y a pas d'intérêt à utiliser les doubles quotes. Surtout qu'il y a un espace après T_SQLite_Primary_Table_1, et qu'en l'état WinDev va chercher une colonne/clé composé avec l'espace.

  5. #5
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 751
    Points
    9 751
    Par défaut
    Merci pour vos réponses.

    En effet, je pourrais régler le problème par une requête.

    @PapyCrouton, c'est une ré-écriture de mon code. En effet, ceci est dans une fenêtre que je peux réutiliser avec plusieurs tables de liens différentes.

    Je m'explique. J'ai une table qui contient des langues (Français, anglais, espagnol, ...)
    J'ai une table de formations, et un lien entre la table de formation et la table des langues qui me donne la liste des langues apprises au cours de la formation.
    J'ai aussi une table qui fait le lien entre les étudiants et les la table des langues pour les mêmes raisons.

    Je créé une fenêtre de sélection des langues. Cette fenêtre contient une table avec la langue et une colonne de type interrupteur. Dans l'affichage d'une ligne de la table, je voulais chercher dans une des deux tables (lien_Formation_Langues ou lien_Etudiant_Langues) passé en paramètre pour cocher ou non la ligne !

    Donc, ce n'est pas des valeurs entre guillemets que je passe à hlitrecherche, mais des variables chaines.

    Voilà pour l'explication. Je pense que je vais me tourner vers une requête.

    Merci de votre aide.

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  6. #6
    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
    Mais PapyCrouton a probablement soulevé le point critique : Dans ta chaîne, à la fin, tu as un espace. Et ça, si c'est bien ça qui s'exécute, ça suffit à expliquer ton problème.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    Ok je comprend mieux l'utilisation des doubles quotes.

    Si tu souhaites conserver cette manière de faire, tu as deux méthodes :
    - soit en utilisant l'indirection : HLitPremier("Table", {"T_SQLite_Primary_Table_1", indRubrique}, [cle_1, cle_2])
    - soit via la fonction Compile

    Maintenant, je te conseille grandement de passer par une requête SQL (alimentation de la table WinDev incluse), ce qui évitera d'avoir du code au niveau du traitement "affichage de la ligne de la table".

    Et dans ton cas, en fonction du paramètre d'appel de ta fenêtre, tu exécutes l'une ou l'autre requête d'alimentation de ta table WinDev.

  8. #8
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 751
    Points
    9 751
    Par défaut
    Merci à vous tous.

    C'était en effet une faute de frappe. Pas l'espace en fin, mais un caractère soulignement de trop. En passant par l'auto complétion, ça m'a donné la bonne syntaxe, et du coup ça fonctionne.

    Encore merci à vous.

    A+
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MEA]Comment représenter 1 clef primaire composée
    Par marman dans le forum Schéma
    Réponses: 7
    Dernier message: 29/01/2007, 15h35
  2. [Hibernate] Clef primaire composée
    Par mehdi_31 dans le forum Hibernate
    Réponses: 1
    Dernier message: 26/06/2006, 16h35
  3. Clef primaire composée
    Par 3xodius dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 15/06/2006, 11h44
  4. Réponses: 11
    Dernier message: 14/04/2006, 11h44
  5. Foreign key sur clé primaire composée
    Par mona dans le forum Oracle
    Réponses: 6
    Dernier message: 13/10/2005, 22h36

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