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 :

Régime pour code


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 109
    Par défaut Régime pour code
    Bonjour,

    Quelqu'un aurait il une idée pour alléger ce code

    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    // Supprimer toutes les lignes sélectionnées dans une table ENREG 1
    i1 est un entier
    NbSelection1 est un entier = TableSelectOccurrence(TABLE_EXPRESS_ENREGISTREMENT1)
    POUR i1 = NbSelection1 A 1 PAS -1
    	TableSupprime(TABLE_EXPRESS_ENREGISTREMENT1, TableSelect(TABLE_EXPRESS_ENREGISTREMENT1, i1))
    FIN		
    TableInsèreLigne(TABLE_EXPRESS_ENREGISTREMENT1, 1, "1")
    TableEnregistre(TABLE_EXPRESS_ENREGISTREMENT1)	
    // Supprimer toutes les lignes sélectionnées dans une table ENREG 2
    i2 est un entier
    NbSelection2 est un entier = TableSelectOccurrence(TABLE_EXPRESS_ENREGISTREMENT2)
    POUR i2 = NbSelection2 A 1 PAS -1
    	TableSupprime(TABLE_EXPRESS_ENREGISTREMENT2, TableSelect(TABLE_EXPRESS_ENREGISTREMENT2, i2))
    FIN		
    TableInsèreLigne(TABLE_EXPRESS_ENREGISTREMENT2, 1, "0")
    TableEnregistre(TABLE_EXPRESS_ENREGISTREMENT2)	
    // Supprimer toutes les lignes sélectionnées dans une table ENREG 3
    i3 est un entier
    NbSelection3 est un entier = TableSelectOccurrence(TABLE_EXPRESS_ENREGISTREMENT3)
    POUR i3 = NbSelection3 A 1 PAS -1
    	TableSupprime(TABLE_EXPRESS_ENREGISTREMENT3, TableSelect(TABLE_EXPRESS_ENREGISTREMENT3, i3))
    FIN		
    TableInsèreLigne(TABLE_EXPRESS_ENREGISTREMENT3, 1, "0")
    TableEnregistre(TABLE_EXPRESS_ENREGISTREMENT3)	
    // Supprimer toutes les lignes sélectionnées dans une table ENREG 4
    i4 est un entier
    NbSelection4 est un entier = TableSelectOccurrence(TABLE_EXPRESS_ENREGISTREMENT4)
    POUR i4 = NbSelection4 A 1 PAS -1
    	TableSupprime(TABLE_EXPRESS_ENREGISTREMENT4, TableSelect(TABLE_EXPRESS_ENREGISTREMENT4, i4))
    FIN		
    TableInsèreLigne(TABLE_EXPRESS_ENREGISTREMENT4, 1, "0")
    TableEnregistre(TABLE_EXPRESS_ENREGISTREMENT4)	
    // Supprimer toutes les lignes sélectionnées dans une table ENREG 5
    i5 est un entier
    NbSelection5 est un entier = TableSelectOccurrence(TABLE_EXPRESS_ENREGISTREMENT5)
    POUR i5 = NbSelection5 A 1 PAS -1
    	TableSupprime(TABLE_EXPRESS_ENREGISTREMENT5, TableSelect(TABLE_EXPRESS_ENREGISTREMENT5, i5))
    FIN		
    TableInsèreLigne(TABLE_EXPRESS_ENREGISTREMENT5, 1, "0")
    TableEnregistre(TABLE_EXPRESS_ENREGISTREMENT5)	
    // Supprimer toutes les lignes sélectionnées dans une table ENREG 6
    i6 est un entier
    NbSelection6 est un entier = TableSelectOccurrence(TABLE_EXPRESS_ENREGISTREMENT6)
    POUR i6 = NbSelection6 A 1 PAS -1
    	TableSupprime(TABLE_EXPRESS_ENREGISTREMENT6, TableSelect(TABLE_EXPRESS_ENREGISTREMENT6, i6))
    FIN		
    TableInsèreLigne(TABLE_EXPRESS_ENREGISTREMENT6, 1, "0")
    TableEnregistre(TABLE_EXPRESS_ENREGISTREMENT6)

  2. #2
    Membre Expert
    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
    Par défaut
    Bonsoir,

    Si j'ai bien lu, il s'agit de tables fichier, que vous videz pour y réécrire ensuite une ligne et l'enregistrer.

    1. Suppression de lignes dans une table (en général)
    Pour les tables fichier, attention aux répercussions sur le fichier.
    TableSupprime(MaTable,NoLigne)
    Si NoLigne (optionnel) n'est pas précisé, toutes les lignes sélectionnées sont supprimées.

    2. Suppression de toutes les lignes dans une table mémoire.
    TableSupprimeTout (MaTable) supprime toutes les lignes de la table.

    Vous pourriez également jouer avec les indirections pour faire une boucle de 1 à 6 et énumérer les tables, mais je suppose que les noms de table vont être plus significatifs.
    Sinon, le code serait encore plus compact puisque l'indirection serait également utilisée dans l'insertion et l'enregistrement.
    Je vous laisse explorer cela.

    Hemgé

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 440
    Par défaut
    Bonjour,
    TalbeSupprimeTout ne peut pas être utilisé ici, car seules les lignes sélectionnées sont supprimées.

    Les indirections peuvent tout à fait être utilisées, quitte à stocker dans une liste/pile les noms des tables.

    Tatayo.

  4. #4
    Membre Expert
    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
    Par défaut
    Bonjour tatayo,

    Citation Envoyé par tatayo Voir le message
    TalbeSupprimeTout ne peut pas être utilisé ici, car seules les lignes sélectionnées sont supprimées.
    Si TableSupprimeTout ne peut pas être utilisé ici c'est parce qu'on travaille avec des tables fichier et non des tables mémoire.
    Par contre, cette fonction ne tient pas compte des lignes sélectionnées ou pas. Comme son intitulé - TableSupprimeTout - l'indique, à la différence de TableSupprime, elle supprime toutes les lignes et elle n'attend d'ailleurs que le nom de la table comme paramètre.

    Hemgé

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 440
    Par défaut
    Je pense que je me suis mal exprimé (manque de café !).
    Dans le code présenté, seules les lignes sélectionnées doivent être supprimées.
    Je n'avais pas percuté sur le côté table mémoire/fichier, vu que je n'utilise que les premières (pas d'analyse, pas de fichier HF).

    Donc en fait on est d'accord: pas de TableSupprimeTout !

    Tatayo.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    Vous pourriez également déclarer un seul i et un seul NbSelection.... et en début de script c'est plus lisible.... sinon, plus radical, factorisez !

  7. #7
    Membre très actif
    Avatar de jdsetls
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2012
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2012
    Messages : 209
    Billets dans le blog
    1
    Par défaut Méthode inductive et indirections
    Bonjour,

    Comme cela a été dit clairement, les indirections simplifient grandement les codes, réduisant les blocs de n à 1.

    Ceci d'autant plus qu'on y aura pensé en phase de conception.

    Voici quelques principes si tu débutes :

    L'abstraction vise à simplifier en généralisant. Encore faut-il qu'elle puisse être perçue comme tel, sans donner le sentiment d'une économie de la pensée réalisée par une complexification du code.

    Les bases de la simplification sous Windev utilisent les mots clés, fonctions et principes suivants :
    • le mot clé MoiMême
    • les indirections
    • les procédures automatiques TimerSys, Timer, ThreadExecute
    • la fonction ChampEnCours
    • Les champs indicés
    • Les groupes
    • ExecuteTraitement
    • la compilation dynamique
    • le MCI
    • Les FAA ou actions Windows prédéfinies
    • Les briques de code
    • Les composants
    • La lecture attentive du mode d’emploi et de la rubrique Voir aussi…

    En espérant t'avoir aidée avec ces principes généraux,

    Bien cordialement,

    Jacques De Schryver

    nb : ¨Pense également à la puissance de ces principes conjugués, par exemple un champclone géré par des indirections. C'est là tout le génie de Windev.

Discussions similaires

  1. librairie GTK pour code::blocks
    Par teddy42 dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 25/10/2006, 19h47
  2. Conseil pour code de base
    Par Alpha31 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 21h12
  3. [VBA] Aide pour code
    Par Virgile59 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 14h16
  4. Calcul simple pour code couleur
    Par Boumeur dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/04/2005, 10h51
  5. Est ce que ça existe une api java pour code barre ?
    Par miloud dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 14/04/2005, 17h20

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