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 :

Parcours fichier avec condition - problème d'ordre des enregistrements affichés [WD18]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 85
    Points : 87
    Points
    87
    Par défaut Parcours fichier avec condition - problème d'ordre des enregistrements affichés
    J'ai un problème de parcours d'un fichier (remplissage d'une zone répétée par programmation). J'ai deux modes de remplissage, par défaut tous les enregistrements d'un fichier, ou en option avec sélection de la valeur d'un filtre (qui n'est pas la clé de parcours du fichier mais est définie comme clé multiple).

    Extrait de la doc en ligne de PC Soft:

    POUR TOUT <Fichier> AVEC "<1ère Condition>
    [ET/OU/PAS <2ème Condition>
    [ET/OU/PAS...<Nième Condition>]]" [<Sens>]
    ...
    SUR <Rubrique Clé>
    FIN


    Dans mon cas:

    SI COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée <> "" ALORS
    POUR TOUT INVESTOR
    AVEC InvestorGroup=COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée
    SUR InvestorName

    ==> retourne erreur: Clé de parcours interdite lorsque des bornes sont précisées.

    Question: comment filtrer et garder l'ordre de parcours normal sans avoir à créer une clé composée pour ce cas?

  2. #2
    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
    Perso pour ce type de chose je passe par une requête plutôt qu'un filtre

    Dans ton cas je fairais un requête avec une condition paramétrée
    InvestorGroup = Param_InvestorGroup

    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SI COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée <> "" ALORS
    	TaRequete.InvestorGroup = COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée
    SINON
    	TaRequete.InvestorGroup = NULL		/ prend tout comme s'il n'y avait pas de condition
    FIN
    HExécuteRequête(TaRequete)
     
    POUR TOUT TaRequete
    	TableAjouteLigne(TaTable,...,...,...)
    FIN

  3. #3
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR TOUT NomFichier AVEC "nomRub='xxxx' ET nomRub2='yy'" SUR " nomrubTri"
     
    FIN
    ou avec parametres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR TOUT NomFichier AVEC "nomRub='"+combo..valeurMemorise+"' ET nomRub2='yy'" SUR " nomrubTri"
     
    FIN
    !! attention aux cotes simples et doubles

    Bon dev

  4. #4
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par laurent30s Voir le message
    Perso pour ce type de chose je passe par une requête plutôt qu'un filtre

    Dans ton cas je fairais un requête avec une condition paramétrée
    InvestorGroup = Param_InvestorGroup

    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SI COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée <> "" ALORS
    	TaRequete.InvestorGroup = COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée
    SINON
    	TaRequete.InvestorGroup = NULL		/ prend tout comme s'il n'y avait pas de condition
    FIN
    HExécuteRequête(TaRequete)
     
    POUR TOUT TaRequete
    	TableAjouteLigne(TaTable,...,...,...)
    FIN


    Bon, j'applique cette solution (j'ai oublié de dire que c'est en WinDev Mobile mais je ne crois pas que cela fasse une grande différence). Voici le code:

    SI COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée <> "" ALORS

    REQ_INVESTOR_BY_GROUP.InvestorGroup = COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée
    SINON
    REQ_INVESTOR_BY_GROUP.InvestorGroup = Null
    FIN
    HExécuteRequête(REQ_INVESTOR_BY_GROUP)

    POUR TOUT REQ_INVESTOR_BY_GROUP
    nIndice=ZoneRépétéeAjouteLigne(ZR_INVESTORS, REQ_INVESTOR_BY_GROUP.InvestorCode, REQ_INVESTOR_BY_GROUP.InvestorName, Gauche(REQ_INVESTOR_BY_GROUP.InvestorName,1))
    ZR_INVESTORS[ZoneRépétéeOccurrence(ZR_INVESTORS)].InvestorName..PoliceTaille=6
    ZR_INVESTORS[ZoneRépétéeIndiceRupture(ZR_INVESTORS.RUPT_HautRupture1,nIndice)].LIB_Libellé = ZR_INVESTORS[nIndice].ATT_FIRST
    FIN

    Mais j'obtiens alors cette erreur (je précise que j'ai testé la requête et qu'elle fonctionne):

    Erreur à la ligne 11 du traitement Clic sur BTN_RELOAD.
    La rubrique HyperFileSQL 'REQ_INVESTOR_BY_GROUP.InvestorGroup' est inconnue.
    La source de données <REQ_INVESTOR_BY_GROUP> n'est pas initialisée.
    - S'il s'agit d'un fichier de données, le fichier n'a pas été trouvé dans l'analyse <C:\Mes Projets Mobile\Index_Ventures\Index_Ventures.wdd> ou n'a pas été décrit avec les fonctions HDéclare / HDéclareExterne.
    - S'il s'agit d'une requête ou d'une vue, l'exécution a peut-être échoué.
    Pour récupérer l'erreur correspondante, testez le résultat des fonctions HExécuteRequête / HExécuteRequêteSQL / HCréeVue.

  5. #5
    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
    Sous WinDev Mobile il y a plein de restrictions par rapport à Windev.
    Si en plus tu développes un appli Android c'est encore pire (on n'a pas encore tester sous IOS mais ça doit être du même acabit).

    Il faut sans arrêt chercher des contournements...

    A ce propos un message que j'ai fait passer hier sur le forum Windev Mobile concernant le dev pour android
    http://www.developpez.net/forums/d13...t/#post7445304

  6. #6
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    J'ai appliqué l'autre proposition et ça fonctionne ...

    POUR TOUT INVESTOR AVEC "InvestorGroup='"+COMBO_REQ_INVESTOR_GROUPS..ValeurMémorisée+"'" sur InvestorName

    Merci pour tout!

    En ce qui concerne Android, je rejoins la remarque de laurent30s. PC Soft doit vraiment mettre le turbo car la part de marché des appareils Android devient énorme comparé à iOS.

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

Discussions similaires

  1. [JAXB] Problème d'ordre des éléments avec JAXB
    Par blessed1213 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 07/04/2014, 12h43
  2. [WB14]Parcours de fichier avec condition et tri
    Par Nic550 dans le forum WebDev
    Réponses: 12
    Dernier message: 09/09/2009, 12h49
  3. renommage des lignes d'un fichier avec condition
    Par dofre114 dans le forum Linux
    Réponses: 2
    Dernier message: 13/08/2007, 16h24
  4. Problème d'ordre des points dans un Tchart
    Par pasqual dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2007, 12h04
  5. Réponses: 7
    Dernier message: 27/04/2006, 16h51

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