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 :

Affichage de résultats [WD24]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Affichage de résultats
    Bonjour,

    Débutant

    J'ai une Table alimenté par une requête FullText qui fonctionne bien.
    je souhaiterais par programmation que mes références DEV0001 à DEV000X de ma table requête affichent les résultats de la rubrique quantité enregistré dans un autre fichier qui lui aussi a les même références.

    Pour DEV0001 ma COL_Quantité de ma table requête affiche le résultat de mon fichier Quantité qui pour DEV0001 à pour dans la rubrique Qté le résultat correspondant.

    Ceci pour toutes mes lignes de ma table. Car si j'ajoute à ma requête cette rubrique de mon fichier Quantité ma condition FullText est inopérante.

    J'ai essayé en regardant du coté de HLIT et de POURTOUT mais je n'y arrive pas.

    J'espère avoir été clair même si c'est mal formulé

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Résumons :
    Tu as un MLD qui ressemble à ça :
    Nom : MLD_Produit.png
Affichages : 300
Taille : 8,9 Ko
    Où PK_Produit prend les valeurs DEVXXXX
    Une requête (REQ_Produit) qui ressemble à ça :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
            Produit.NDX_NomProduit AS NomProduit,	
    	Produit.Prix AS Prix,	
    FROM Produit
    et qui alimente un champ table (TABLE_PRODUIT) et tu voudrais en plus faire apparaître QtéProduit.
    Il suffit d'ajouter un clause WHERE à REQ_Produit
    Ce qui donne :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
    	Produit.NDX_NomProduit AS NomProduit,	
    	Produit.Prix AS Prix,	
    	AutreDonnées.QtéProduit AS QtéProduit
    FROM 
    	Produit,	
    	AutreDonnées
    WHERE 
    	Produit.PK_Produit = AutreDonnées.FK_Produit
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour?

    Je viens juste de voir le message j'ai du mal paramétré les notifications
    Mon MLD ressemble à ça :
    Nom : 2020-03-30_16h00_25.png
