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 :

Alimenter un champ libellé par une requete


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Alimenter un champ libellé par une requete
    Bonjour à tous,

    Je suis nouveau ici, j'aurai besoin d'éclairage.
    J'ai commencé à me faire une petite application sous WD17 pour gérer mes interventions, j'ai un fichier client et un fichier intervention.
    Sur la page d'accueil de mon appli, j'ai créé un champ libellé qui devra s'actualiser à chaque lancement de l'appli et m'afficher le revenu globale.
    Ce revenu devra donc être calculé à partir (des revenus touchés sur chaque intervention) - (la somme des prix unitaires des composants changés).
    Je n'arrive pas à créer de requête pour faire cela.

    Quelqu'un aurait une solution ?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Vous disposez de deux fichiers. Quel est le format de ces fichiers (Excel, texte ou autre ) ?
    Si vous disposez d'un fichier Excel, dans l'aide vous avez des fonctions qui permettent de manipuler ces fichiers, si vous disposez de fichiers texte, vous avez des fonctions type fOuvre(), fLitligne(),extraitChaîne() dont vous disposez aussi les informations permettant de manipuler ces fichiers.
    Dans les autres cas, plusieurs pistes sont possibles, mais il sera nécessaire d'éclaircir ce point.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre aide,

    Il s'agit de fichiers de données que j'ai créé avec Windev.



    Je suppose donc qu'il me manque juste une petite requête ..
    Images attachées Images attachées  

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Ce sont donc 2 tables en hyperfile je suppose.
    Il manque une relation entre la table client et intervention, je suppose que le champ client de la table intervention est une clé étrangère qui correspond à IDclient dans la table client. J'aurai aussi séparé le champ NomPrénom dans la table client en 2 champs Nom et Prénom.
    Il est possible de réaliser une requête pour réaliser ce que vous recherchez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select sum(Revenu-PrixUnitaire) from Intervention
    ce qui fournira le bénéfice réalisé global.
    Si l'on souhaite faire la même chose pour un client donné on ajoute la clause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where Client = '" + variable_id_client_WINDEV + "'"
    Comme il est nécessaire de passer une variable, la solution et de former une variable chaine tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    requete_revenu est une chaine = "Select sum(Revenu-PrixUnitaire) from Intervention"
    requete_revenu_client est une chaine = requete_revenu
    quand la variable client ou une combo est renseignée on peut compléter cette variable requete_revenu_client comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete_revenu_client = requete_revenu_client + " where Client = '" + variable_id_client_WINDEV + "'"

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup, j'essaye ça dès ce soir. Oui je sais pour le champ Nom-Prénom mais lorsque j’intégrais à la page d'ajout d'intervention un combo "client", il me remplissait juste le nom ou le prénom et je voulais les deux. En gros, un combo avec une double affectation aux champs "nom" et "prénom" de la table client..
    Et pour le lien entre les deux tables, je voulais faire CA au début mais lorsque j'ajoutais un enregistrement, une erreur m'indiquait qu'il y avait un problème d'intégrité.

  6. #6
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Citation Envoyé par bouillaudmartin Voir le message
    Merci beaucoup, j'essaye ça dès ce soir. Oui je sais pour le champ Nom-Prénom mais lorsque j’intégrais à la page d'ajout d'intervention un combo "client", il me remplissait juste le nom ou le prénom et je voulais les deux. En gros, un combo avec une double affectation aux champs "nom" et "prénom" de la table client..
    Et pour le lien entre les deux tables, je voulais faire CA au début mais lorsque j'ajoutais un enregistrement, une erreur m'indiquait qu'il y avait un problème d'intégrité.
    A te lire je pressens que tu fais la liaison entre tes fichiers ainsi : client.NOMPrenom = Intervention.Client

    Sans doute que tu t'en sors mais ce n'est pas une bonne pratique.
    Tu n'est pas à l'abri que plusieurs client porte le même Nom Prénom.
    T'as déjà eu le problème avec le nom, c'est pour ça que tu l'a couplé avec le prénom. Mais tu n'est pas à l'abri... et c'est problématique...

    Pour qu'il n'y ai aucune ambiguïté il faut gérer la liaison avec l'ID du fichier parent.

    Normalement la liaison devrait être : client.IDClient = intervention.IDClient

    Regarde ce tutoriel qui explique comment modéliser une base de donnée
    http://cyril-gruau.developpez.com/merise/

    Pour la combo tu peux faire afficher dans la table de sélection plusieurs colonnes. Par exemple le nom et le prénom (2 rubriques différentes).
    Et choisir de mémoriser l'IDClient. Qui ensuite peut te servir de paramètre dans une requête...

    Pour le problème d'intégrité, il devait survenir par ce que la liaison entre client et intervention devait définie comme obligatoire et tu essayais d'ajouter une intervention sans IDclient ou un IDClient inexistant dans le fichier client...
    La solution :
    - Dans le 1er cas définir que la liaison n'est pas obligatoire, une intervention peut ne pas avoir de client en relation (si ça correspond à ton analyse)
    - Dans le 2ème cas ajouter le client dans le fichier client avant d'ajouter une intervention...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci pour tout c'est extraordinaire de recevoir une aide aussi précise et complète. Je testerai tout ça ce soir.

    Et autre question, si je veux rajouter une table "composants" pour les composants changé lors d'une intervention, avec le prix et le libellé c'est possible ? ou c'est mieux de le faire directement dans la table intervention ?

  8. #8
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Dans la mesure où pour une intervention tu peux avoir plusieurs composants il te faut séparer les fichiers.

    Dans l'image de l'analyse que tu nous a transmis je ne vois pas de flèche matérialisant la liaison entre client et intervention. Je me dis que peut être tu n'as pas encore vu comment les faire.

    Regarde l'aide de windev:
    http://doc.pcsoft.fr/fr-FR/?2011008
    http://doc.pcsoft.fr/fr-FR/?2011001
    http://doc.pcsoft.fr/fr-FR/?2011014

    Bon courage...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,


    J'ai donc procédé à la réécriture de mes fichiers de données comme ci-joint.
    Pensez-vous que cela est correct ?

    Et deuxième question, comment puis-je procéder pour afficher le nom du contact et du composant à la place de l'ID ?
    Images attachées Images attachées   

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonsoir,
    Il y a du mieux, mais il y a des erreurs.
    Quand on modélise, il est important de dissocier les entités et de les attacher à une association qui décrit comment elles le sont; pour nommer les entités par convention on utilise un nom commun en titre, et pour les associer un verbe en titre. Du coup les entités Client et Intervention doivent avoir une association : on pourrait appeler cette association Demander ou Commander, je suppose que le client sollicite cette intervention.
    Dans le même esprit la table composant_intervention est une association entre 2 tables donc devrait être renommée

    Quelques questions à se poser pour définir les cardinalités :
    - Est-il possible qu'un jour plusieurs clients demandent la même intervention ?
    - Est-il possible qu'un jour une intervention n'ai pas de client ?
    - Est-il possible qu'un jour qu'une intervention n'ai pas de composant ?
    - Est-il possible qu'un jour qu'un client ne commande qu'un composant sans intervention ?
    - Est-il possible qu'une intervention ne soit pas commandée (pas payée; exemple intervention suite à défaillance sous garantie d'une pièce)?
    - Est-il possible qu'un composant ne soit pas facturé (cf : voir exemple précédent) ?
    .....

    Pour aller plus loin, les composants sont rattachés à un fournisseur, à un fabricant et l'association qui en résulte n'est-elle pas susceptible de répondre à certaines interrogation à terme (exemple rechercher un volume de composants achetés à un fournisseur pour négocier avec un autre); en se posant ces questions en phase conceptuelle, on peut éventuellement modéliser en amont, des besoins à terme.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Dans la fenêtre le client est un décimal, je ne suis pas sur que ce soit ce que l'on souhaite obtenir. Pour remplacer l'ID_Client par le nom du client, il faut faire une requete avec jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select champ1, champ2, champ3, nom from table1, table2 where table1.id_client = table2.id_client and autres critères de sélection
    Après il existe d'autres type de jointures, qui reposent sur les inclusions, exclusions etc ... enfin, les solutions pour obtenir ce que l'on souhaite, sont presque illimitées, mais dans le cas présent une jointure naturelle semble suffisante.

  12. #12
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Citation Envoyé par bouillaudmartin Voir le message
    J'ai donc procédé à la réécriture de mes fichiers de données comme ci-joint.
    Pensez-vous que cela est correct ?
    Bravo, c'est nettement mieux...

    Les questionnements que te dit funcard sont typiquement les questions qu'il faut se poser quand on crée/modifie une analyse.

    Citation Envoyé par bouillaudmartin Voir le message
    Et deuxième question, comment puis-je procéder pour afficher le nom du contact et du composant à la place de l'ID ?
    La aussi funcard te donne la solution, il faut passer par une requête.

    Si tu n'es pas habitué aux requêtes je te conseille pour commencer d'utiliser l'éditeur de requête.
    Regarde dans l'aide tout y est expliqué.

    Fait des essais :
    - en prenant des rubrique de plusieurs fichiers
    - en mettant des conditions, des conditions paramétrées
    - en faisant des calculs
    - etc...

    Si tu cliques sur jointure dans le schéma de la requête une fenêtre s'ouvre permettant de définir les jointures d'inclusions / exclusions dont parle funcard.

    Fait des tests des requêtes pour voir concrètement le résultat et surtout à chaque fois regarde le code SQL généré, c'est très instructif. N'hésite pas à rechercher sur le net des tutoriels de SQL pour compléter ton information (windev prend quelques libertés/limites avec le SQL mais connaître le SQL est important quand on manipule des données)

    Allez c'est bien, tu avances dans la bonne direction...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Au niveau des requêtes pas de soucis, je suis en BTS Info et on a pas mal bosser sur MYSQL je maitrise à peu près les requête mais comment attribuer à un champ de ma table le nom au lieu de l'ID via une requete c'est ça la question

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par bouillaudmartin Voir le message
    Au niveau des requêtes pas de soucis, je suis en BTS Info et on a pas mal bosser sur MYSQL je maitrise à peu près les requête mais comment attribuer à un champ de ma table le nom au lieu de l'ID via une requete c'est ça la question
    Je commence à penser que c'est un travail plutot scolaire qui est demandé....

    Mais bon, si ça peut aider à comprendre je vais être plus précis, dans ce cas de figure, on pourrait procéder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select client.nom, intervention.remuneration, nom_table.autres_champs_souhaités
    from client,intervention 
    where client.id_client = intervention.id_client
    and client.id_client = 'filtrer un client précis'

  15. #15
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Citation Envoyé par bouillaudmartin Voir le message
    Au niveau des requêtes pas de soucis, je suis en BTS Info et on a pas mal bosser sur MYSQL je maitrise à peu près les requête mais comment attribuer à un champ de ma table le nom au lieu de l'ID via une requete c'est ça la question
    Il suffit de faire une jointure entre les 2 fichiers.

    As-tu essayé de faire quelque chose avec l'éditeur de requête ???

    Sinon funcard t'as donné la réponse...

    Pour en savoir plus sur les jointures
    http://sqlpro.developpez.com/cours/sqlaz/jointures/
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/01/2015, 19h17
  2. [WD19] Alimentation d'un combo par une requete
    Par askior dans le forum WinDev
    Réponses: 8
    Dernier message: 06/05/2014, 15h45
  3. Réponses: 2
    Dernier message: 19/11/2011, 13h21
  4. Réponses: 3
    Dernier message: 12/05/2009, 14h22
  5. Combo alimentée par une requete
    Par Franck.CHEVALIER dans le forum WebDev
    Réponses: 1
    Dernier message: 14/12/2007, 15h52

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