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 :

Iidentification de la clé primaire d'un fichier [WD18]


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Iidentification de la clé primaire d'un fichier
    Bonjour,

    J'ai des données numériques dans différents fichiers de données. J'aimerais pouvoir détailler mémoriser le détail de n'importe quelle valeur numérique de n'importe quel fichier dans un seul et unique fichier dédié. Pour cela, j'ai besoin d'associer la valeur détaillée au différents détails la concernant.
    Je pensais utilisé une clé composée du nom du fichier qui contient la valeur détaillée + le n° d'enregistrement ou l'id automatique de l'enregistrement.
    Le souci c'est les id automatique ne sont pas tous identifiés de la même manière dans les différents fichier et que ne sais pas comment récupérer le n° d'enregistrement. Pouvez-vous m'aider svp ?

    Merci
    Les solutions les plus simples sont les plus efficaces

  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

    Je ne suis pas certain de saisir exactement ce que vous voulez faire, mais :

    - attention à la redondance d'information avec votre "seul et unique fichier dédié" parallèle aux fichiers de base ;
    - les clés étrangères et/ou les fichiers de liaison servent à relier des informations ;
    - une requête pourrait peut-être répondre à votre recherche.

    Hemgé

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Ce que je veux faire :

    Lié une valeur numérique d'un fichier quelconque (valeur source) à un semble de valeurs numériques d'un fichier commun. Ceci pour permettre de détailler la valeur source en utilisant toujours la même fenêtre, la même méthode et le même fichier.

    Mon souci est de lier la valeur source aux valeurs cibles par le biais d'une clé unique.

    Mon idée serait de créer cette clé par l'assemblage du nom de fichier source, nom du champ source et n° d'enregistrement.

    Nom de fichier et nom de champ, je sais faire.
    C'est le n° d'enregistrement qui me pose problème.
    Les solutions les plus simples sont les plus efficaces

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Bonsoir,

    Pour le numéro d'enregistrement HNumEnr devrait remplir cette fonction.
    Toutefois cette valeur ne peut pas servir de clé pour retrouver une ligne déterminée, ces numéros peuvent être recyclé lors de suppression de ligne, optimisation du fichier ... le moteur hyperfile peut en faire ce qu'il veut.

    Vous pouvez retrouver l'id automatique avec quelque instructions :
    1. HListeClé, pour ne pas tester le type de toutes les rubriques du fichier.
    2. Tester le type : ..type = hRubIdAuto / hRubIdAuto4


    Voila pour répondre à vos question, toutefois, si le but est d'afficher des données dans une fenêtre sans les archiver, le mieux serait de passer par une requête ! Un peu plus d'informations sur la structure des fichiers à assembler peut être ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Merci de ton Themayu
    J'étais sur la piste du HNumEnr mais je vois que je fais fausse route. Je vais tester ton autre idée.

    Par contre, j'ai un autre souci :
    Cette fonction de détail de valeur est facile à activer dans un champ de saisie indépendant (par un double clique par exemple).
    Le problème c'est dans les champ de table. Le double clique n’existant pas sur les champs, j'avais l'intention d'utiliser un menu contextuel dédié. Sauf que, avant de lancer la fonction, j'ai besoin de récupérer des paramètres (champ d'appel, clé attribuée au champ...). Je récupère ces information dans le code d'entrée dans la colonne. Mais si j'appelle le menu contextuel sans avoir activer le champ, mes paramètre ne sont pas initialiser et ma fonction ne marche pas du coup. Une idée ?
    Les solutions les plus simples sont les plus efficaces

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    J'avoue ne pas avoir tout suivi dans votre nouveau souci, par contre le double clic sur les tables est bien possible, à rajouter avec les "..." en bas de la fenêtre de code. Vous pouvez ensuite récupérer la ligne et la colonne avec TableInfoXY.

  7. #7
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Bonjour,
    j'ai relu plusieurs fois le message et j'avoue ne pas très bien comprendre moi non plus...

    Je tente une explication imaginaire :
    plusieurs fichiers HF (A,B,C) partagent une valeur clé (idCommun) avec un fichier HF (Z)
    Dans une table j'affiche Z.idCommun
    Il faudrait afficher A.nom, B.niveau, C.classement lors d'un clic ou d'un survol de Z.

    Dans ce cas le coup de la requête sur A,B,C,Z reliés par idCommun me semble correct.

    Il y a une solution générique qui ne passe pas par une analyse mais c'est un peu sportif alors avant de vous expliquer ça j'aurai aimé comprendre votre vraie demande.

    Bon dev

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Plus d'explications
    Oui, le double clique existe bien pour les tables mais il fonctionne sur la table dans sa globalité et non pas par colonne. Dans mon cas, je dois pouvoir identifier le champ d'appel, y compris sur une même ligne. Exemple : J'ai une colonne Largeur, une colonne Longueur et une colonne Surface. En l'état actuel de mon application, l'utilisateur saisi les valeurs souhaitées dans largeur et longueur et la surface se calcules automatiquement (ou l'inverse d'ailleurs). Je souhaite conserver cela mais tout en offrant la possibilité à l'utilisateur de détailler chacune des valeurs saisies si il le souhaite. Autrement dit, imaginons que la longueur soit en fait le résultat de additions de plusieurs valeurs, je veux qu'il puisse saisir le détail de ces différentes valeurs, qu'elles soient conservées en mémoire pour pouvoir les modifier si nécessaire et que le calcul de la valeur globale se fasse automatiquement. Voilà pour le résultat concret attendu.

    J'ai quelques choses comme une centaines de champs valeur pouvant nécessiter de pouvoir rentrer un détail. Je ne vais donc pas créer autant de fichiers qu'il y a de champs à détailler. Je veux donc mémoriser le détail de n'importe quelle valeur dans un seule et unique fichier de donnée en utilisant toujours la même méthode et la même fenêtre de saisie.

    Pour y parvenir, j'ai deux soucis :
    1 - Je dois créer un lien entre la valeur a détailler et les enregistrements du fichier détails qui y sont lié (il me faut une clé). Pour cela, j'ai presque trouvé la solution. J'utilise comme clé le nom du champ de liaison + l'id de l'enregistrement. Sur ce point, je devrais m'en sortir.
    2 - Après avoir saisi les détail dans la fenêtre appropriée, je dois récupérer la valeur totale pour l'appliquer au champ appelant. Pour les champs indépendants pas de souci. Double clique pour ouvrir la fenêtre de détail puis récupération de la valeur en sortie. Mais pour les données dans les tables, je ne peux pas faire un double clique parce que le double clique est géré sur la table dans sa globalité. Du coup, je ne connais pas le champ appelant. Je pensais utiliser le menu contextuel mais pour cela, j'ai besoin de récupérer les informations sur le champ appelant et la clé avant d'ouvrir le menu. J'ai placé du code dans l'entrée de colonne mais cela ne fonctionne pas si le clique droit est utilisé avant l'entrée dans la colonne (l'entrée dans le colonne = un clique gauche dans le champ).
    Mon problème c'est donc de trouver un moyen pour ouvrir ma fenêtre de saisie de détail tout en ayant les élément me permettant de lier les détail au champ appelant et d'appliquer la valeur globale finale au champ appelant.

    Est-ce plus clair ?
    En tout cas, merci de votre aide.
    Les solutions les plus simples sont les plus efficaces

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Pas de solutions pour moi svp ?
    Je galère et je ne trouve rien d'efficace.
    Les solutions les plus simples sont les plus efficaces

  10. #10
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Points : 608
    Points
    608
    Par défaut
    Ta demande n'est pas très claire, mais s'il s'agit de récupérer le nom de la rubrique clé primaire dans chaque fichier, il n'y a pas 36 solutions :
    - soit tu fait une procédure qui liste les rubriques d'un fichier, avec leurs propriétés, et renvoie le nom de celle qui est une clé unique (avec ..TypeClé, de tête) (cela suppose que seules tes clés primaires sont uniques. Sinon tu peux aussi regarder si elles sont en ID Auto en plus)
    - soit tu stocke "en dur" (dans la BDD ou dans le code) le nom de la clé primaire de chaque fichier.

    Personnellement, j'utilise la 2ème méthode.

    Cdlt, Arnaud.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Merci Arnaud,
    Dsl, j'essaye d'être clair pourtant.

    Pour ce qui est de la clé, j'ai trouvé la solution.

    Mon souci c'est maintenant simplement d'ouvrir la fenêtre qui permet saisir le détail de la valeur numérique. Comme je le disais, au moment où j'appelle cette fenêtre, je dois pouvoir identifier le champ et le fichier par la même d'appel.

    Pour les champs isolé, aucun soucis.
    Le problème c'est dans les tables.
    On oublie le double clique puisqu'il ne fonctionne que sur la table dans sa globalité. Je pensais utiliser le menu contextuel mais mon problème c'est que si il est utilisé avant l'entrée dans le champ, je ne parviens pas à obtenir les infos utiles (nom du champ et id de l'enregistrement).

    Merci de ton aide
    Les solutions les plus simples sont les plus efficaces

  12. #12
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Bonsoir,

    Encore une fois il est tout à fait possible de récupérer l'indice de la ligne, de la colonne et même le nom de la colonne suite à un double clic sur une table :

    Exemple tirée de l'aide en ligne (lien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Déclaration des variables
    MaLigne est un entier
    MaColonne est une chaîne
     
    // Récupération des indices de la cellule en cours de survol
    MaLigne = TableInfoXY(TABLE_Table1, tiNumLigne, SourisPosX(), SourisPosY())
    MaColonne = TableInfoXY(TABLE_Table1, tiNomColonne, SourisPosX(), SourisPosY())
    Le nom du fichier parcouru peut être récupérer avec ..FichierParcouru sur la table.

    Concernant l'id, tout dépend de la construction de votre table, une capture d'écran nous permettrait de mieux visualiser votre problème.

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci Themayu, je vais étudier cela.
    Les solutions les plus simples sont les plus efficaces

  14. #14
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Pour la colonne, c'est ok, j'arrive à récupérer les infos nécessaires.

    Mai pour la ligne...
    Une fois que j'ai le numéro de ligne, comment récupérer la clé primaire de l'enregistrement qui est placée disons dans la colonne "COl_Id" ?

    J'ai essayé COL_Id[Maligne] mais cela ne fonctionne pas. C'est toujours la valeur de la ligne 1 qui est affichée.

    Merci
    Les solutions les plus simples sont les plus efficaces

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Encore merci themayu, j'ai réussi grâce à toi ;-)

    Cool
    Les solutions les plus simples sont les plus efficaces

  16. #16
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Bonjour,

    vous pourriez stocker la saisie sous la forme d'une chaine
    et de calculer le résultat pour l'afficher
    j'ai trouvé ça sur un vieux post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    maChaineCalc est une chaîne = "123+23+55+76"
    Res est une chaîne
    source est une chaîne = "v_res est un reel = "+maChaineCalc+RC+" renvoyer v_res"
    Res = Compile("XXYYZZ", source)
    SI (Res = "") ALORS Trace(ExécuteTraitement("XXYYZZ",trtProcédure))

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/10/2012, 10h28
  2. remettre à 1 la clé primaire d'un fichier
    Par aldama dans le forum HyperFileSQL
    Réponses: 4
    Dernier message: 03/01/2012, 14h00
  3. [Doctrine] Fichier yaml avec clé primaire multi-colonnes
    Par butters dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/07/2010, 14h23
  4. Clé primaire d'un fichier csv
    Par tomlaurent dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 07/11/2008, 17h01
  5. clés primaire et fichier XML
    Par oclone dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 29/10/2008, 11h23

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