1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

INFO Bug non voulu sur les tables

Discussion dans 'Windev' créé par kabeda, Déc 24, 2019.

  1. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    176
    J'aime reçus:
    63
    Bonjour,
    Je n'ai pas trouvé de titre plus parlant, désolé.
    Pour une application, j'ai une table ordonnée avec un champ ordre. J'ai mis en place une petite procédure pour changer l'ordre à la demande entre deux enregistrements.

    Code (Text):

    pos, nTomp est entier

    pos=TableSelect(TABLE_LIEN_FACT)
    SI pos>1 ALORS
       nTomp=TABLE_LIEN_FACT.COL_Ordre[pos-1]
       TABLE_LIEN_FACT.COL_Ordre[pos-1]=TABLE_LIEN_FACT.COL_Ordre[pos]
       TABLE_LIEN_FACT.COL_Ordre[pos]=nTomp
       TableSelectPlus(TABLE_LIEN_FACT,pos-1)
       TableEnregistre(TABLE_LIEN_FACT)  
       TableSelectPlus(TABLE_LIEN_FACT,pos)
       TableEnregistre(TABLE_LIEN_FACT)  
       TableSelectPlus(TABLE_LIEN_FACT,pos-1)
    FIN
     
    Avec la WD18, ça fonctionne. Avec la WD24, à chaque changement sur la table, la procédure CWDTable prend le relais (c'est normale d'après la documentation) et rafraîchit la table. Du coup, ça ne fonctionne pas.

    J'ai pu solutionner en adoptant une méthode une peu à la dure en gérant moi-même les enregistrements.
    Code (Text):

    pos, Ordre1, nOrdre2, nId1, nId2 est entier
    sMareq est une chaîne
    sdMasource est une Source de Données

    pos=TableSelect(TABLE_LIEN_FACT)
    SI pos>1 ALORS
       Ordre1=TABLE_LIEN_FACT.COL_Ordre[pos-1]
       nOrdre2=TABLE_LIEN_FACT.COL_Ordre[pos]
       nId1 = TABLE_LIEN_FACT.COL_ID_LIEN_FACT[pos-1]
       nId2 = TABLE_LIEN_FACT.COL_ID_LIEN_FACT[pos]
       sMareq="UPDATE LIEN_FACT SET Ordre = "+Ordre1+"   WHERE LIEN_FACT.IDLIEN_FACT = "+nId2
       HExécuteRequêteSQL(sdMasource,hRequêteDéfaut,sMareq)
       sMareq="UPDATE LIEN_FACT SET Ordre = "+nOrdre2+"   WHERE LIEN_FACT.IDLIEN_FACT = "+nId1
       HExécuteRequêteSQL(sdMasource,hRequêteDéfaut,sMareq)
       TableAffiche(TABLE_LIEN_FACT,taCourantBandeau)
       TableSelectPlus(TABLE_LIEN_FACT,pos-1)
    FIN
     
    Pour info...
     
    Tags:
  2. channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Bonjour,

    Ce que tu voulais faire c'est permuter 2 lignes d'une table ? faire descendre ou monter une ligne ?


    Genre ? :


    [​IMG]

    si c'est bien le cas (d’après que j'ai compris)

    voici le code des 2 boutons Up,Down:


    Code (Windev):
    SI

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) = -1 ALORS
        RETOUR
    FIN
    SI

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) = 1 ALORS
        RETOUR
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS),

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) - 1 )

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS)
     
    Code (Windev):
    SI

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) = -1 ALORS
        RETOUR
    FIN
    SI

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) ALORS
        RETOUR
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS),

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS) + 1 )
     
    NB. Voir aussi la fonction :

    Code (Windev):

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS, ligneSélectionnée, tdSuivant, tdEchange)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_T_LIDEVIS,ligneSélectionnée,tdPrécédent,tdEchange)
    Bon dev.
     
    #2 channibal, Déc 24, 2019
    Dernière édition: Déc 24, 2019
    Gemini1961 apprécie ceci.
  3. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    176
    J'aime reçus:
    63
    Bonjour,
    Je ne sais pas pourquoi, j'ai mentionné WD24. En fait c'est la WD23.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , j'ai déjà lu la doc, mis le doigt desssus et j'avais cru avoir trouvé ma solution avec TableEchangeLigne et TableDéplaceLigne mais ça ne fonctionne pas avec les tables fichier (accès direct).
     
    Gemini1961 apprécie ceci.
  4. channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Juste par curiosité, pourquoi utiliser l’accès direct au fichier!?

    Je ne vois pas trop la différence à part pour les tables à plus de 100000 enregistrements!
     
  5. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    176
    J'aime reçus:
    63
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    merci de ta piste. Je vais fouiller de ce côté. Je crois que je vais m'orienter sur Champ Table fichier avec fichier chargé en mémoire.
     

Partager cette page

Chargement...