Affichages : 300
Taille : 25,1 Ko

    Ma table est alimenté par ma requête FullTxt suivante:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT 
      FProduits.IDFProduits AS IDFProduits,  
      FProduits.Référence AS Référence,  
      FProduits.CodeBarre AS CodeBarre,  
      FProduits.NomTypeProduit AS NomTypeProduit,  
      FProduits.NomFamillesProduits AS NomFamillesProduits,  
      FProduits.NomProduit AS NomProduit,  
      FProduits.Valeur AS Valeur,  
      FProduits.Photo AS Photo,  
    FROM 
      FProduits
    WHERE 
      MATCH(FProduits.NomTypeProduit, FProduits.NomFamillesProduits, FProduits.NomProduit, FProduits.Valeur) AGAINST({ParamIndex_FullText}) > 0
    ORDER BY 
      Référence ASC

    Si je change mon paramètre fulltext ou si je fait une jointure FProduits et FStock et que le produit n'est pas le stock ma requête n'affiche pas les enregistrements sans stock.
    D'où le fait de vouloir passer par du code du style je lit tous les enregistrements de mon fichier FProduits et si ma référence de ce fichier et dans le fichier stock j'affiche le résultat et il s'affiche quand même les produits qui ne sont pas dans le stock.

    Merci de votre aide.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2017
    Messages : 327
    Points : 788
    Points
    788
    Par défaut
    Tu veux un truc comme ça?
    J'ai pas mis toutes les rubriques c'est juste pour le test mais j'obtiens dans la requête une colonne de quantité en plus, à 0 si la référence n'existe pas dans le fichier des stocks (le DECODE gère ce cas sinon forcément ça vaut NULL, mais en affichage je présume que tu veux un joli zéro)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT 
      FProduits.IDFProduits AS IDFProduits,  
      FProduits.Référence AS Référence,  
      FProduits.CodeBarre AS CodeBarre,  
      FProduits.NomTypeProduit AS NomTypeProduit,  
      FProduits.NomFamillesProduits AS NomFamillesProduits,  
      FProduits.NomProduit AS NomProduit,  
      FProduits.Valeur AS Valeur,
      DECODE(Fstock.QteEnStock,NULL,0,Fstock.QteEnStock) as QteEnStock
    FROM 
      FProduits
    left JOIN Fstock on FStock.Référence = FProduits.Référence
    WHERE 
      MATCH(FProduits.NomTypeProduit, FProduits.NomFamillesProduits, FProduits.NomProduit, FProduits.Valeur) AGAINST({ParamIndex_FullText}) > 0
    ORDER BY 
      Référence ASC

  5. #5
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je ne veux pas forcément un joli 0.
    Je me demande pourquoi vouloir toucher à la requête.
    Ne peut-on pas passer par exemple à l'initialisation de la table lire tout les référence du fichier produit et lorsque une correspondance référence est trouvée dans le fichier stock la quantité s'affiche dans la colonne de ma table et s'il n'y a aucune correspondance rien ne s'affiche.
    J'ai en plus une erreur sur la fonction DECODE qui n'est pas reconnue.

    Merci pour l'aide.

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par iznogood84 Voir le message
    Je me demande pourquoi vouloir toucher à la requête.
    Tout simplement parce qu'une requête est nettement plus rapide (surtout dans un langage interprété).
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  7. #7
    Membre éclairé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2017
    Messages : 327
    Points : 788
    Points
    788
    Par défaut
    Pour DECODE je m'en sers sur du HFSQL donc ne voyant pas ton code je ne peux rien dire mais je suis certain qu'elle passe en tout cas en WD25 bien sur (la prise en charge de cette fonction dans les précédentes versions je ne la connais pas)
    Evidemment qu'en faisant un parcours programmé tu peux aboutir à ta solution: tu regardes chaque produit et tu vas voir si pour chacun d'eux un stock existe, et tu remplis ta table par programmation.
    Néanmoins, ça c'est un raisonnement itératif, de pur développeur, qui tombe à l'eau dans les cas suivants (je ne sais pas si tu es dedans):

    -ta base est locale: tu vas devoir faire une boucle pour parcourir le fichier et rechercher à chaque fois sur une colonne référence qui est une chaine (il faudrait que l'ID soit entier): ca va être long à mesure que la table grossit
    -ta base est réseau: faire une boucle sur du réseau en HFCS ou autre chose est suicidaire au niveau des perfs. Dès que la table fera quelques centaines de lignes, ton programme va mourir en aller-retour sur le réseau et tu diras "mais pourquoi c'est long?"

    Parcourir chaque ligne une à une est un raisonnement comme je le disais itératif, avec le requêtage ce n'est pas la bonne façon de faire, il faut adopter une approche ensembliste. Là tu récupères toute la table, mais si demain tu ne veux qu'une fraction de la table tu ajouteras des WHERE à ma requête et le résultat t'arriveras en quelques secondes.
    Avec une approche itérative tu peux faire comme tu veux, plus le nombre d'enregistrements grossit, et plus tu perds en perfs car tu fais des aller retour réseau, pour faire sur le poste un filtrage qui doit être fait par la base.

    Ne cherches pas à faire le boulot d'une base de données, si elle peut faire le job, laisses là faire. C'est mon conseil.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci de vos réponses.
    Je vais repartir sur vos conseils (requête).
    Je reviendrais signaler si j'arrive ou pas.

    Merci beaucoup.

  9. #9
    Membre éclairé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2017
    Messages : 327
    Points : 788
    Points
    788
    Par défaut
    Ca marche.
    Si tu veux, tu peux simuler ce que je racontes: en quelques lignes de codes tu peux faire un random et remplir tes tables de centaines, milliers, millions de valeurs et ensuite importer cette base sur un serveur HF puis tester.
    Pour que ce soit représentatif ton serveur HF devrait être sur une machine distante et ainsi tu pourras constater les temps de réponse.

  10. #10
    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
    Avec la configuration proposée par Kunnskap, l'écart va être colossal.

    Très grossièrement, on peut dire que chaque appel à la base de donnée coûte une unité de temps pour l'appel et la prise en considération de ta demande, plus éventuellement une unité de temps pour faire le job proprement dit. Très très grossièrement, j'avais prévenu.

    Avec une requête qui traite 1 million d'enregistrements, et avec cette estimation grossière, il faudra 2 unités de temps.
    Alors qu'avec une boucle, il faudra 1 million d'unités de temps.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonsoir,

    Mon application est mono_poste et HFSQL Classic

    C'est bon j'ai appliqué vos conseilles refait ma requête directement en sql et tout est bon!

    Merci à tous pour vos conseils et solutions .

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

Discussions similaires

  1. [MySQL] Affichage 1 résultat / 1 tableau
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 01/05/2006, 19h22
  2. [MySQL] affichage du résultat d'une requete dans une page
    Par blackbird1 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2006, 14h07
  3. [MySQL] Affichage des résultats d'un requête
    Par wiwi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/02/2006, 11h25
  4. Affichage des résultats d'un moteur de recherche
    Par poah dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2005, 14h31
  5. Affichage du résultat
    Par thomas_strass dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2005, 11h30

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